@gonzih/meet-the-one-ai 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +41 -0
- package/.node-version +1 -0
- package/basis/BERNAYS.md +233 -0
- package/basis/FOUNDING_TRANSCRIPT.md +218 -0
- package/basis/TECH_SPEC.md +303 -0
- package/basis/VALS.md +255 -0
- package/basis/layers/L1_IDENTITY_AUTH.md +78 -0
- package/basis/layers/L2_CONVERSATION.md +159 -0
- package/basis/layers/L3_RECORDING_STORE.md +104 -0
- package/basis/layers/L4_ANALYSIS_PIPELINE.md +257 -0
- package/basis/layers/L5_MATCHING_ENGINE.md +164 -0
- package/basis/layers/L6_CONSENT_INTRODUCTION.md +143 -0
- package/basis/layers/L7_PORTABLE_IDENTITY.md +139 -0
- package/basis/layers/STACK.md +64 -0
- package/basis/schema.sql +203 -0
- package/dist/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +114 -0
- package/dist/agent.js.map +1 -0
- package/dist/api/routes/auth.d.ts +2 -0
- package/dist/api/routes/auth.d.ts.map +1 -0
- package/dist/api/routes/auth.js +79 -0
- package/dist/api/routes/auth.js.map +1 -0
- package/dist/api/routes/identity.d.ts +2 -0
- package/dist/api/routes/identity.d.ts.map +1 -0
- package/dist/api/routes/identity.js +92 -0
- package/dist/api/routes/identity.js.map +1 -0
- package/dist/api/routes/text-submission.d.ts +2 -0
- package/dist/api/routes/text-submission.d.ts.map +1 -0
- package/dist/api/routes/text-submission.js +56 -0
- package/dist/api/routes/text-submission.js.map +1 -0
- package/dist/api/webhooks/twilio.d.ts +2 -0
- package/dist/api/webhooks/twilio.d.ts.map +1 -0
- package/dist/api/webhooks/twilio.js +144 -0
- package/dist/api/webhooks/twilio.js.map +1 -0
- package/dist/api/webhooks/vapi.d.ts +2 -0
- package/dist/api/webhooks/vapi.d.ts.map +1 -0
- package/dist/api/webhooks/vapi.js +177 -0
- package/dist/api/webhooks/vapi.js.map +1 -0
- package/dist/bot.d.ts +3 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +39 -0
- package/dist/bot.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/compact-identity.d.ts +2 -0
- package/dist/jobs/compact-identity.d.ts.map +1 -0
- package/dist/jobs/compact-identity.js +159 -0
- package/dist/jobs/compact-identity.js.map +1 -0
- package/dist/jobs/consent-call.d.ts +2 -0
- package/dist/jobs/consent-call.d.ts.map +1 -0
- package/dist/jobs/consent-call.js +70 -0
- package/dist/jobs/consent-call.js.map +1 -0
- package/dist/jobs/export-identity.d.ts +2 -0
- package/dist/jobs/export-identity.d.ts.map +1 -0
- package/dist/jobs/export-identity.js +129 -0
- package/dist/jobs/export-identity.js.map +1 -0
- package/dist/jobs/introduction-call.d.ts +2 -0
- package/dist/jobs/introduction-call.d.ts.map +1 -0
- package/dist/jobs/introduction-call.js +86 -0
- package/dist/jobs/introduction-call.js.map +1 -0
- package/dist/jobs/reanalyze-identity.d.ts +2 -0
- package/dist/jobs/reanalyze-identity.d.ts.map +1 -0
- package/dist/jobs/reanalyze-identity.js +56 -0
- package/dist/jobs/reanalyze-identity.js.map +1 -0
- package/dist/jobs/run-matching.d.ts +2 -0
- package/dist/jobs/run-matching.d.ts.map +1 -0
- package/dist/jobs/run-matching.js +200 -0
- package/dist/jobs/run-matching.js.map +1 -0
- package/dist/jobs/scheduled-matching.d.ts +2 -0
- package/dist/jobs/scheduled-matching.d.ts.map +1 -0
- package/dist/jobs/scheduled-matching.js +44 -0
- package/dist/jobs/scheduled-matching.js.map +1 -0
- package/dist/jobs/transcribe-session.d.ts +2 -0
- package/dist/jobs/transcribe-session.d.ts.map +1 -0
- package/dist/jobs/transcribe-session.js +66 -0
- package/dist/jobs/transcribe-session.js.map +1 -0
- package/dist/lib/anthropic.d.ts +4 -0
- package/dist/lib/anthropic.d.ts.map +1 -0
- package/dist/lib/anthropic.js +32 -0
- package/dist/lib/anthropic.js.map +1 -0
- package/dist/lib/config.d.ts +57 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +73 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/deepgram.d.ts +15 -0
- package/dist/lib/deepgram.d.ts.map +1 -0
- package/dist/lib/deepgram.js +37 -0
- package/dist/lib/deepgram.js.map +1 -0
- package/dist/lib/inngest.d.ts +42 -0
- package/dist/lib/inngest.d.ts.map +1 -0
- package/dist/lib/inngest.js +7 -0
- package/dist/lib/inngest.js.map +1 -0
- package/dist/lib/openai.d.ts +3 -0
- package/dist/lib/openai.d.ts.map +1 -0
- package/dist/lib/openai.js +13 -0
- package/dist/lib/openai.js.map +1 -0
- package/dist/lib/prompts.d.ts +8 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +258 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/r2.d.ts +7 -0
- package/dist/lib/r2.d.ts.map +1 -0
- package/dist/lib/r2.js +49 -0
- package/dist/lib/r2.js.map +1 -0
- package/dist/lib/session-helpers.d.ts +8 -0
- package/dist/lib/session-helpers.d.ts.map +1 -0
- package/dist/lib/session-helpers.js +31 -0
- package/dist/lib/session-helpers.js.map +1 -0
- package/dist/lib/supabase.d.ts +2 -0
- package/dist/lib/supabase.d.ts.map +1 -0
- package/dist/lib/supabase.js +11 -0
- package/dist/lib/supabase.js.map +1 -0
- package/dist/lib/twilio.d.ts +7 -0
- package/dist/lib/twilio.d.ts.map +1 -0
- package/dist/lib/twilio.js +34 -0
- package/dist/lib/twilio.js.map +1 -0
- package/dist/lib/vapi.d.ts +4 -0
- package/dist/lib/vapi.d.ts.map +1 -0
- package/dist/lib/vapi.js +59 -0
- package/dist/lib/vapi.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +177 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/types/index.d.ts +104 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +28 -0
- package/railway.json +14 -0
- package/src/agent.ts +123 -0
- package/src/api/routes/auth.ts +95 -0
- package/src/api/routes/identity.ts +112 -0
- package/src/api/routes/text-submission.ts +64 -0
- package/src/api/webhooks/twilio.ts +181 -0
- package/src/api/webhooks/vapi.ts +219 -0
- package/src/bot.ts +44 -0
- package/src/index.ts +11 -0
- package/src/jobs/compact-identity.ts +211 -0
- package/src/jobs/consent-call.ts +87 -0
- package/src/jobs/export-identity.ts +166 -0
- package/src/jobs/introduction-call.ts +101 -0
- package/src/jobs/reanalyze-identity.ts +65 -0
- package/src/jobs/run-matching.ts +243 -0
- package/src/jobs/scheduled-matching.ts +59 -0
- package/src/jobs/transcribe-session.ts +77 -0
- package/src/lib/anthropic.ts +37 -0
- package/src/lib/config.ts +81 -0
- package/src/lib/deepgram.ts +57 -0
- package/src/lib/inngest.ts +33 -0
- package/src/lib/openai.ts +14 -0
- package/src/lib/prompts.ts +266 -0
- package/src/lib/r2.ts +79 -0
- package/src/lib/session-helpers.ts +37 -0
- package/src/lib/supabase.ts +15 -0
- package/src/lib/twilio.ts +49 -0
- package/src/lib/vapi.ts +80 -0
- package/src/mcp-server.ts +195 -0
- package/src/types/index.ts +146 -0
- package/supabase/.branches/_current_branch +1 -0
- package/supabase/.temp/cli-latest +1 -0
- package/supabase/.temp/gotrue-version +1 -0
- package/supabase/.temp/pooler-url +1 -0
- package/supabase/.temp/postgres-version +1 -0
- package/supabase/.temp/project-ref +1 -0
- package/supabase/.temp/rest-version +1 -0
- package/supabase/.temp/storage-migration +1 -0
- package/supabase/.temp/storage-version +1 -0
- package/supabase/config.toml +384 -0
- package/supabase/migrations/20260303000000_initial_schema.sql +203 -0
- package/supabase/migrations/20260304000000_brand_consents.sql +13 -0
- package/tsconfig.json +25 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# meet-the-one.ai — Technical Specification
|
|
2
|
+
|
|
3
|
+
**Version:** 0.1 (from founding session)
|
|
4
|
+
**North star:** Life as adventure. Expand the journey. Soul x-ray at global scale.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## System Overview
|
|
9
|
+
|
|
10
|
+
Phone-based AI captures the unconscious psyche through ongoing conversation. Compacts it into a dense identity profile with relationship modality weightings. Matches globally across profiles. Gates introduction behind mutual consent. No photos. No swiping. No appearance data at any point.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
PHONE CALL / VOICE INPUT
|
|
14
|
+
↓
|
|
15
|
+
CONVERSATION LLM
|
|
16
|
+
(knows only you)
|
|
17
|
+
↓
|
|
18
|
+
RECORDING STORE
|
|
19
|
+
↓
|
|
20
|
+
ANALYSIS PIPELINE
|
|
21
|
+
(separate process)
|
|
22
|
+
↓
|
|
23
|
+
COMPACTED IDENTITY
|
|
24
|
+
+ MODALITY WEIGHTS
|
|
25
|
+
↓
|
|
26
|
+
MATCHING ENGINE
|
|
27
|
+
(separate LLM)
|
|
28
|
+
↓
|
|
29
|
+
CANDIDATE SHORTLIST
|
|
30
|
+
↓
|
|
31
|
+
MATCH VALIDATION LOOP
|
|
32
|
+
↓
|
|
33
|
+
MUTUAL CONSENT GATE
|
|
34
|
+
(system calls both)
|
|
35
|
+
↓
|
|
36
|
+
INTRODUCTION CALL
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Layer 1 — Identity & Auth
|
|
42
|
+
|
|
43
|
+
**Mechanism:**
|
|
44
|
+
- User submits phone number + email
|
|
45
|
+
- Verified via SMS and/or email
|
|
46
|
+
- Phone number = persistent identity key. Not username. Not email. The number.
|
|
47
|
+
- No profile picture. No display name required. Number IS the identity anchor.
|
|
48
|
+
|
|
49
|
+
**Why phone:**
|
|
50
|
+
- Phone is real. Hard to fake at scale.
|
|
51
|
+
- Enables system-initiated calls (outbound, not just inbound)
|
|
52
|
+
- Creates friction that filters out low-intent users
|
|
53
|
+
- Voice is the primary modality — phone makes it native
|
|
54
|
+
|
|
55
|
+
**Identity persistence:**
|
|
56
|
+
- User can call the system at any time — not just scheduled intake
|
|
57
|
+
- Every interaction appends to their identity record
|
|
58
|
+
- Identity grows continuously, never frozen
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Layer 2 — Conversation (Intake LLM)
|
|
63
|
+
|
|
64
|
+
**What it is:**
|
|
65
|
+
A persistent AI conversational partner. Calls the user for first intake. Available for ongoing calls at any hour — especially encouraged at 4AM when defenses are down and the real self speaks.
|
|
66
|
+
|
|
67
|
+
**Isolation principle:**
|
|
68
|
+
This LLM has ZERO access to other users' profiles or the matching engine. It knows only the person it's talking to. No contamination. The conversation is a safe container.
|
|
69
|
+
|
|
70
|
+
**Input modalities accepted:**
|
|
71
|
+
- Voice (primary — phone call)
|
|
72
|
+
- Text input (async, between calls)
|
|
73
|
+
- Books / podcasts / media as signal ("tell me what you've been reading")
|
|
74
|
+
- Written reflections, journals, dreams
|
|
75
|
+
- Symbolic / projective prompts (see below)
|
|
76
|
+
|
|
77
|
+
**Projective elicitation techniques:**
|
|
78
|
+
The system does NOT ask direct questions like "what kind of relationship do you want?" It reaches for the unconscious:
|
|
79
|
+
- "Close your eyes. Imagine a big white empty space. What's the first thing that comes to mind?"
|
|
80
|
+
- "Imagine a big empty black space. What do you feel?"
|
|
81
|
+
- "Tell me about a moment you felt completely free."
|
|
82
|
+
- "What are you most afraid of in another person?"
|
|
83
|
+
- Symbols that emerge — scary or joyful? Constrictive or expansive?
|
|
84
|
+
|
|
85
|
+
**Indirect behavioral signals captured:**
|
|
86
|
+
- Do you travel? Do you have a passport?
|
|
87
|
+
- How do you text — exclamation points, ellipses, no punctuation?
|
|
88
|
+
- Do you have a dog? What's your living situation?
|
|
89
|
+
- Are you a yes-person or a no-person?
|
|
90
|
+
- Energy level — are you depleted or running hot?
|
|
91
|
+
|
|
92
|
+
**World-view bifurcation questions (the big sorts):**
|
|
93
|
+
- Is the world fundamentally a dangerous place or an adventurous place?
|
|
94
|
+
- Do you think people are fundamentally good or fundamentally bad?
|
|
95
|
+
|
|
96
|
+
These two questions split the user population into incompatible universes. Person who says dangerous + bad will not be matched with person who says adventurous + good. Non-negotiable incompatibility.
|
|
97
|
+
|
|
98
|
+
**Conversation style:**
|
|
99
|
+
Open-ended. Never leading. Pattern recognition happens underneath — not in the questions themselves. The machine asks; the interpretation is silent.
|
|
100
|
+
|
|
101
|
+
**4AM principle:**
|
|
102
|
+
The system actively encourages off-hours contact. That's when masks come off. The recordings from those sessions carry higher signal weight in analysis.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Layer 3 — Recording Store
|
|
107
|
+
|
|
108
|
+
**What gets stored:**
|
|
109
|
+
- Raw audio of every call (full fidelity)
|
|
110
|
+
- Transcripts (auto-generated, appended per session)
|
|
111
|
+
- Text inputs, written submissions
|
|
112
|
+
- Metadata: timestamp, session duration, time-of-day, call frequency
|
|
113
|
+
|
|
114
|
+
**Separation principle:**
|
|
115
|
+
Recording and analysis are decoupled. Raw recordings are immutable artifacts. Analysis runs as a separate downstream process — never modifies the raw store.
|
|
116
|
+
|
|
117
|
+
**Why this matters:**
|
|
118
|
+
Analysis models will improve. Raw data can be re-analyzed with better models. The recordings are the ground truth.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Layer 4 — Analysis Pipeline (Identity Compaction)
|
|
123
|
+
|
|
124
|
+
**What it does:**
|
|
125
|
+
Takes raw recordings + transcripts → produces a compacted identity artifact.
|
|
126
|
+
|
|
127
|
+
**Two outputs per person:**
|
|
128
|
+
|
|
129
|
+
### A. Base Identity Profile
|
|
130
|
+
Dense psychographic summary across four domains:
|
|
131
|
+
1. **Relationships** — attachment style, trust patterns, conflict behavior, depth vs breadth orientation
|
|
132
|
+
2. **Sex / desire** — expressed and inferred desire patterns, kink/vanilla spectrum, body relationship, shame vs sovereignty signals
|
|
133
|
+
3. **Money** — relationship to abundance/scarcity, risk tolerance, ambition vs contentment, financial mythology active
|
|
134
|
+
4. **Health** — energy patterns, self-care orientation, physicality, mortality relationship
|
|
135
|
+
|
|
136
|
+
Applied frameworks (invisible to user, embedded in analysis):
|
|
137
|
+
- VALS-style psychographic layer (Innovator/Experiencer/Achiever/Believer etc)
|
|
138
|
+
- Eight Games diagnostic (which games are active — world-as-dangerous = Game 1, world-as-adventure = Game 8)
|
|
139
|
+
- World-view bifurcations (people = good/bad, world = safe/adventurous)
|
|
140
|
+
- Symbolic brain signals (what symbols appeared in projective prompts, fear vs joy valence)
|
|
141
|
+
|
|
142
|
+
### B. Relationship Modality Weights
|
|
143
|
+
Not a single pick. A weighted distribution across all modalities.
|
|
144
|
+
|
|
145
|
+
**Current modality set:**
|
|
146
|
+
- `long-term` — serious romantic, life-partner oriented
|
|
147
|
+
- `casual` — hookup, low-commitment, physical-first
|
|
148
|
+
- `kink` — fetish/BDSM/desire-specific community
|
|
149
|
+
- `open-relationship` — committed primary + sexual openness
|
|
150
|
+
- `polyamory` — multiple simultaneous romantic connections
|
|
151
|
+
- `swinging` — couples-focused sexual exploration
|
|
152
|
+
- `friends` — platonic, activity-based, adventure-oriented
|
|
153
|
+
- `[modalities expand as user base reveals new patterns]`
|
|
154
|
+
|
|
155
|
+
**Example output:**
|
|
156
|
+
```
|
|
157
|
+
modality_weights: {
|
|
158
|
+
long-term: 0.65,
|
|
159
|
+
open-relationship: 0.20,
|
|
160
|
+
friends: 0.10,
|
|
161
|
+
casual: 0.05
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Dual-track classification:**
|
|
166
|
+
- User may explicitly state modality intent at any point
|
|
167
|
+
- System always infers regardless — inference runs continuously
|
|
168
|
+
- Declared intent = one data point, weighted with others
|
|
169
|
+
- Inference can diverge from declaration — that divergence is itself signal
|
|
170
|
+
- Weights update as new conversation data arrives — identity is never frozen
|
|
171
|
+
|
|
172
|
+
**Compaction is modality-aware:**
|
|
173
|
+
The same base identity gets re-rendered through each modality the person meaningfully leans into. Different emphasis per lens. A person's 0.65 long-term profile emphasizes attachment, depth, values alignment. Their 0.20 open-relationship profile emphasizes autonomy signals, boundary clarity, jealousy patterns.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Layer 5 — Matching Engine
|
|
178
|
+
|
|
179
|
+
**Isolation principle:**
|
|
180
|
+
Entirely separate LLM from the Conversation LLM. No shared context. The matching engine sees compacted profiles only — never raw recordings, never conversation transcripts.
|
|
181
|
+
|
|
182
|
+
**Step 1 — Vector Distance**
|
|
183
|
+
Compacted identity profiles embedded as vectors. Distance calculation across the full user graph. Per-modality sub-spaces — distances computed within modality lens, weighted by that person's modality weight.
|
|
184
|
+
|
|
185
|
+
**Step 2 — Candidate Shortlist**
|
|
186
|
+
Top N candidates per modality per person. Not a single ranked list — a modality-aware shortlist. Cross-modality candidates included where vector proximity is high despite different primary modality.
|
|
187
|
+
|
|
188
|
+
**Step 3 — LLM Validation Loop**
|
|
189
|
+
For each candidate pair: deep LLM analysis. Not just vector similarity — qualitative match assessment.
|
|
190
|
+
- Are world-view bifurcations compatible? (dangerous/adventurous, good/bad)
|
|
191
|
+
- VALS-type compatibility — do their resource levels and primary motivations work together?
|
|
192
|
+
- Modality compatibility — if cross-modality, is there genuine bridge or fundamental mismatch?
|
|
193
|
+
- Data sufficiency check — do we have enough signal on both people to be confident?
|
|
194
|
+
- If insufficient data: match deferred, not surfaced yet. System prompts more conversation from that person.
|
|
195
|
+
|
|
196
|
+
**Step 4 — Match Confirmation**
|
|
197
|
+
Match cleared when:
|
|
198
|
+
- Vector proximity above threshold
|
|
199
|
+
- LLM validation passes
|
|
200
|
+
- Data sufficiency confirmed on both sides
|
|
201
|
+
|
|
202
|
+
**Output:** 5–10 confirmed matches per person, ranked by confidence, tagged by modality.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Layer 6 — Consent Gate & Introduction
|
|
207
|
+
|
|
208
|
+
**Step 1 — System calls Person A**
|
|
209
|
+
Outbound call. No app notification, no email. A call.
|
|
210
|
+
- Gives context about the match: general description, shared resonances, modality alignment
|
|
211
|
+
- Does NOT reveal: name, location, appearance, identifying details
|
|
212
|
+
- Asks: "Would you like to be introduced to this person?"
|
|
213
|
+
|
|
214
|
+
**Step 2 — System calls Person B**
|
|
215
|
+
Same process, independently. Same rules.
|
|
216
|
+
|
|
217
|
+
**Step 3 — Both say yes**
|
|
218
|
+
Introduction call scheduled. System coordinates.
|
|
219
|
+
|
|
220
|
+
**Step 4 — Introduction call**
|
|
221
|
+
Both people on a call together. System may facilitate opening or drop off.
|
|
222
|
+
- No profiles exchanged beforehand
|
|
223
|
+
- No photos
|
|
224
|
+
- Just two people who the AI decided vibrate at the same frequency
|
|
225
|
+
|
|
226
|
+
**If either says no:** Match closed for that pair. Neither person knows the other declined.
|
|
227
|
+
|
|
228
|
+
**Cross-modality framing:**
|
|
229
|
+
When surfacing a cross-modality match, the system frames it as expansion, not confusion:
|
|
230
|
+
"This person is primarily oriented toward [X], but there's something here that might interest you. You don't have to decide what it means — just have the conversation."
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Layer 7 — Portable Identity
|
|
235
|
+
|
|
236
|
+
**The user owns their compacted identity.**
|
|
237
|
+
|
|
238
|
+
Export format: structured markdown files (or equivalent open format).
|
|
239
|
+
|
|
240
|
+
**Four-domain identity file:**
|
|
241
|
+
```
|
|
242
|
+
/identity/
|
|
243
|
+
relationships.md
|
|
244
|
+
desire.md
|
|
245
|
+
money.md
|
|
246
|
+
health.md
|
|
247
|
+
modality_weights.json
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Why this matters:**
|
|
251
|
+
- Trust mechanic — platform can't hold you hostage
|
|
252
|
+
- Differentiation — no other platform offers this
|
|
253
|
+
- Vision: identity becomes a portable credential across platforms, verticals, future systems
|
|
254
|
+
- Most users won't export it — doesn't matter. The OPTION is the message.
|
|
255
|
+
|
|
256
|
+
**Vertical architecture:**
|
|
257
|
+
Same identity graph powers multiple brand surfaces:
|
|
258
|
+
- meet-the-one (flagship — long-term, soul-level)
|
|
259
|
+
- [casual brand TBD]
|
|
260
|
+
- [kink brand TBD]
|
|
261
|
+
- [adventure/friends brand TBD]
|
|
262
|
+
- [open/poly brand TBD]
|
|
263
|
+
|
|
264
|
+
One identity. Multiple fishing nets. User builds once, system applies everywhere they consent to.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Key Design Principles
|
|
269
|
+
|
|
270
|
+
**Voice-first.** Not app-first. Phone call is the primary interface. Intentional friction = signal of intent. Anyone willing to answer a call from an AI is serious.
|
|
271
|
+
|
|
272
|
+
**Separation of concerns.**
|
|
273
|
+
- Conversation LLM ≠ Matching LLM
|
|
274
|
+
- Recording ≠ Analysis
|
|
275
|
+
- Base identity ≠ Modality-weighted profile
|
|
276
|
+
- No layer has more access than it needs.
|
|
277
|
+
|
|
278
|
+
**Inference over declaration.**
|
|
279
|
+
User-stated intent is a data point, not the truth. The system always infers. Divergence between stated and inferred is itself high-value signal.
|
|
280
|
+
|
|
281
|
+
**Continuous identity.**
|
|
282
|
+
Not a one-time intake. Not a profile you fill out. A living record that grows every time the person talks. The longer they engage, the better the matches.
|
|
283
|
+
|
|
284
|
+
**Appearance-blind matching.**
|
|
285
|
+
No photos. No physical description. Not at any point in the matching pipeline. Introduction happens before appearance is known.
|
|
286
|
+
|
|
287
|
+
**Mutual consent gate.**
|
|
288
|
+
Both people must say yes. Neither knows if the other declined. Clean.
|
|
289
|
+
|
|
290
|
+
**Life as adventure.**
|
|
291
|
+
The system actively expands people's sense of what's possible. Cross-modality matches surfaced as invitations, not mismatches. The platform grows with the person.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Open Questions (to resolve)
|
|
296
|
+
|
|
297
|
+
1. **Language / cultural matching** — how to handle global user base across languages? Translate to common embedding space? Language-specific sub-models?
|
|
298
|
+
2. **Modality discovery** — as user base grows, new modality clusters will emerge organically. How to detect and formalize them?
|
|
299
|
+
3. **Data sufficiency threshold** — how much conversation before first match attempt? Minimum signal floor?
|
|
300
|
+
4. **Re-matching** — if introduction call leads nowhere, how does system learn? Feedback loop from outcome back into matching weights?
|
|
301
|
+
5. **Vertical brand architecture** — separate phone numbers per brand? Single number with brand context set at call start?
|
|
302
|
+
6. **Business model** — subscription per vertical? One identity subscription that unlocks all verticals? Per-introduction fee?
|
|
303
|
+
7. **Safety** — how to handle bad actors, harassment post-introduction, identity fraud?
|
package/basis/VALS.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# VALS — Values and Lifestyles Framework
|
|
2
|
+
|
|
3
|
+
Source: https://en.wikipedia.org/wiki/VALS
|
|
4
|
+
|
|
5
|
+
**Psychographic segmentation system. Built in 1978 at SRI International. Used to elect presidents. Anchors market targeting in psychological drivers, not demographics. Still the gold standard for predicting consumer behavior from inner values.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Origin
|
|
10
|
+
|
|
11
|
+
**Developer:** Arnold Mitchell — social scientist and consumer futurist
|
|
12
|
+
**Institution:** SRI International (Stanford Research Institute)
|
|
13
|
+
**Year:** 1978
|
|
14
|
+
**Revised:** VALS2, 1989
|
|
15
|
+
|
|
16
|
+
**Intellectual foundations:**
|
|
17
|
+
- Abraham Maslow — hierarchy of needs (what drives human motivation at different resource levels)
|
|
18
|
+
- David Riesman (Harvard sociologist) — consumer typologies
|
|
19
|
+
- Freudian/psychoanalytic consumer psychology
|
|
20
|
+
|
|
21
|
+
**Problem it solved:** Demographic-only research (age, income, gender) failed to explain WHY consumers chose. VALS anchored segmentation in psychological drivers — beliefs, aspirations, risk attitudes, lifestyle orientation — dramatically improving predictive power.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Original VALS1 (1978) — Nine Types, Four Categories
|
|
26
|
+
|
|
27
|
+
Organized as developmental hierarchy: Need-Driven → Outer-Directed → Inner-Directed → Integrated
|
|
28
|
+
|
|
29
|
+
Development is additive — "like layers of an onion." Higher stages don't eliminate earlier values, they integrate them.
|
|
30
|
+
|
|
31
|
+
### Need-Driven
|
|
32
|
+
| Type | % | Description |
|
|
33
|
+
|------|---|-------------|
|
|
34
|
+
| Survivors | 4% | Most disadvantaged: poverty, old age, low education. Oriented to tradition, marked by despair. Live day-to-day. |
|
|
35
|
+
| Sustainers | 7% | Struggling at poverty's edge. Younger than Survivors, more hopeful. Street-wise. Some operate in underground economy. |
|
|
36
|
+
|
|
37
|
+
### Outer-Directed
|
|
38
|
+
| Type | % | Description |
|
|
39
|
+
|------|---|-------------|
|
|
40
|
+
| Belongers | 35–39% | Society's stabilizers. Conservative, conventional, family-focused, conformist. **Largest single group.** |
|
|
41
|
+
| Emulators | 8–9% | Upwardly mobile, status-conscious. Seek to emulate Achievers. ~24% from minority backgrounds. |
|
|
42
|
+
| Achievers | 20–22% | Business and professional leaders. Materialistic, efficient, self-reliant. Satisfied with the system. |
|
|
43
|
+
|
|
44
|
+
### Inner-Directed
|
|
45
|
+
| Type | % | Description |
|
|
46
|
+
|------|---|-------------|
|
|
47
|
+
| I-Am-Me | 3–5% | Transitional (outer→inner). Young, individualistic, narcissistic, impulsive, dramatic. |
|
|
48
|
+
| Experientials | 6–7% | Seek direct experience and vigorous involvement. Artistic, attracted to exotic and spiritual. **Most inner-directed of any group.** |
|
|
49
|
+
| Societally Conscious | 9–11% | Activist, knowledgeable. Extend inner-direction to societal responsibility. Drawn to conservation, simple living. |
|
|
50
|
+
|
|
51
|
+
### Integrated (Combined)
|
|
52
|
+
| Type | % | Description |
|
|
53
|
+
|------|---|-------------|
|
|
54
|
+
| Integrateds | 2% | "Rare people" — meld Outer-Direction power with Inner-Direction sensitivity. Psychologically mature, self-actualizing. |
|
|
55
|
+
|
|
56
|
+
**Hard times behavioral note:** Economic difficulty → Emulators and I-Am-Me types decline, Belongers expand, Societally Conscious grows. Need-Driven remains stable longer than expected.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## VALS2 (1989) — Why the Rebuild
|
|
61
|
+
|
|
62
|
+
Problem: Societal values shift too fast. The original 9-segment assumptions dated quickly.
|
|
63
|
+
|
|
64
|
+
Solution: Two-year rebuild (SRI International + Stanford + UC Berkeley). Key finding: **psychological traits are more stable than societal trends.** Rebuilt around enduring psychological characteristics.
|
|
65
|
+
|
|
66
|
+
Result: 8 segments, two stable dimensions.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## VALS2 Framework — Two Dimensions
|
|
71
|
+
|
|
72
|
+
### Vertical: Resources
|
|
73
|
+
Degree of resource access and capacity to act on motivation.
|
|
74
|
+
|
|
75
|
+
Includes:
|
|
76
|
+
- Income, education
|
|
77
|
+
- Self-confidence, intelligence, leadership
|
|
78
|
+
- Energy, interpersonal skills
|
|
79
|
+
- Inventiveness, eagerness to buy
|
|
80
|
+
- Material means / social position
|
|
81
|
+
|
|
82
|
+
High resources = more capacity to act on primary motivation.
|
|
83
|
+
|
|
84
|
+
### Horizontal: Primary Motivation (3 types)
|
|
85
|
+
|
|
86
|
+
**IDEALS** — guided by knowledge and principles
|
|
87
|
+
→ Thinkers (high resource), Believers (low resource)
|
|
88
|
+
|
|
89
|
+
**ACHIEVEMENT** — success demonstrated to peers
|
|
90
|
+
→ Achievers (high resource), Strivers (low resource)
|
|
91
|
+
|
|
92
|
+
**SELF-EXPRESSION** — desire for social/physical activity, variety, risk
|
|
93
|
+
→ Experiencers (high resource), Makers (low resource)
|
|
94
|
+
|
|
95
|
+
**Outside the grid:**
|
|
96
|
+
- Innovators — resources so high they transcend all categories
|
|
97
|
+
- Survivors — resources so low they fall below the grid
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## The Eight Segments
|
|
102
|
+
|
|
103
|
+
### INNOVATORS (above the grid — highest resources)
|
|
104
|
+
- Highest incomes of all segments
|
|
105
|
+
- High self-esteem; abundant material, social, psychological resources
|
|
106
|
+
- Leading edge of change; early adopters of technology and ideas
|
|
107
|
+
- Independent decision-makers
|
|
108
|
+
- Image matters as expression of taste and character — NOT status demonstration
|
|
109
|
+
- Consumer choices: "finer things in life"
|
|
110
|
+
- Sophisticated tastes; receptive to new ideas
|
|
111
|
+
- Seek quality and "best" solutions
|
|
112
|
+
|
|
113
|
+
**Dating profile equivalent:** Global perspective, values authenticity over performance, buys experience not products, independent thinker, early adopter of new connection paradigms
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### THINKERS (high resource, ideals-motivated)
|
|
118
|
+
- Mature, responsible, well-educated professionals
|
|
119
|
+
- Leisure centered on home; well-informed about world
|
|
120
|
+
- Open to new ideas and social change
|
|
121
|
+
- High income but **practical, rational decision-makers**
|
|
122
|
+
- Value knowledge, responsibility, deliberation
|
|
123
|
+
- Prefer proven value and substantive information
|
|
124
|
+
- Seek durability, functionality, value
|
|
125
|
+
|
|
126
|
+
**Dating profile equivalent:** Cerebral, well-read, makes decisions slowly, wants depth over novelty, values shared intellectual framework, doesn't swipe impulsively
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
### BELIEVERS (low resource, ideals-motivated)
|
|
131
|
+
- Conservative, community-oriented
|
|
132
|
+
- Values: familiarity, tradition, trust, established institutions
|
|
133
|
+
- Life centered on family, place of worship, community, nation
|
|
134
|
+
- Predictable, routine consumption
|
|
135
|
+
- Strong brand loyalty; resistant to innovation
|
|
136
|
+
- Effective word-of-mouth advocates (trust other consumers over their own judgment)
|
|
137
|
+
- Moderate income
|
|
138
|
+
|
|
139
|
+
**Dating profile equivalent:** Wants commitment and stability, community approval matters, relationship must fit existing life structure, family-first orientation
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
### ACHIEVERS (high resource, achievement-motivated)
|
|
144
|
+
- Successful, work-oriented; satisfaction from jobs and families
|
|
145
|
+
- Politically conservative; respect authority and status quo
|
|
146
|
+
- Favor premium established brands signaling success to peers
|
|
147
|
+
- Quick to embrace upstart brands that promise to become the new establishment
|
|
148
|
+
- Goal-oriented; prize predictability, stability
|
|
149
|
+
- High resources
|
|
150
|
+
|
|
151
|
+
**Dating profile equivalent:** Success-signaling matters, partner as part of life narrative, status-conscious, values ambition in a partner, career + family as dual achievement
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### STRIVERS (low resource, achievement-motivated)
|
|
156
|
+
- Values identical to Achievers, fewer resources
|
|
157
|
+
- **Style is extremely important** — emulating admired people
|
|
158
|
+
- Can transition to Achiever if resources increase
|
|
159
|
+
- Low income, low educational attainment
|
|
160
|
+
|
|
161
|
+
**Dating profile equivalent:** Aspirational, looks matter as proxy for status, fashion-conscious, attracted to successful partners as upward mobility signal
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### EXPERIENCERS (high resource, self-expression-motivated)
|
|
166
|
+
- **Youngest segment — median age 25**
|
|
167
|
+
- High energy poured into physical exercise and social activities
|
|
168
|
+
- Early adopters; avid consumers
|
|
169
|
+
- Heavy spending: clothing, fast food, music, youthful products
|
|
170
|
+
- Novelty-driven, risk-taking, variety-seeking
|
|
171
|
+
- Social and physical activity prioritized
|
|
172
|
+
|
|
173
|
+
**Dating profile equivalent:** 4AM conversations, adventure-first, anti-swiping because it's boring, wants chemistry and intensity, early adopter of unconventional relationship structures
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### MAKERS (low resource, self-expression-motivated)
|
|
178
|
+
- Practical; value self-sufficiency
|
|
179
|
+
- Self-expression via building better home/family — not spending
|
|
180
|
+
- Focused on familiar: family, work, physical recreation
|
|
181
|
+
- Little interest in the broader world
|
|
182
|
+
- Skilled trades; hands-on orientation
|
|
183
|
+
|
|
184
|
+
**Dating profile equivalent:** Wants partner in building something tangible together, not interested in global or abstract, values reliability and physical competence, anti-glamour
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### SURVIVORS (below the grid — lowest resources)
|
|
189
|
+
- **Oldest segment — median age 61**
|
|
190
|
+
- Lowest incomes
|
|
191
|
+
- Too few resources to express primary motivation
|
|
192
|
+
- Complacent; live within their means
|
|
193
|
+
- Not likely to adopt innovation
|
|
194
|
+
- **Strong brand loyalty** — structural (risk aversion from scarcity), not preference
|
|
195
|
+
|
|
196
|
+
**Dating profile equivalent:** Safety over excitement, established routines, resistance to change, loyalty once trust established
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Methodology
|
|
201
|
+
|
|
202
|
+
**Survey instrument:** Proprietary VALS Survey — attitudinal and demographic questions
|
|
203
|
+
**Output:** VALS type assignment
|
|
204
|
+
**Algorithm:** Scores for Ideals / Achievement / Self-Expression orientations combined with resource index → segment classification
|
|
205
|
+
**Scoring dimensions:** Energy, self-confidence, intellectualism, novelty seeking, innovativeness, impulsiveness, leadership, vanity + key demographics
|
|
206
|
+
|
|
207
|
+
**Access:** Proprietary; licensed by Strategic Business Insights (SBI), formerly SRI
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## International Versions
|
|
212
|
+
|
|
213
|
+
- U.S. VALS (primary)
|
|
214
|
+
- Japan-VALS (JVALS)
|
|
215
|
+
- U.K. VALS
|
|
216
|
+
- GeoVALS (geographic)
|
|
217
|
+
- iVALS (internet-specific — retired as internet became mainstream)
|
|
218
|
+
|
|
219
|
+
**Countries deployed:** China, Dominican Republic, Japan, Nigeria, United Kingdom, Venezuela
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Applications
|
|
224
|
+
|
|
225
|
+
Originally: Market segmentation, advertising strategy, product development, channel strategy, brand positioning
|
|
226
|
+
|
|
227
|
+
**Historical peak use:** Elected presidents. Used to identify swing voter psychological profiles and craft messaging that spoke to actual values — not demographics.
|
|
228
|
+
|
|
229
|
+
**Core value proposition:** Predict behavior from psychological drivers. Demographics tell you who someone is. VALS tells you why they choose.
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Application to meet-the-one.ai
|
|
234
|
+
|
|
235
|
+
VALS is the **sorting backbone**. Not the product surface — the invisible engine.
|
|
236
|
+
|
|
237
|
+
Key insight Law identified: "Is the world a dangerous place or an adventurous place?" — this is the **single most powerful VALS bifurcation question.**
|
|
238
|
+
|
|
239
|
+
The Achiever won't match with the Experiencer. The Believer won't work with the Innovator long-term. The Striver matches poorly with the Thinker.
|
|
240
|
+
|
|
241
|
+
**Matching logic:**
|
|
242
|
+
- Primary motivation compatibility: Ideals ↔ Ideals, Achievement ↔ Achievement, Self-Expression ↔ Self-Expression (strongest same-axis pulls)
|
|
243
|
+
- Resource delta: small gap = friction, large gap = incompatibility
|
|
244
|
+
- Cross-axis matches possible: Thinker + Achiever (intellectual ambition), Innovator + Experiencer (high-resource adventure)
|
|
245
|
+
|
|
246
|
+
**The VALS x Eight Games integration:**
|
|
247
|
+
- Game 1 dominant = Believers or Strivers (mythology-imprisoned, binary worldview)
|
|
248
|
+
- Game 4 dominant = Thinkers (objectivity mythology, evidence-seeking)
|
|
249
|
+
- Game 5-8 accessible = Innovators, Experiencers (liberation patterns, resources to explore)
|
|
250
|
+
|
|
251
|
+
Voice/language detection maps directly to VALS type:
|
|
252
|
+
- "I did research before deciding" = Thinker
|
|
253
|
+
- "I bought it because it said something about who I am" = Achiever or Striver
|
|
254
|
+
- "I bought it because it was new and I wanted to try it" = Experiencer
|
|
255
|
+
- "I built it myself" = Maker
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Layer 1 — Identity & Auth
|
|
2
|
+
|
|
3
|
+
**Goal:** User submits phone number. System verifies. First outbound call happens within minutes. Zero app install, zero profile form, zero friction.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Entry Point
|
|
8
|
+
|
|
9
|
+
**Single web page. One field. Phone number.**
|
|
10
|
+
|
|
11
|
+
No app download. No account creation form. No password. Mobile browser or desktop — doesn't matter. Just a URL.
|
|
12
|
+
|
|
13
|
+
Optional email field for backup comms. Not required to start.
|
|
14
|
+
|
|
15
|
+
From URL to verified: under 60 seconds. That's the bar.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Phone Verification
|
|
20
|
+
|
|
21
|
+
**Twilio Verify** — SMS OTP.
|
|
22
|
+
|
|
23
|
+
User submits number → SMS with 6-digit code arrives in seconds → user enters code → verified.
|
|
24
|
+
|
|
25
|
+
Fallback for markets where SMS is unreliable (Brazil, India, Middle East, much of Africa):
|
|
26
|
+
**WhatsApp delivery via Twilio** — same OTP, delivered over WhatsApp instead. Massive reach improvement globally.
|
|
27
|
+
|
|
28
|
+
Cost: ~$0.05/verification. Negligible.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Identity Storage
|
|
33
|
+
|
|
34
|
+
**PostgreSQL via Supabase.**
|
|
35
|
+
|
|
36
|
+
`users` table:
|
|
37
|
+
- `id` — UUID, internal identifier
|
|
38
|
+
- `phone_e164` — phone in E.164 format (`+12125551234`). Globally normalized. No ambiguity.
|
|
39
|
+
- `email` — optional
|
|
40
|
+
- `created_at`, `verified_at`
|
|
41
|
+
- `brand` — which vertical/number they came in through
|
|
42
|
+
|
|
43
|
+
Phone stored in E.164 is non-negotiable. International numbers look wildly different in local format. E.164 is the single canonical form.
|
|
44
|
+
|
|
45
|
+
Phone is the functional primary key. UUID is internal. The system thinks in phone numbers.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Auth (Returning Users)
|
|
50
|
+
|
|
51
|
+
No passwords. No OAuth. No magic links.
|
|
52
|
+
|
|
53
|
+
Return visit: enter phone → receive SMS → enter code → in.
|
|
54
|
+
|
|
55
|
+
For outbound calls (system calling user): we already have the number. No auth step needed at all — the system initiates, user just answers.
|
|
56
|
+
|
|
57
|
+
Simple. Stateless. Works globally without localization headaches.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Brand / Vertical Routing
|
|
62
|
+
|
|
63
|
+
Each vertical brand has its own phone number (Twilio number).
|
|
64
|
+
|
|
65
|
+
On signup, `brand` is captured from which number or URL the user came through. Same identity graph underneath — the brand just sets the context lens for conversation and matching.
|
|
66
|
+
|
|
67
|
+
User who signs up through the kink vertical and later calls the flagship number: system sees them, loads their identity, shifts the conversation lens. Identity is portable across brands from day one.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## What We Are NOT Building
|
|
72
|
+
|
|
73
|
+
- Passwords
|
|
74
|
+
- OAuth / social login
|
|
75
|
+
- Profile picture upload
|
|
76
|
+
- Username
|
|
77
|
+
- Display name (optional, added later if needed)
|
|
78
|
+
- Any form beyond phone + optional email
|