mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-07-30 09:48:47 -04:00
- 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`.
773 lines
30 KiB
TypeScript
773 lines
30 KiB
TypeScript
/**
|
||
* 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 18–100, 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 mother’s 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, 24–40, 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* 24–40 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,
|
||
},
|
||
]
|