Files
Compass/tests/e2e/utils/showcase-profiles.ts
MartinBraquet 3a38e8affb Add neurotype and accessibility fields to profiles
- Added `accessibility_notes` (free text) to profiles to capture members' practical access needs while avoiding filterable attributes.
- Introduced `neurotype` (selectable values with details option) and GIN indexing to enable efficient keyword searches.
- Updated UI components, filters, and forms to support these new profile attributes.
- Modified backend and tests to handle the changes and ensure consistency across filtering, seeding, and display logic.
- Bumped API version to `1.49.0`.
2026-07-24 16:27:41 +02:00

773 lines
30 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Hand-authored "showcase" profiles.
*
* The faker-generated profiles (`UserAccountInformationForSeeding`) are fine for e2e assertions but useless
* on camera: lorem-ipsum bios, lorem headlines, ages uniform over 18100, and the same `default-avatar.png`
* on every profile. Marketing captures (see `docs/marketing-visuals.md`) need a database that looks like a
* real product with real people in it.
*
* These ten personas are fictional by construction, so nothing captured from them can leak member data.
* They deliberately spread across the filter surface — age, gender, orientation, connection intent, country,
* religion, politics, MBTI — so that whatever facet a screenshot demonstrates, there is something to match.
*
* Bios embed the niche keywords the marketing copy promises ("stoicism", "sustainable living",
* "neuroscience", "hiking", "meditation") so keyword-search demos return sensible results.
*
* Photos are NOT in this repo by default — see `docs/marketing-visuals.md` (W0b) for the naming convention
* and licensing rules. Missing files degrade to the default avatar with a warning.
*/
export interface ShowcaseProfile {
/** Stable slug — drives the user id, username, and photo filenames. Lowercase, no spaces. */
slug: string
name: string
email: string
age: number
gender: string
orientation: string[]
/** Optional — only some showcase profiles state a neurotype, as in real life. */
neurotype?: string[]
headline: string
/** Paragraphs of the bio, in order. */
bio: string[]
keywords: string[]
city: string
region_code: string | null
country: string
city_latitude: number
city_longitude: number
born_in_location: string
occupation_title: string
company: string | null
university: string | null
education_level: string
languages: string[]
ethnicity: string[]
height_in_inches: number
religion: string[]
political_beliefs: string[]
diet: string[]
mbti: string
big5: {
openness: number
conscientiousness: number
extraversion: number
agreeableness: number
neuroticism: number
}
relationship_status: string[]
pref_relation_styles: string[]
pref_romantic_styles: string[]
pref_gender: string[]
pref_age_min: number
pref_age_max: number
has_kids: number
wants_kids_strength: number
is_smoker: boolean
drinks_per_month: number
/** Names upserted into the `interests` lookup table, then linked via `profile_interests`. */
interests: string[]
/** Names upserted into `causes` → `profile_causes`. */
causes: string[]
/** Names upserted into `work` → `profile_work`. */
work: string[]
/** Keys must be values of `SITE_ORDER` in `common/socials.ts`. */
links: Record<string, string>
/** How many portraits to expect at `/images/showcase/<slug>-<n>.jpg`. */
photoCount: number
}
/**
* The account captures sign in AS, rather than one they look at.
*
* Search, filters and the profile grid only render for a signed-in user, so a capture run needs a session.
* Doing that by hand (the `.auth-profile` route `capture-profile.mjs` uses) breaks on every reseed and
* can't run unattended — so this one account, unlike the personas, does get a Firebase login.
*
* Kept out of `SHOWCASE_PROFILES` because it is infrastructure, not a face: it exists to hold a session,
* and mostly shows up as a nav avatar.
*/
export const SHOWCASE_VIEWER_EMAIL = 'viewer@compass.showcase'
export const SHOWCASE_VIEWER_PASSWORD = 'showcase-viewer-pass'
export const SHOWCASE_VIEWER: ShowcaseProfile = {
slug: 'alexmorel',
name: 'Alex Morel',
email: SHOWCASE_VIEWER_EMAIL,
age: 33,
// A default gender on purpose. GenderFilter auto-expands its full ~20-option list when the signed-in
// viewer's own gender is an extended one (gender-filter.tsx), which buried the point of the filter
// beat in the marketing capture. Woman/Man are the two defaults.
gender: 'female',
orientation: ['queer'],
headline: 'Translator and mountain person, here to meet people who read',
bio: [
'I translate technical documentation between French, English and Spanish, which is a stranger job than it sounds — most of the work is deciding what the original author actually meant.',
'I climb and ski depending on the season, and I read more than is reasonable. Currently working through a stack of translated Japanese fiction and losing.',
'Here for friendship and collaboration mainly. Happy to be surprised.',
],
keywords: ['translation', 'climbing', 'literature'],
city: 'Grenoble',
region_code: 'ARA',
country: 'France',
city_latitude: 45.1885,
city_longitude: 5.7245,
born_in_location: 'France',
occupation_title: 'Technical Translator',
company: 'Freelance',
university: 'Université Grenoble Alpes',
education_level: 'masters',
languages: ['french', 'english', 'spanish'],
ethnicity: ['caucasian'],
height_in_inches: 69,
religion: ['agnostic'],
political_beliefs: ['progressive'],
diet: ['veg'],
mbti: 'infp',
big5: {openness: 86, conscientiousness: 70, extraversion: 45, agreeableness: 76, neuroticism: 38},
relationship_status: ['single'],
pref_relation_styles: ['friendship', 'collaboration'],
pref_romantic_styles: [],
pref_gender: ['female', 'male', 'non-binary'],
pref_age_min: 25,
pref_age_max: 45,
has_kids: 0,
wants_kids_strength: 1,
is_smoker: false,
drinks_per_month: 5,
interests: ['Climbing', 'Literature', 'Skiing', 'Languages'],
causes: ['Open source'],
work: ['Translation'],
links: {site: 'alexmorel.fr'},
photoCount: 1,
}
export const SHOWCASE_PROFILES: ShowcaseProfile[] = [
{
slug: 'mayaokonkwo',
name: 'Maya Okonkwo',
email: 'maya.okonkwo@compass.showcase',
age: 31,
gender: 'female',
orientation: ['bisexual'],
headline: 'Cognitive scientist who reads too much Stoicism and hikes to think',
bio: [
'I spend my working hours on the neuroscience of attention — specifically what happens in the first 200 milliseconds after something grabs you. It has made me insufferable at parties and unexpectedly patient in traffic.',
'Outside the lab I read a lot of Stoicism, mostly Epictetus, mostly badly. I have a standing Sunday hiking habit that started as a way to think through problems and turned into the part of the week I protect hardest. I cook Nigerian food from my mothers recipes and I am still not as good at it as she is.',
'I am looking for people who argue in good faith and change their minds out loud. Friendship or something more — I am genuinely open on that, and I would rather find out slowly.',
],
keywords: ['neuroscience', 'stoicism', 'hiking', 'cooking'],
city: 'Edinburgh',
region_code: 'SCT',
country: 'United Kingdom',
city_latitude: 55.9533,
city_longitude: -3.1883,
born_in_location: 'Nigeria',
occupation_title: 'Cognitive Neuroscientist',
company: 'University of Edinburgh',
university: 'University College London',
education_level: 'doctorate',
languages: ['english', 'igbo', 'french'],
ethnicity: ['african'],
height_in_inches: 67,
religion: ['agnostic'],
political_beliefs: ['progressive'],
diet: ['pescetarian'],
mbti: 'intj',
big5: {
openness: 91,
conscientiousness: 78,
extraversion: 42,
agreeableness: 66,
neuroticism: 31,
},
relationship_status: ['single'],
pref_relation_styles: ['friendship', 'relationship'],
pref_romantic_styles: ['mono'],
pref_gender: ['female', 'male', 'non-binary'],
pref_age_min: 27,
pref_age_max: 42,
has_kids: 0,
wants_kids_strength: 2,
is_smoker: false,
drinks_per_month: 6,
interests: ['Neuroscience', 'Stoicism', 'Hiking', 'Cooking', 'Philosophy'],
causes: ['Open science', 'Mental health'],
work: ['Research', 'Academia'],
links: {site: 'mayaokonkwo.science', github: 'mokonkwo', substack: 'twohundredms'},
photoCount: 3,
},
{
slug: 'tomasleclerc',
name: 'Tomás Leclerc',
email: 'tomas.leclerc@compass.showcase',
age: 38,
gender: 'male',
orientation: ['straight'],
headline: 'Carpenter, slow-living convert, looking for people who build things',
bio: [
'I left a decade of software consulting to make furniture. Best decision I have made, financially the worst. I build mostly in oak and mostly to commission, and I am learning Japanese joinery from books and failure.',
'Sustainable living is the through-line: I heat with wood I cut, I fix rather than replace, and I have opinions about supply chains that I try to keep to myself for the first hour of knowing someone.',
'I have a nine-year-old daughter half the week. I am not in a hurry about anything. I would like to meet people who make things with their hands, or who want to learn.',
],
keywords: ['woodworking', 'sustainable living', 'permaculture', 'japanese joinery'],
city: 'Lyon',
region_code: 'ARA',
country: 'France',
city_latitude: 45.764,
city_longitude: 4.8357,
born_in_location: 'France',
occupation_title: 'Furniture Maker',
company: 'Atelier Leclerc',
university: null,
education_level: 'bachelors',
languages: ['french', 'english', 'spanish'],
ethnicity: ['caucasian'],
height_in_inches: 71,
religion: ['atheist'],
political_beliefs: ['green'],
diet: ['omnivore'],
mbti: 'istp',
big5: {
openness: 74,
conscientiousness: 83,
extraversion: 35,
agreeableness: 71,
neuroticism: 28,
},
relationship_status: ['single'],
pref_relation_styles: ['friendship', 'relationship'],
pref_romantic_styles: ['mono'],
pref_gender: ['female'],
pref_age_min: 30,
pref_age_max: 48,
has_kids: 1,
wants_kids_strength: 1,
is_smoker: false,
drinks_per_month: 12,
interests: ['Woodworking', 'Sustainable living', 'Permaculture', 'Cycling'],
causes: ['Climate', 'Right to repair'],
work: ['Craft', 'Design'],
links: {site: 'atelier-leclerc.fr', instagram: 'atelierleclerc'},
photoCount: 4,
},
{
slug: 'priyaraman',
name: 'Priya Raman',
email: 'priya.raman@compass.showcase',
age: 26,
gender: 'female',
orientation: ['queer'],
neurotype: ['autistic'],
headline: 'Climate modeller. Meditation twice a day. Will talk about soil for hours.',
bio: [
'I model regional climate for a living, which means I spend most days being carefully precise about uncertainty and most evenings being asked whether we are doomed. (Short answer: the question is badly posed.)',
'I have had a daily meditation practice since I was nineteen — Vipassana, twenty minutes, twice. It is the reason I can do the job without burning out. I also keep an allotment that is more ambition than vegetable.',
'Here for collaborators and friends, mostly. I have more ideas than time and I like people who fix that problem for each other.',
],
keywords: ['climate', 'meditation', 'soil', 'gardening'],
city: 'Bangalore',
region_code: 'KA',
country: 'India',
city_latitude: 12.9716,
city_longitude: 77.5946,
born_in_location: 'India',
occupation_title: 'Climate Scientist',
company: 'Indian Institute of Science',
university: 'Indian Institute of Science',
education_level: 'masters',
languages: ['english', 'tamil', 'hindi'],
ethnicity: ['south_asian'],
height_in_inches: 63,
religion: ['hindu'],
political_beliefs: ['green'],
diet: ['veg'],
mbti: 'infj',
big5: {
openness: 88,
conscientiousness: 80,
extraversion: 48,
agreeableness: 79,
neuroticism: 36,
},
relationship_status: ['single'],
pref_relation_styles: ['collaboration', 'friendship'],
pref_romantic_styles: [],
pref_gender: ['female', 'non-binary'],
pref_age_min: 22,
pref_age_max: 38,
has_kids: 0,
wants_kids_strength: 1,
is_smoker: false,
drinks_per_month: 0,
interests: ['Meditation', 'Gardening', 'Climate science', 'Cycling'],
causes: ['Climate', 'Food security'],
work: ['Research', 'Climate'],
links: {site: 'priyaraman.in', github: 'praman', x: 'praman_climate'},
photoCount: 3,
},
{
slug: 'davidhirsch',
name: 'David Hirsch',
email: 'david.hirsch@compass.showcase',
age: 61,
gender: 'male',
orientation: ['straight'],
neurotype: ['neurotypical'],
headline: 'Retired GP, second act as a choir conductor, still learning Bach',
bio: [
'Forty years of general practice taught me that most of what people need is someone who will actually listen for more than four minutes. I retired two years ago and I am still adjusting to having time.',
'I conduct a community choir of forty-odd amateurs. We are not good, but we are getting better, and Bach forgives a lot. I walk every morning and I have started reading philosophy properly rather than pretending I had.',
'Widowed. Not looking to replace anyone. I would like conversation, walking companions, and people who are unbothered by the age gap in either direction.',
],
keywords: ['choir', 'bach', 'medicine', 'walking'],
city: 'Portland',
region_code: 'OR',
country: 'United States',
city_latitude: 45.5152,
city_longitude: -122.6784,
born_in_location: 'United States',
occupation_title: 'Retired Physician',
company: null,
university: 'Oregon Health & Science University',
education_level: 'doctorate',
languages: ['english', 'german'],
ethnicity: ['caucasian'],
height_in_inches: 70,
religion: ['jewish'],
political_beliefs: ['liberal'],
diet: ['omnivore'],
mbti: 'enfj',
big5: {
openness: 77,
conscientiousness: 86,
extraversion: 63,
agreeableness: 88,
neuroticism: 25,
},
relationship_status: ['single'],
pref_relation_styles: ['friendship'],
pref_romantic_styles: [],
pref_gender: ['female', 'male'],
pref_age_min: 45,
pref_age_max: 75,
has_kids: 2,
wants_kids_strength: 0,
is_smoker: false,
drinks_per_month: 8,
interests: ['Choral music', 'Walking', 'Philosophy', 'Bach'],
causes: ['Healthcare access', 'Arts funding'],
work: ['Medicine', 'Music'],
links: {site: 'rosecitychoir.org'},
photoCount: 2,
},
{
slug: 'aminahaddad',
name: 'Amina Haddad',
email: 'amina.haddad@compass.showcase',
age: 34,
gender: 'female',
orientation: ['straight'],
headline: 'Civil engineer rebuilding water systems. Long-distance runner.',
bio: [
'I design municipal water infrastructure, which is the least glamorous and most consequential engineering there is. Two years in Jordan, now back in Beirut doing the same work at home.',
'I run — properly run, sixty kilometres a week, two marathons a year. It is the only time my head is quiet. I read history obsessively, mostly Ottoman, and I am teaching myself to sail badly.',
'Looking for a partner who has their own thing and takes it seriously. I travel for work and I need someone who finds that interesting rather than threatening.',
],
keywords: ['engineering', 'running', 'water', 'history'],
city: 'Beirut',
region_code: null,
country: 'Lebanon',
city_latitude: 33.8938,
city_longitude: 35.5018,
born_in_location: 'Lebanon',
occupation_title: 'Civil Engineer',
company: 'Beirut Water Authority',
university: 'American University of Beirut',
education_level: 'masters',
languages: ['arabic', 'french', 'english'],
ethnicity: ['middle_eastern'],
height_in_inches: 66,
religion: ['muslim'],
political_beliefs: ['moderate'],
diet: ['omnivore'],
mbti: 'estj',
big5: {
openness: 68,
conscientiousness: 92,
extraversion: 55,
agreeableness: 61,
neuroticism: 33,
},
relationship_status: ['single'],
pref_relation_styles: ['relationship'],
pref_romantic_styles: ['mono'],
pref_gender: ['male'],
pref_age_min: 30,
pref_age_max: 45,
has_kids: 0,
wants_kids_strength: 3,
is_smoker: false,
drinks_per_month: 2,
interests: ['Running', 'History', 'Sailing', 'Engineering'],
causes: ['Clean water', 'Rebuilding Beirut'],
work: ['Engineering', 'Infrastructure'],
links: {linkedin: 'aminahaddad', site: 'aminahaddad.eng'},
photoCount: 3,
},
{
slug: 'joonpark',
name: 'Joon Park',
email: 'joon.park@compass.showcase',
age: 29,
gender: 'non-binary',
orientation: ['pansexual'],
neurotype: ['adhd', 'hsp'],
headline: 'Game designer, amateur mycologist, host of a very small dinner party',
bio: [
'I design systems for a mid-size indie studio — mostly economies and progression, the invisible plumbing that makes a game feel fair. Before that I studied economics, which turns out to be the same job with worse graphics.',
'I forage mushrooms, seriously and carefully, and I run a monthly dinner for eight people who mostly did not know each other beforehand. Seating chart is the whole art form.',
'Open to friendship, collaboration, or dating — I have never found it useful to decide in advance. I am poly and clear about it from the start.',
],
keywords: ['game design', 'mycology', 'foraging', 'economics'],
city: 'Berlin',
region_code: 'BE',
country: 'Germany',
city_latitude: 52.52,
city_longitude: 13.405,
born_in_location: 'South Korea',
occupation_title: 'Game Designer',
company: 'Kettle Studios',
university: 'Seoul National University',
education_level: 'bachelors',
languages: ['korean', 'english', 'german'],
ethnicity: ['asian'],
height_in_inches: 68,
religion: ['agnostic'],
political_beliefs: ['libertarian'],
diet: ['omnivore'],
mbti: 'entp',
big5: {
openness: 95,
conscientiousness: 58,
extraversion: 71,
agreeableness: 64,
neuroticism: 44,
},
relationship_status: ['open'],
pref_relation_styles: ['collaboration', 'friendship', 'relationship'],
pref_romantic_styles: ['poly'],
pref_gender: ['female', 'male', 'non-binary'],
pref_age_min: 24,
pref_age_max: 40,
has_kids: 0,
wants_kids_strength: 0,
is_smoker: false,
drinks_per_month: 14,
interests: ['Game design', 'Foraging', 'Cooking', 'Board games'],
causes: ['Open source', 'Digital rights'],
work: ['Games', 'Design'],
links: {
site: 'joonpark.games',
github: 'joonp',
discord: 'joonp',
bluesky: 'joonp.bsky.social',
},
photoCount: 4,
},
{
slug: 'sofiacosta',
name: 'Sofia Costa',
email: 'sofia.costa@compass.showcase',
age: 24,
gender: 'female',
orientation: ['lesbian'],
headline: 'Marine biology PhD student. Free diver. Terrible at sitting still.',
bio: [
'My PhD is on seagrass meadows — unglamorous, enormously important carbon sinks that everyone ignores in favour of coral. I am four months from fieldwork season and counting.',
'I free dive, which is the closest thing I have to meditation. I also climb, badly and enthusiastically. I read almost entirely non-fiction and I am trying to fix that.',
'I would like friends in my new city more than anything else right now. Dating is fine too but I moved here nine months ago and I know four people.',
],
keywords: ['marine biology', 'free diving', 'climbing', 'conservation'],
city: 'Lisbon',
region_code: 'LI',
country: 'Portugal',
city_latitude: 38.7223,
city_longitude: -9.1393,
born_in_location: 'Brazil',
occupation_title: 'PhD Researcher',
company: 'University of Lisbon',
university: 'Federal University of Rio de Janeiro',
education_level: 'masters',
languages: ['portuguese', 'english', 'spanish'],
ethnicity: ['hispanic'],
height_in_inches: 64,
religion: ['spiritual'],
political_beliefs: ['progressive'],
diet: ['pescetarian'],
mbti: 'enfp',
big5: {
openness: 89,
conscientiousness: 62,
extraversion: 76,
agreeableness: 82,
neuroticism: 47,
},
relationship_status: ['single'],
pref_relation_styles: ['friendship', 'relationship'],
pref_romantic_styles: ['mono'],
pref_gender: ['female'],
pref_age_min: 22,
pref_age_max: 34,
has_kids: 0,
wants_kids_strength: 1,
is_smoker: false,
drinks_per_month: 10,
interests: ['Free diving', 'Climbing', 'Marine conservation', 'Non-fiction'],
causes: ['Ocean conservation', 'Climate'],
work: ['Research', 'Conservation'],
links: {site: 'sofiacosta.bio', instagram: 'sofia.seagrass'},
photoCount: 3,
},
{
slug: 'marcusadeyemi',
name: 'Marcus Adeyemi',
email: 'marcus.adeyemi@compass.showcase',
age: 45,
gender: 'male',
orientation: ['gay'],
headline: 'Documentary editor. Twelve years sober. Cooks for a crowd.',
bio: [
'I cut documentaries — mostly long-form, mostly about people the news got bored of. The job is 90% patience and 10% knowing when a shot has earned its length.',
'Twelve years sober this March, which shapes more of my life than any other single fact. I cook for large numbers of people as often as I can get away with it and I have strong feelings about braises.',
'Married, and my husband and I are both here looking for friends — we moved for his work and starting over socially at forty-five is genuinely hard. Not looking for anything romantic.',
],
keywords: ['documentary', 'film editing', 'sobriety', 'cooking'],
city: 'Toronto',
region_code: 'ON',
country: 'Canada',
city_latitude: 43.6532,
city_longitude: -79.3832,
born_in_location: 'United Kingdom',
occupation_title: 'Documentary Editor',
company: 'Freelance',
university: 'National Film and Television School',
education_level: 'bachelors',
languages: ['english', 'yoruba'],
ethnicity: ['african'],
height_in_inches: 73,
religion: ['atheist'],
political_beliefs: ['socialist'],
diet: ['omnivore'],
mbti: 'isfj',
big5: {
openness: 81,
conscientiousness: 75,
extraversion: 44,
agreeableness: 85,
neuroticism: 30,
},
relationship_status: ['married'],
pref_relation_styles: ['friendship'],
pref_romantic_styles: [],
pref_gender: ['female', 'male', 'non-binary'],
pref_age_min: 30,
pref_age_max: 60,
has_kids: 0,
wants_kids_strength: 0,
is_smoker: false,
drinks_per_month: 0,
interests: ['Film', 'Cooking', 'Documentary', 'Cycling'],
causes: ['Addiction recovery', 'Press freedom'],
work: ['Film', 'Media'],
links: {site: 'marcusadeyemi.film', linkedin: 'marcusadeyemi'},
photoCount: 2,
},
{
slug: 'ellenostrom',
name: 'Elle Nyström',
email: 'elle.nystrom@compass.showcase',
age: 52,
gender: 'female',
orientation: ['straight'],
headline: 'Nurse practitioner, cross-country skier, deeply unserious about most things',
bio: [
'Twenty-six years in nursing, currently running a rural primary care clinic that covers an area the size of a small country and has three staff. I like the work more than I expected to at this stage.',
'I ski about a thousand kilometres a winter and swim in cold water year-round, which locally is not considered eccentric. I play accordion, badly, at a level I describe as "socially tolerated".',
'Divorced, kids grown and gone. Looking for a companion for long days outdoors and someone to be quiet with afterwards.',
],
keywords: ['nursing', 'skiing', 'cold water swimming', 'accordion'],
city: 'Umeå',
region_code: 'AC',
country: 'Sweden',
city_latitude: 63.8258,
city_longitude: 20.263,
born_in_location: 'Sweden',
occupation_title: 'Nurse Practitioner',
company: 'Västerbotten Regional Health',
university: 'Umeå University',
education_level: 'masters',
// NOTE: 'Finnish' is capitalised in LANGUAGE_CHOICES while every other value is lowercase.
// Matching the constant as it actually is — see the note in docs/marketing-visuals.md.
languages: ['swedish', 'english', 'Finnish'],
ethnicity: ['caucasian'],
height_in_inches: 68,
religion: ['atheist'],
political_beliefs: ['socialist'],
diet: ['omnivore'],
mbti: 'esfp',
big5: {
openness: 70,
conscientiousness: 84,
extraversion: 68,
agreeableness: 80,
neuroticism: 22,
},
relationship_status: ['single'],
pref_relation_styles: ['relationship', 'friendship'],
pref_romantic_styles: ['mono'],
pref_gender: ['male'],
pref_age_min: 44,
pref_age_max: 65,
has_kids: 3,
wants_kids_strength: 0,
is_smoker: false,
drinks_per_month: 6,
interests: ['Cross-country skiing', 'Cold water swimming', 'Music', 'Hiking'],
causes: ['Rural healthcare', 'Mental health'],
work: ['Medicine', 'Healthcare'],
links: {site: 'ellenystrom.se'},
photoCount: 3,
},
{
slug: 'rafaelmendes',
name: 'Rafael Mendes',
email: 'rafael.mendes@compass.showcase',
age: 36,
gender: 'male',
orientation: ['straight', 'demisexual'],
neurotype: ['autistic', 'adhd'],
headline: 'Open-source maintainer looking for collaborators, not users',
bio: [
'I maintain a mid-sized open-source database tool that about four thousand companies depend on and roughly nine people contribute to. The maths of that is the most interesting problem in my life right now.',
'I care a lot about how public digital goods get funded and governed — the Wikipedia question, basically. I read political economy for fun and I have a half-written essay about it that will probably stay half-written.',
'Here mostly for collaboration. If you have ever wanted to work on infrastructure that outlives its funding round, talk to me.',
],
keywords: ['open source', 'databases', 'governance', 'political economy'],
city: 'São Paulo',
region_code: 'SP',
country: 'Brazil',
city_latitude: -23.5505,
city_longitude: -46.6333,
born_in_location: 'Brazil',
occupation_title: 'Open Source Maintainer',
company: 'Independent',
university: 'University of São Paulo',
education_level: 'bachelors',
languages: ['portuguese', 'english'],
ethnicity: ['hispanic'],
height_in_inches: 69,
religion: ['agnostic'],
political_beliefs: ['progressive'],
diet: ['veg'],
mbti: 'intp',
big5: {
openness: 93,
conscientiousness: 66,
extraversion: 33,
agreeableness: 69,
neuroticism: 40,
},
relationship_status: ['single'],
pref_relation_styles: ['collaboration', 'friendship'],
pref_romantic_styles: ['mono'],
pref_gender: ['female', 'non-binary'],
pref_age_min: 28,
pref_age_max: 44,
has_kids: 0,
wants_kids_strength: 2,
is_smoker: false,
drinks_per_month: 4,
interests: ['Open source', 'Political economy', 'Chess', 'Running'],
causes: ['Open source', 'Digital public goods'],
work: ['Software', 'Open source'],
links: {
github: 'rafaelmendes',
site: 'rafaelmendes.dev',
discord: 'rmendes',
substack: 'publicgoods',
},
photoCount: 2,
},
/**
* The search-alert persona (A4 in docs/marketing-visuals.md).
*
* Every field here is chosen so that he is the *only* profile matching the saved search the alert
* clip demonstrates — man, 2440, atheist, vegan, wants kids, near Grenoble. Before he exists that
* search returns nothing, which is exactly the situation saved searches are for, and is the story
* the clip tells: you search, nobody fits yet, you ask to be told when someone does.
*
* Check before editing anyone above: making another man vegan *and* atheist *and* 2440 would give
* the clip two results and cost it its point.
*
* Grenoble deliberately — the viewer persona (`SHOWCASE_VIEWER`) lives there, so any radius the
* location filter is set to includes him and the beat cannot fail on a slider position.
*/
{
slug: 'juliensarr',
name: 'Julien Sarr',
email: 'julien.sarr@compass.showcase',
age: 32,
gender: 'male',
orientation: ['straight'],
headline: 'Hydrologist, vegan cook, wants a family and says so on the first date',
bio: [
'I model snowmelt for a living, which means I spend half the year in the Alps with instruments and the other half explaining to people why the numbers matter. Climate work is not abstract to me — I watch it in a dataset every winter.',
'I cook properly, all of it vegan, and I will feed anyone who lets me. Not evangelical about it; I just stopped being able to justify the alternative and the cooking got better. Ask me about lentils at your own risk.',
'I want kids. I would rather say that early than discover in year three that we wanted different lives. Beyond that I am fairly easy: long walks, bad films taken seriously, and someone who argues with me properly.',
],
keywords: ['hydrology', 'sustainable living', 'vegan cooking', 'mountaineering'],
city: 'Grenoble',
region_code: 'ARA',
country: 'France',
city_latitude: 45.1885,
city_longitude: 5.7245,
born_in_location: 'Senegal',
occupation_title: 'Hydrologist',
company: 'Institut des Géosciences',
university: 'Université Grenoble Alpes',
education_level: 'doctorate',
languages: ['french', 'english', 'wolof'],
ethnicity: ['african'],
height_in_inches: 73,
religion: ['atheist'],
political_beliefs: ['green'],
diet: ['vegan'],
mbti: 'infj',
big5: {
openness: 81,
conscientiousness: 76,
extraversion: 44,
agreeableness: 79,
neuroticism: 31,
},
relationship_status: ['single'],
pref_relation_styles: ['relationship'],
pref_romantic_styles: ['mono'],
pref_gender: ['female'],
pref_age_min: 27,
pref_age_max: 40,
has_kids: 0,
// The point of the persona: the saved search filters on wanting children, so this has to be
// unambiguous rather than merely open to it.
wants_kids_strength: 3,
is_smoker: false,
drinks_per_month: 3,
interests: ['Mountaineering', 'Vegan cooking', 'Climate science', 'Trail running'],
causes: ['Climate', 'Animal welfare'],
work: ['Science', 'Research'],
links: {site: 'juliensarr.fr', github: 'jsarr'},
photoCount: 3,
},
]