Juji Psychographic Insights API¶
"If you wish to persuade me, you must think my thoughts, feel my feelings and speak my words." —Cicero
When coming to reading one's mind or understanding one's thoughts, the closest approach perhaps is to learn about a person's unique psychographic characteristics, such as their personality traits, temperament,and psychological motivations.
Introduction¶
Traditionally, item-based, self-report approaches (e.g., personality tests) are used to discover one's psychographic characteristics. However, such approaches are subjective (self-reported) and prone to faking due to social desirability biases. Thus, finding a more natural, objective, and affordable approach to accurately measure individuals' unique psychographic characteristics at scale has become a quest for the holy grill in many industries, including marketing, talent management, healthcare, and education.
Building on our extensive experience of Computational Psychology, Juji has built the world's only evidence-based, most comprehensively validated psychographic inference engine. Developers can access the engine via the Juji Psychographic Insights API, analyzing a person's text, such as blogs, social media posts, chat text, and voice transcripts and inferring their unique psychographic characteristics, such as personality and psychological motivations.
Juji can automatically infer 100+ psychographic trait models, including fundamental personality trait models and composite psychographic models. Developers use one type of API to access all trait models.
Inferring Fundamental Personality Trait Models¶
Just like the periodical table in chemistry, which contains basic chemical elements of our physical world, human characteristics are made up of a set of fundmental personality traits, which can be used to uniquely describe a person's characteristics from three broad aspects: passions and interests (what they like to do), skills (what they are good at), and how they handle life's challenges (social-emotional intelligence).
Currently exposed via API, one can obtain computed trait scores of the Big 5 Personality Traits from text. The Big 5 personality model includes 35 trait models, is the most validated and most widely used personality trait model. Since numerous studies have demonstrated the power of Big 5 personality traits in impacting one's many important life outcomes, such as academic achievement, job attainment, marriage, and lifespan, developers can use Juji API to infer individuals' Big 5 personality traits at scale and use the inferred personality insights to build hyper-personalized applications in any domain or industry (e.g., match-making patients with doctors, assessing the fit of candidates and job roles, predicting entrepreneurs' likelihood of success, and recommending suitable financial products).
Inferring Composite Psychographic Characteristics Models¶
In addition to inferring fundamental personality traits, Juji enables the measuring of composite psychographic characteristics, such as Holland Codes, human soft skills, and moral characters. All such characteristics can also be calculated via the Juji Cognitive Core API.
API Definition¶
- Endpoint URL:
https://juji.ai/api/analyze
- Method: POST
- Max Size: 8MB
The current released API supports the Big 5 personality trait model with 35 traits (5 factors and each with 6 facets), and 5 composite psychographic models with additional 25 facets. Additional psychographic models are also available upon request.
The Basics¶
Both JWT and API Key autentication are supported. Account login is not required for API Key, which is recommended autentication method if your Juji Core API usage is independent from Juji Application.
Header Parameter | Example | Description | Type |
---|---|---|---|
Accept | "application/json" or "text/csv" | Specify the response type | string |
Content-Type | "application/json" or "text/csv" | Specify the input data type | string |
Authorization | "Bearer <token>" or "Basic <apikey:<apikey> encrypted>" | Specify for authentication | string |
Query Parameter | Example | Description | Type | default |
---|---|---|---|---|
version | YYYY-MM-DD e.g., 2020-01-01, 2021-12-01 | Specify Juji API version at a particular date, latest version starts on 2021-12-01. To use previous API version, please specify a date before 2021-12-01. Note: the previous API does not affect other parameters, see the section below for more details. | string | latest version |
lang | "en", "es", "fr" or "zh" | Specify language of the input data, non-English input will be translated to English for analysis | string | "en" |
big5_factors | true/false | Whether to include big5 factor results | boolean | TRUE |
big5_facets | true/false | Whether to include big5 facet results | boolean | FALSE |
holland_codes | true/false | Whether to include holland code results | boolean | FALSE |
shopper_dna | true/false | Whether to include shopper dna results | boolean | FALSE |
soft_skills | true/false | Whether to include soft skill results | boolean | FALSE |
moral_characters | true/false | Whether to include moral character results | boolean | FALSE |
big5_factors_x | true/false | Whether to include big5 factor explanation that's tailored to resulting percentile | boolean | FALSE |
big5_facets_x | true/false | Whether to include big5 facet explanation that's tailored to resulting percentile | boolean | FALSE |
big5_factors_x_general | true/false | Whether to include big5 factor general explanation | boolean | FALSE |
big5_facets_x_general | true/false | Whether to include big5 facet general explanation | boolean | FALSE |
holland_codes_x_general | true/false | Whether to include holland code general explanation | boolean | FALSE |
shopper_dna_x_general | true/false | Whether to include shopper dna general explanation | boolean | FALSE |
soft_skills_x_general | true/false | Whether to include soft skill result general explanation | boolean | FALSE |
moral_characters_x_general | true/false | Whether to include moral character general explanation | boolean | FALSE |
Request Data/Body¶
Data can be included in the request in JSON or CSV format.
Data in JSON format should be an array of objects that each object represent a person that is identified by "id" and has "text" for analysis. JSON input can be passed directly as the body of the request or through a file. Below is an example JSON data.
[
{
"id":"1",
"text":"sentence 1. sentence 2..."
},
{
"id":"2",
"text":"sentence 1. sentence 2..."
}
]
Data in CSV format requires each row to represent a person with the first column being the id and the second column being the text. The CSV file should have no header. Below is an example of same data in CSV format.
1, sentence 1. sentence 2...
2, sentence 1. sentence 2...
Response¶
Similarly, response in both JSON and CSV formats are supported.
Response in JSON format will have the following fields:
Key | Example | Description |
---|---|---|
trait_id | "big5_facets_imagination" | id of the trait, <category>_<name> |
name | "imagination" | name of the trait |
category | "big5_facets" | category of the trait |
percentile | 23.42 | percentile |
explanation | "low imagination" | explanation of the trait percentile in English |
general_explanation | "imagination is ..." | general explanation of the trait in English |
parent | "big5_factors_openness" | the trait_id of the parent of the trait if applicable |
{
"results":
[
{
"id": "1",
"personality":
{
"big5_factors_openness":
{
"trait_id": "big5_factors_openness",
"name": "Openness",
"category": "big5_factors",
"percentile": 70.12,
"explanation": "high openness",
"general_explanation": "openness is ...",
"code": "a_7100"
},
"big5_facets_imagination":
{
"trait_id": "big5_facets_imagination",
"name": "Imagination",
"category": "big5_facets",
"percentile": 34.56,
"explanation": "low imagination",
"general_explanation": "imagination is ...",
"parent": "big5_factors_openness",
"code": "a_7110"
},
...
}
},
{
"id": "2",
...
},
...
]
}
Response in CSV has a header that provides information to each column.
Example API calls¶
Raw JSON¶
curl --location --request POST 'http://localhost:8080/api/analyze?version=2021-12-10&big5_facets=true' \
--header 'Authorization: Bearer eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..wN4i7DMa_k0CDe74ABYDqw.d8sBK-7JIpj_Dh6nL8SgLrzQ_aOCWsy6tngCGZHwItpsJkIY7hBueQYasOFCpbQa.fg1PZD5hcH_OfuFV6KsnZg' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"id":"1",
"text":"When the bad times started there, in 38, he came to Spain, since he had both nationalities. "
},
{
"id":"2",
"text":"It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of light, it was the season of darkness, it was the spring of hope, it was the winter of despair."
}
]'
JSON File¶
curl --location --request POST 'http://localhost:8080/api/analyze?version=2021-12-10&big5_facets=true' \
--header 'Authorization: Bearer eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..wN4i7DMa_k0CDe74ABYDqw.d8sBK-7JIpj_Dh6nL8SgLrzQ_aOCWsy6tngCGZHwItpsJkIY7hBueQYasOFCpbQa.fg1PZD5hcH_OfuFV6KsnZg' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-binary '@juji.json'
CSV File¶
curl --location --request POST 'http://localhost:8080/api/analyze?version=2021-12-10' \
--header 'Authorization: Bearer eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..wN4i7DMa_k0CDe74ABYDqw.d8sBK-7JIpj_Dh6nL8SgLrzQ_aOCWsy6tngCGZHwItpsJkIY7hBueQYasOFCpbQa.fg1PZD5hcH_OfuFV6KsnZg' \
--header 'Accept: application/json' \
--header 'Content-Type: text/csv' \
--data-binary '@juji.csv'
API Key¶
curl --request POST 'https://juji.ai/api/analyze?version=2021-12-10&big5_facets=true&holland_codes=true&big5_factors_x=true&holland_codes_x_general=true&soft_skills=true&moral_characters=true&shopper_dna=true&moral_characters_x_general=true&big5_facets_x=true&big5_facets_x_general=true' \
--header 'Accept: application/json' \
-u 'apikey:<your-api-key>' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"id":"1",
"text":"It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of light, it was the season of darkness, it was the spring of hope, it was the winter of despair."
}
]'
Previous version¶
If you have used Juji Cognitive Core API prior to 2022, you may wish to migrate to the current version as our inference models have been updated and improved.
The previous version personality inference can be used by specifying the version parameter to any date before 2021-12-01. However, none of the other query parameters are supported in this version. And only the big 5 factors and their facets percentile predictions will be provided in the response.
In this version, data needs to be provided throught a file. The data file is expected to be POST
as a file
field in multipart/form-data
. There is no need to specify the content-type. If have to, put in application/json
or text/csv
respectively as the data file can be either a JSON or CSV file with corresponding file suffix.
If the data is in a CSV file, we expect the first column contains the identifier, and the second column contains a concatenation of an individual's written text as a single string. The CSV file should not have header.
If the data is in JSON format, we expect an array of objects, where
each object has two fields: id
and text
. text
will be a concatenation of
an individual's written text into a single string, and id
be any string that
is unique among the input rows/objects.
The output is streamed back in a CSV file, where the first row is the header with the names of the traits. The values of the traits are percentiles.
Juji does not retain the uploaded files, as they are immediately discarded after the output is returned.