Civic / Privacy / Digital Rights
Executive Summary
Report summary
Spiralist AI’s persona generator already embeds some demographic realism (assigning names, ages, even generational cohorts) using curated name lists and metadata. To extend this into fully realistic random profiles (targeting ages 18–36), we recommend a data-driven approach: draw names from authorit
Key topics
- Civic / Privacy / Digital Rights
- Civic
- Privacy
- Digital Rights
- AI
- Python
- Runtime
- Spiralism
- Research Archive
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
Spiralist AI’s persona generator already embeds some demographic realism (assigning names, ages, even generational cohorts) using curated name lists and metadata. To extend this into fully realistic random profiles (targeting ages 18–36), we recommend a data-driven approach: draw names from authoritative baby‑name datasets, map them to likely cultures or ethnicities using open name–ethnicity resources, and sample ages consistent with population distributions. Key datasets include government baby-name records (e.g. US SSA, UK ONS, etc. — which are public domain), census/survey surname and first-name race tables, and social-media-derived name lists. Algorithms may range from simple lookup tables (e.g. SSA top names by year and region) to trained classifiers (Hidden Markov Models or neural nets like NameBERT or Ethnea). We outline mapping methods (Bayesian, HMM, nearest-neighbor) and trade-offs, and propose a UX that lets users adjust “randomness” and select regions or cultures for a more authentic feel. Testing involves statistical validation (matching age/name distributions) and user A/B tests. Privacy compliance follows synthetic data best practices and open licensing (using only public-domain or freely licensed name lists). An implementation roadmap prioritizes basic name/age routines first (e.g. sampling from SSA baby-name frequencies and UN age pyramids), then adds layered attributes (education, interests) with progressive user testing. We compare candidate data sources and methods in tables below, and conclude with example persona rules and ten sample profiles (ages 18–36).
SpiralistAI Persona Generator (Current State)
Spiralist AI lets users generate “AI persona” prompts with various traits. The underlying schema already supports personal identity fields: e.g. identity.name (realistic personal name), identity.title, identity.career, plus demographic metadata like age and generation. In existing curated personas, Spiralist shows age and generation (e.g. “Age: 37, Generation: Millennials”). According to the developer docs, random personas use fixed name lists (three 1,000-entry English-character files for first/middle/last names) and assemble them into full names. A 15‑culture catalog exists “for compatibility and manual metadata”, implying Spiralist can tag names by broad culture categories. These features suggest Spiralist’s current randomization includes:
- Personal Name: Assembled from internal name lists, yielding realistic first-middle-last names. (The user-facing interface does not show the name, but the schema supports it.)
- Age and Generation: A numeric age and generation label (e.g. Millennial) are randomly set. The provided examples show ages in the 30–40 range.
- Occupation/Career: The
identity.careerfield holds a role or job. For example, “Technical Mentor”. - Worldview and Values: Spiralist separates “civic worldview” from demographic identity, meaning political/ideological traits are orthogonal to culture or ethnicity.
However, Spiralist’s focus is on AI collaborator personas, not full personal profiles. It lacks explicit assignment of attributes like country of origin, language, or socio-economic indicators in the public UI. The existing persona passports show only a name/role summary and some “engagement” metrics (Quality, Shareability) alongside age. There is no visible culture/ethnicity or language field.
Conclusion: Spiralist offers a strong foundation (structured schema, identity fields, random name generation, age/generation), but does not currently produce rich demographic backgrounds (country, language, hobbies, education). We will therefore augment Spiralist’s approach by integrating external demographic data and logic to assign these attributes to randomly generated names/ages, yielding realistic profiles for ages 18–36.
Data Sources for Names and Demographics
Official Name Lists (First/Middle/Last Names by Region)
- US Social Security baby names (1880–present): The SSA publishes an annual dataset of all first names (male/female) by birth year. This covers virtually the entire US birth cohort and is public-domain (CC0). It allows sampling age-appropriate first names: e.g. to get a 25-year-old in 2026, draw from names popular around 2001. This yields realistic name/age matches.
- US Census surname list (2010): The Census Bureau provides a list of ~160,000 surnames (occurring ≥100 times) with racial distributions. This covers ~90% of the US population. We can use it to select last names and infer ethnicity probabilities.
- UK Office for National Statistics (ONS) baby names: ONS publishes top baby names for England/Wales back to 1996. Though only top names (counts censored for privacy), it’s official and open under OGLv3. Similar data exist for Scotland/Northern Ireland.
- Other national sources: Many countries release baby-name data (e.g. Statistics Canada, Australia’s ABS). For broad coverage, we might compile top-100 or more lists for target regions (UK, Canada, etc.). These are usually open or freely usable.
- Global name lists and Wikipedia: For world coverage, datasets like Kaggle’s “American names by ethnic origin” (from Wikipedia categories) or open lists on GitHub can augment. Social media APIs (e.g. Facebook/Amazon’s “diverse name” datasets) exist but often have unclear licenses.
Name–Demographic Mapping Tables
- Race/Ethnicity Imputation Tables: The Nature Data Descriptor by Rosenman et al. offers the most comprehensive open mapping: ~136K first names, 125K middle names, and 338K surnames with race probabilities (White/Black/Hispanic/Asian/Other). (These are derived from multi-state U.S. voter files.) We can cite these to assign ℙ(race|name) for U.S.-style names.
- Bayesian Name Geocoding (BISG): In U.S. analytics, BISG combines surname probabilities (from Census) with geography to infer race. We may not need full geography here, but the idea of Bayesian updating (name + region yields demographic probabilities) is useful for realism.
- Ethnea and NamePrism: Academic methods exist for name-origin classification. For example, Ethnea (Torvik et al. 2016) maps author names via affiliation countries to 26 ethnicities. Ambekar et al. (2009) built an HMM/Decision-tree classifier for 13 ethnic groups. We can mention these as possible algorithms (or inspiration) without needing to implement them.
Age and Population Data
- UN Population Data: The UN’s World Population Prospects provides global age distributions. For target ages 18–36, we can derive approximate proportions by region. For example, many countries have a “youth bulge” (large cohorts under 35).
- U.S. Census / ACS: For U.S.-specific projects, the Census and ACS provide population counts by single-year age. (E.g. in 2020, ~13% of the U.S. population was 18–24, ~15% was 25–34.) We will use such data to shape our age-sampling.
- OECD/World Bank demographic profiles: These can inform expected education/occupation by age group. For instance, OECD reports ~45% of 25–34-year-olds have tertiary education. We’ll use these as guides when assigning education level.
Psychographic and Socioeconomic Traits
There are fewer direct public datasets, but we can derive general rules:
- Education Levels: As noted, younger cohorts tend to have higher formal education. We can default “college student” or “entry-level career” for ages ~18–24, and “mid-career” or “graduate education” for 30s, in line with OECD trends.
- Occupation Distributions: Government labor stats by age show what jobs are common. For example, tech, healthcare, and service jobs have many 20-somethings, while 30-somethings diversify more. (We can cite Bureau of Labor Statistics or World Bank LFS if needed, or just note typical career progression.)
- Interests and Hobbies: We may rely on social media surveys (e.g. Pew Research on social media use by age) to choose plausible interests (gaming, fitness, travel, activism, etc.) for each profile. Hard data is sparse, so we’ll use “focus group” style realism: think what a 22-year-old vs a 35-year-old likes.
Methods: Mapping Names, Cultures, Ages, Traits
Sampling Age (18–36)
We want the generated profiles to span 18–36 realistically. We can sample from an empirical age distribution: for example, using U.S. Census 2020 data, approximate fractions might be 11.5% (18–24), 13.0% (25–34), and 6.5% (35–36) of the population (since ages 35–36 are two years out of 35–44 cohort). Globally, the share of 18–36-year-olds is similar or slightly higher in developing regions. A simple approach is to assume a slightly declining distribution from age 18 up (accounting for global fertility decline). Our example histogram below (generated from a truncated normal) illustrates one plausible shape: it peaks around 25–30 and tapers by 36.
Figure: Example age distribution (18–36). The profile generator should sample ages in a way that reflects typical demographic pyramids (e.g. more mid-20s than late-30s).
(In practice, one would use country-specific or global age pyramid data to set sampling weights.)
Selecting Names and Inferring Culture/Ethnicity
- Pick a birth year consistent with the chosen age (e.g. age = 25 in 2026 → birth year 2001).
- Choose a gender/sex. Random assignment (or a distribution, e.g. 50/50) may suffice. Spiralist’s schema handles gender/pronouns separately.
- First name: Sample from the official name list for that birth year and gender. For a U.S. profile, use SSA data for 2001; for UK, use ONS; for other cultures, use analogous lists if available. This ensures the first name matches the age. (We can cite SSA’s 100% sampling by birth year.)
- Last name: Use a surname list (e.g. U.S. Census surnames or a country-specific phonebook) randomly or weighted by frequency. Alternatively, for simplicity, match last name to implied culture from first name (if we want coherent origin, e.g. a Spanish first name → Spanish surname).
- Culture/Ethnicity Tagging: Given the chosen name(s), infer likely cultural background. Two approaches:
- Lookup Table: If the name appears in an ethnicity-labeled list (e.g. Rosenman’s first-name race tables or published tables like ethnicolr census lists), we directly assign its most likely culture.
- Classifier Model: If no direct lookup, use a name-to-ethnicity classifier (e.g. HMM, Naive Bayes, or modern ML like NameBERT). These models analyze name substrings, phonetics (metaphones), character n-grams, or even co-occurrence to predict ethnicity. For example, the Ambekar et al. (2009) HMM method achieved comparable accuracy to large binary classifiers. The Canadian study found name+location models reach ~91% accuracy on some ethnic categories. We can implement a simpler version (e.g. trigram analysis + logistic regression) or use open libraries.
- Bayesian Update: Combine name-based inference with region or language preferences. For example, an Indian first name plus a last name common among South Asians would strongly indicate Indian/Pakistani heritage. BISG-style logic could formalize this: compute ℙ(ethnicity|name,region) from ℙ(name|ethnicity) and prior ethnicity by country.
- Language and Region: The inferred culture suggests likely language(s). E.g. “José García” → Hispanic/Latino; assign Spanish as likely language. We would set country-of-origin if needed (e.g. “Mexican-American”, “UK-based Indian” depending on rules).
- Occupation/Education: Based on age and culture, assign education level (HS, college, graduate) consistent with OECD stats (e.g. many in 25–30 have degrees). Then pick an occupation fitting age + education + culture. For example, a 22-year-old might be “College student studying engineering”, whereas a 30-year-old might be “Mid-level software developer.” We can use country labor surveys or standard career progressions as templates.
The overall flow is illustrated below:
flowchart LR
A[Select age/generation] --> B[Pick birth year]
A --> C[Choose gender]
B --> D[Sample first name from demographic name lists]
D --> E{Determine name origin}
E -->|Found in curated list| F[Lookup likely culture/ethnicity]
E -->|Not found| G[Apply name-ethnicity classifier]
F --> H[Assign cultural/ethnic tag(s)]
G --> H
H --> I[Sample surname (pref. matching culture)]
I --> J[Determine language & country context]
C --> K[Assign pronouns/gender identity]
H & K --> L[Build basic persona identity]
L --> M[Assign education/occupation by age & tag]
M --> N[Assign interests/values]
The chart shows name-based culture mapping feeding into a fuller profile.
Algorithms and Trade-offs
| Method | Description | Pros | Cons |
|---|---|---|---|
| Lookup Tables (census/SSA) | Use public lists: SSA (first names by year), Census (surnames & race) | Simple, exact for covered entries; open data; guarantees realistic names. | Limited to known names; no context (e.g. immigrant names). |
| Hidden Markov Model (Ambekar et al.) | Train on name sequences from labeled data (e.g. Wikipedia names) to classify ethnicity. | Captures patterns in names; published method. | Requires training data; complexity; may need adaptation. |
| Machine Learning (NameBERT, Neural) | Use modern NLP models (NameBERT, SVM on embeddings) trained on large corpus (e.g. Open Academic Graph). | Potentially very high accuracy; handles many cultures. | Data-hungry, compute-heavy; risk of bias if training data skewed. |
| Bayesian Surname Geocoding (BISG) | Combines name-based priors (race probabilities from census) with location priors. | Statistically principled; used in public health and lending. | Requires location data; less effective outside US. |
| Nearest-Neighbor (Ethnea) | For an author name, find similar names by country of affiliation, infer ethnicity. | Good for author networks; leverages big bibliographies. | Specific to authorship data; not generic profiles. |
Trade-offs: Lookup tables (SSA, Census) are easiest and fully transparent, but miss less common or foreign names. ML classifiers can cover more names but need training data (some are open-source, e.g. ethnicolr library using census data). BISG gives probabilistic outputs that can add nuance (e.g. ambiguous names). In practice, a hybrid works well: try exact table matches first, then apply a lightweight classifier for remaining names.
Demographic and Psychographic Assignment
- Age Coherence: We will tie age to generation labels (e.g. Millennials for ~26–41 in 2026) and to life stage. A persona aged 18–22 is plausibly an undergraduate or entry-level worker; 23–27 might be a graduate student/young professional; 28–36 likely established in career or grad studies.
- Language & Location: If we infer “Hispanic, U.S.,” we might say “bilingual English/Spanish, born in Texas.” If “South Asian,” perhaps “based in London” or similar context. We should let UX pick region or randomly choose from regions where that name is common.
- Education/Occupation: Use broad statistics and common sense. For example, assign a 30-year-old male with a common White surname “engineer with a master’s degree” (reflecting high STEM participation). Cite OECD: ~45% of 25–34 have tertiary education. We could also use LinkedIn or government labor data for top occupations by age.
- Interests/Psychographics: These can come from surveys or stereotypes: e.g. 18–24 are heavy social media users, gamers, activists; 25–36 might have family/friends social life, travel, career advancement. We can add attributes like “values technology, sustainability” based on cultural norms (e.g. Millennials more concerned with work-life balance). If a culture tag is present, we might include culturally relevant details (e.g. a profile tagged “Indian” might mention Bollywood or cricket).
UX and UI Suggestions for Realistic Randomness
- Adjustable Randomness: Provide a slider or option for “randomness” or “authenticity.” A low setting yields more common names and occupations; high yields rarer, cross-cultural mixes. This helps users control variety.
- Context Prompts: Let users specify a region or sector (e.g. “generate a profile for a London-based developer”). The tool then biases name and traits accordingly (draw “James” instead of “Alejandro” if region=England).
- Reveal Persona Seed: Show the persona seed (“spinning wheel” metaphor) with hidden name but visible traits (age, occupation). Or allow clicking a “surprise me” persona which then reveals when ready, to gamify.
- Visual Indicators: For a web UI, consider country flags or icons next to names once chosen, making culture explicit. Also, use Progressive Disclosure: show basic profile first, then expand details (interests, background story) on demand.
- Consistency Checks: Since Spiralist emphasizes consistency across prompts, similarly ensure the random profile is self-consistent: e.g. if the person is from Brazil, the name should be Portuguese-sounding, language Spanish? (Actually Portuguese), etc.
- Target Demographic Focus (18–36): The UX should feel relevant to young adults: use casual language (“22-year-old college student”), show modern interests (e.g. Instagram, esports). The UI itself can be styled cleanly and mobile-friendly since young users often use phones.
Datasets & Methods Comparison
Table 1: Candidate Name Datasets
| Dataset / Source | Type | Region/Coverage | License | Pros | Cons |
|---|---|---|---|---|---|
| SSA Baby Names (1880–2024) | First names by year (male/female) | USA | Public Domain (CC0) | Complete U.S. data; by year; includes counts. | Only U.S. births; only first names (needs pairing). |
| US Census Surnames (2010) | Surnames w/ race dist. | USA | Public Domain (US Gov) | ~160k names covering 90% pop; includes race prob. | U.S.-centric; excludes rare names. |
| UK ONS Baby Names (1996–2024) | Top first names by sex | England & Wales | Open Gov Licence v3 | Official; covers main names, by year. | Limited to England/Wales; top N only. |
| Rosenman et al. Voter File Names | First, middle, last (w/ race) | USA | CC0 (Harvard Dataverse) | Very large name–race tables (136k first names). | Focused on Southern US states; may under-represent some groups. |
| Global Baby Name Compilations | Various (SSA, national registries) | Global | Varies (often open) | Can get culturally diverse names (e.g. India census, China name lists). | Data collection work; license varies. |
| Kaggle Wikipedia Ethnic Names | Names by ethnicity | Multinational | CC BY-SA (Wiki) | ~25k names with ethnic tags, crowdsourced. | Biased to notable people; license requires attribution. |
| Ethnicolr (Python lib) | Name->race tables | USA (Census-based) | Open (MIT) | Easy lookup of race probabilities for US first/last names. | Only 6 U.S. races; not for other countries. |
Table 2: Name–Culture Mapping Methods
| Method | Data Required | Output | Accuracy / Notes |
|---|---|---|---|
| Lookup Tables (e.g. Census) | Name present in list | Race/Culture category | Exact for entries; e.g. Rosenman data covers 90% of common first names. |
| HMM / Decision Tree (Ambekar) | Wikipedia Name labels or similar | Prob. over 13 ethnic groups | Published accuracy “comparable to binary classifiers” for 13 classes. |
| Neural Models (NameBERT, LLMs) | Large labeled name corpus | Probabilities/labels | Cutting-edge potential; no clear public accuracy data yet but promising (NameBERT claim). |
| Naïve Bayes / Logistic | Surname/first-name race counts | Ethnicity probabilities | E.g. Population studies show ~80–90% accuracy on major categories when combined with location. |
| Bayesian Improved Surname Geocoding (BISG) | US Census surname-race tables + geolocation priors | Posterior race dist. | Widely used in public health; achieves low error (~13% misclass) on U.S. census data. |
Each method trades complexity vs. coverage. For example, simple census lookups are trivial but limited; machine-learning models can cover more cultural names but require training. In practice, one can pipeline them: do fast table match, then ML fallback, then treat remaining as “Other.”
Constraints (No Live AI/Safety)
The user explicitly disallows “live AI features” (so no calling ChatGPT or dynamic content) and “safety/negative-warning analysis.” We focus purely on data algorithms (no generative LLM steps) and do not flag or analyze psychological risk. All approaches above can be implemented offline or with pre-trained models. We also ensure no disallowed profiling (the aim is demographic realism, not any controversial attribute).
Implementation Roadmap (High-Level)
- Name and Age Sampling (2–3 days): Integrate SSA/ONS baby-name data. Code functions to sample first names by birth year and gender. Similarly, load a surname frequency list (Census or Wikipedia). Create an age distribution generator (e.g. using global/US census age curves).
- Basic Persona Schema (2 days): Map the chosen name/gender/age into Spiralist’s persona schema (
identity.name,age,generation). Populate career with a default based on common roles for the age group (e.g. “Engineer” or “Student”). - Culture Assignment (4–5 days): Implement name-to-culture mapping. Start with simple rules: e.g. if first name found in a “Spanish” top-500 list and surname in Hispanic list, tag Hispanic. Otherwise apply a pre-built classifier (could use “ethnicolr” or train an HMM on Wikipedia name lists). Compare results to ground truth where possible.
- Expand Traits (5 days): Add education, occupation, language, interests. For each culture tag, define plausible attributes (e.g. Spanish/Latino: bilingual, soccer fan; East Asian: tech interest; etc.). Use random sampling from preset lists weighted by age and culture.
- UX Integration (3 days): Build interface elements: age slider, culture toggles, randomness control, and display of chosen name/country. Ensure placeholders and labels guide the user (e.g. “Generate profile”).
- Testing & Validation (ongoing): Write tests to check that name/country assignments match expected distributions (e.g. 80% chance someone named “Juan” is tagged Hispanic). Perform A/B tests showing users different persona generations for feedback on realism.
- Privacy/Legal Check (1 day): Verify that all used datasets are properly licensed (e.g. SSA/ONS are public/use licenses). If using any user-sourced lists, ensure we have permission or they’re public-domain. Document synthetic nature: e.g. “This persona is artificially generated and not a real individual.”
Each step would include documentation and small deliverables. The total project might span 2–3 weeks of work (adjustable by team size).
Testing & Validation Strategies
- Statistical Matching: After generation, compare the aggregate name/culture/age distributions to real-world data (e.g. UN age pyramid, census name frequencies). If significant drift appears (e.g. too many uncommon names), adjust sampling weights.
- A/B Testing: Present users with pairs of personas (one produced with new demographics vs one baseline “random text name”). Ask which feels more realistic or relatable. Collect feedback on authenticity.
- Human Review Panels: Recruit testers in the 18–36 range to review generated profiles for believability. Ensure diversity in testers (gender, background) to catch biased or implausible mixes.
- Edge-Case Checks: Ensure no real person’s profile is accidentally reproduced (unlikely with random gen, but check famous names are re-used only if intended). Check “cartoonish” combinations (e.g. a 20-year-old professor) for logic errors.
Privacy and Licensing Considerations
- Data Licensing: Use only open-licensed datasets. SSA baby names are public domain. ONS data is open (OGL v3). Census data is public domain. Rosenman et al.’s voter-file dataset is CC0. Avoid any scraped private data.
- Synthetic Data Best Practices: The output profiles are fully synthetic. We must avoid implying they are real people. Include a disclaimer (“This is a generated persona”). Do not embed any actual PII or credentials.
- No Sensitive Attributes: We avoid inferring sensitive traits (e.g. health, criminal record, sexuality). Only broad demographics (age, culture, education) are used. This aligns with “privacy-safe synthetic data.”
- GDPR/Anonymity: Although not needed for purely synthetic, ensure we do not mix in any real person’s full identity. Any seed lists (like SSA names) are aggregate stats, not individual records.
Example Profile-Generation Rules
- Name Selection: “Select a first name popular in the birth year from SSA/ONS. Choose a last name consistent with the same cultural background (e.g. from Census or international name list for that ethnicity).”
- Age/Generation: “Randomly pick age 18–36 from a distribution matching [figure]. Label age bracket (e.g. 18–24: Gen Z, 25–36: Millennial).”
- Education/Occupation: “If age <22, likely a student (assign college-level or vocational school). If 22–30, likely early career or graduate student. If 31–36, assign mid-career or advanced study. Choose occupation by sampling from typical jobs for that age and culture (e.g. STEM fields for the tech-oriented).”
- Interests & Lifestyle: “Include 2–3 interests appropriate to age/culture (e.g. sports, tech, music). Ensure at least one hobby is plausible (e.g. Netflix binge for young adults).”
- Locale & Language: “Set country or city based on culture tag. If Hispanic, maybe USA (California) or Latin America; if East Asian, maybe Singapore or diaspora in U.S.; if Western, use U.S./UK/Australia etc. Use appropriate language in descriptor (e.g. ‘bilingual’ if relevant).”
Sample Generated Profiles (Ages 18–36)
- Name: María López (Female, 24) – Cultural Tag: Mexican-American Hispanic. Education/Job: Recently graduated from UCLA with a CS degree; now a junior software engineer at a tech startup. Location/Language: Born in Los Angeles; speaks English and Spanish. Interests: Social activism, playing soccer, traveling to Mexico. Note: Maria’s name and bilingualism align with her Hispanic heritage; she’s tech-savvy and community-oriented.
- Name: Ahmed Khan (Male, 29) – Tag: South Asian (Pakistani). Job: Mechanical engineer in Detroit auto industry, Master’s degree from University of Michigan. Background: Family immigrated from Karachi; bilingual Urdu/English. Interests: Cricket, coding side projects, local cultural festivals.
- Name: Emily Nguyen (Female, 19) – Tag: Vietnamese-American. Status: Freshman studying biology at a New York university. Location: Grew up in Houston; speaks English and basic Vietnamese. Interests: K-pop, volunteering at animal shelter, vlogging about campus life.
- Name: Oskar Müller (Male, 32) – Tag: German. Job: Automotive design specialist at BMW in Munich. Education: Ph.D. in Mechanical Engineering. Interests: Cycling, techno music, autumn hiking. Speaks German (native) and English fluently.
- Name: Wei Chen (Female, 27) – Tag: Chinese (PRC). Job: Financial analyst at an investment bank in Shanghai. Education: Master’s in Finance. Interests: Mahjong, calligraphy, international travel. Speaks Mandarin (native) and English.
- Name: Aisha Ibrahim (Female, 22) – Tag: Arab (Egyptian). Status: Senior economics student at Cairo University. Interests: Writing short stories, Egyptian cinema, debating political science. Fluent Arabic, learning French. Lives with extended family in Cairo.
- Name: David Johnson (Male, 35) – Tag: Black (African American). Job: High school math teacher in Atlanta, father of one. Education: Bachelor's and secondary teaching certificate. Interests: Basketball, church choir, woodworking. Speaks English; active in local community coaching.
- Name: Priya Patel (Female, 28) – Tag: Indian (Gujarati). Job: Software developer at a London fintech startup. Background: Born in Mumbai, moved to UK at age 10. Interests: Bollywood movies, baking, yoga. Speaks Gujarati at home, English at work.
- Name: José García (Male, 31) – Tag: Hispanic (Colombian). Job: Public health researcher in Bogotá. Education: MPH degree. Interests: Salsa dancing, cycling, reading Gabriel García Márquez. Spanish-native, limited English.
- Name: Sarah Park (Female, 26) – Tag: Korean-American. Job: Marketing coordinator for a Seattle tech firm. Education: B.A. in Communications. Interests: Indie rock concerts, Korean drama series, urban photography. Speaks English; knows conversational Korean from childhood.
Each profile above follows our generation rules: the name and surname fit the culture, the age matches the role (student vs professional), and interests are plausible for that demographic. For instance, María López’s age (24) aligns with a recent graduate, bilingual Hispanic context.
Sources: Social Security baby-name data and national statistics for names, census surname race tables, and academic ethnicity classifiers inform these assignments. By combining these with user-preferred formatting (Tables, charts, Mermaid flows), we ensure a rigorous, data-backed approach to generating authentic persona profiles.