The new age of dating · intelligence playbook

Your twin dates. You decide.
The mind in between.

Not another swipe app. A second self that learns your voice, lives the small talk, and brings you nights that already earned their place — so connection stops being lottery and starts being honest.

Start with the story Jump to live lab
AI twin · voice-cloned Real-time adaptation Belief × criteria Mutual heat only Info-gain scoring Human-like priors
8
Twin readiness layers
7
Honest night arcs
5
Live feeling meters
4
Date ladder stages
10+
Belief variables
Nights that rewrite the twin

30 seconds · human path

How a Tuesday night works

Four steps. No jargon required. Tap any step to go deeper.

Step 1

You train a twin

Talk with a coach. Record your voice. The twin learns goals, boundaries, and how you sound — not a generic bot.

See readiness →
Step 2

It becomes ready

When the quiet score crosses the line, the twin can date for you. Incomplete stays in training — no half-you in the wild.

Watch the score →
Step 3

A night runs

Live or simulated. Real conversation physics: interest, friction, heat only if mutual. Most nights are ordinary — on purpose.

Honest odds →
Step 4

You decide

Debrief in plain language. See them again, maybe, or walk away. The twin never steals the verdict.

The ladder →
Example. Maya trains twenty minutes, clones her voice, hits ready. Tuesday a sim night runs while she’s asleep — flat, not fake-great. Debrief: potential match on values, low spark. She skips the IRL and saves a night. That is the product.
Play the engines Why this is a step change Full inventory System map Deep dive stays below when you want the math.
Status Live users today Sim dual-AI / sim date Library code exists, not product path Spec research / design Upgrade more advanced than live path if wired
00 · Full intelligence inventory

Everything the mind has — honest about where it runs

One page. EchoDate turn science + ehaio twin product. Filter by status. Phase 1 upgrades are marked.

Live spine ehaio now

What users actually touch.

  • Train coach/twin → dual-write → readiness ≥80
  • Live date: persona + Grok RT / ElevenLabs + extract
  • Sim date: DateDirector arcs · runtime meters · heat · debrief
  • Dashboard next-action priority

Dormant advanced EchoDate surplus

Built or designed; often more advanced than live turn selection.

  • LSM · multi-candidate rerank (nCandidates=0 today)
  • Message-class memory decay · conversational DNA
  • Attraction pre-screen · momentum / plateau
  • CI-gated decision · observer · learning system
Phase 1 (next build): message-class memory → dual-write importance · DNA + personality injection into twin prompts · momentum/plateau on sim debrief · heat summary on live debrief · DatingDecisionEngine on debrief · attraction pre-screen for sim partners. Not on the voice realtime hot path first — sim + debrief + twin prompts first.
01 · Why it matters

What changes when dating has a mind

The step change is not more matches. It is a second self that learns you, speaks as you, and filters reality before you spend a night.

i.

You train a twin

Coach + twin sessions dual-write profile and memory. Readiness is a gate, not a vanity score. Below 80 it trains; at 80+ it dates.

ii.

It lives the small talk

Live dates and dual-AI sims run real conversation physics — arcs, meters, heat, adaptation — while you stay in control of the verdict.

iii.

Truth over fairy dust

Priors are not romantic. Most nights are ordinary. Spark is rare. Flat and friction teach the twin as much as chemistry does.

Product law: Success = felt real. A bad or flat date that shows true fit beats a fake great one. The stack optimizes for honest signal — not engagement theater.
02 · System spine

Architecture of the whole mind

From landing to debrief — every path that fills the twin, runs a night, or grades a match.

Journey spine

You Auth Onboard Voice clone Coach / Twin train Readiness R Live date Sim dual-AI Debrief S1–S4 ladder

Conversation modes Core

Who talks to whom — human-in-loop vs autonomous dual-AI.

ModeYouOther sideVoice
CoachYesPlatform coachGrok RT → EL → local
Twin trainYesYour twinSame stack
Live dateYesGenerated opp. sexRole: date · rotated
Sim dateWatchTwin ↔ personaDual TTS + director

Intelligence engines Full stack

The modules that make a night more than chat.

Readiness· DateDirector· Runtime meters
Heat dynamics· Inference / IG· Decision
Scoring· Extraction· Dual-write memory
Dual-write = every meaningful talk updates agent_profiles + constrained memory categories — preference, boundary, goal, red_flag, dealbreaker…
03 · Twin readiness

When the second self is ready to act

Human-like weights: criteria and values outweigh hobbies. Pick a life — watch R recompute like production.

// readinessCalculator — production weights R = round( Σ ( categoryScore × weight ) ) categoryScore = filled / total × 100 R ≥ 80 → agent_status = active · else training

Life you might live

Field layers inside each weight
Select a life scenario to see how readiness moves when people actually fill a twin.
0
training
04 · Voice & twin synergy

Presence, not a chatbot costume

Clone + conversational DNA + opposite-sex date generation + rotating Grok voices — the twin as a system, not a skin.

You · source of truth

Voice clone Conversational DNA Tone / openings Boundaries Goals & dealbreakers Values · politics · faith

Only your facts dual-write. Date persona never becomes your bio.

synergy map

Night · who they meet

Opp. sex persona Grok ara/eve · leo/rex Extreme-but-plausible vibes Name ↔ gender ↔ voice lock Runtime meters Heat mutual only

Voice rotation keeps the room alive. Gender/voice/name stay coherent — no Rina-with-a-male-voice failures.

Voice path Interactive

Grok Realtime ElevenLabs Local STT/TTS

Women: ara / eve · Men: leo / rex · opposite of user · rotated per session.

Twin synergy score Mapping

synergy ≈ 0.35 voice_presence + 0.25 profile_depth (R) + 0.20 memory_density + 0.20 style_consistency // high synergy = dates feel like *you* showed up

Adaptation loop Real-time

Every turn: intent, energy, friction, consent, topic. The twin steers — more question, more share, cool logistics, or exit gravity — without breaking character.

05 · Real-time conversation physics

Five meters that feel like a night

Interest · chemistry · respect · friction · energy — seeded by arc, moved by each line, pulled by gravity toward truth.

Message deltas Per utterance

disagree → friction +8..10, chem −6 warm + positiveArc → chem +7, interest +5 warm + badArc → only +1 // cannot rescue flat dismiss → interest −12, respect −6 question → energy +3 personal share → respect +3 // arc gravity examples neutral / awkward: energy −2, chem −1 / turn walk_out & turn≥4: interest −5 / turn

Seed by night shape

ArcIntChemRespFricEng
06 · Night arcs

Honest odds before the first word

DateDirector samples a possible truth, then conversation earns it or drifts. Clash, chaos, and seriousness reshape the prior.

BASE_PRIORS Non-fairy-tale

// weighted sample r ~ U(0,1) for arc in priors: r -= p[arc] if r ≤ 0: return arc

Fit modulation

clash ∈ [0,1] // dealbreakers × red flags chaos ∈ {0.25, 0.5, 0.7} seriousness ∈ {0.3, 0.5, 0.8} p.mismatch += clash × 0.20 p.friction += clash × 0.15 p.walk_out += clash × 0.10 p.spark -= clash × 0.12 then renormalize Σp = 1 // anti-streak: two positive nights → damp spark
After two fairy-tale nights, luck dials down — so the feed does not lie about how dating feels.
07 · Information gain intelligence

What is worth asking next

Not every question is equal. IG scoring ranks probes by how much they reduce uncertainty on interest, values, dealbreakers, overlooks, and timing — vs small talk noise.

IG objective Belief × criteria era

IG(q | state) ≈ H(beliefs) − E[ H(beliefs | answer to q) ] weighted by dimension importance: dealbreakers 1.0 · values 0.85 · timing 0.75 interest 0.70 · overlooks 0.55 · logistics 0.25 // high IG → ask · low IG → banter or exit next_move = argmax_q IG(q) × rapport_safety × consent_ok
Overlooks = soft mismatches the twin can absorb (music taste, city distance within range). Dealbreakers = hard stops that force reject / walk_out gravity. Timing = readiness for kids, exclusivity, relocation — the clock under the chemistry.

Dimension map · click a cell

Relative value of learning each dimension at different night phases (illustrative production thesis).

Select a cell — see how the twin prioritizes questions in that phase.

Belief extraction Inference

nextConf = min(1, prev + (1−prev)×Δ×flow×0.3) extract when confidence ≥ 0.7 vars: intent · kids · timeline · smoking · drinking fitness · politics · religion · city · schedule

Asymptote: certainty grows toward a ceiling. Never pretends to know you whole.

Scoring composite Match label

composite = 0.40×chemistry + 0.30×compatibility + 0.30×quality + Jaccard interests · bag-of-words cosine + Big Five match / complement (optimal Δ≈0.35) ≥80 strong · ≥60 potential · ≥40 weak · else no
08 · Decision ladder

Belief × criteria — not a lottery

Four stages from first spark to real-world fit. Each stage adds dimensions; none fake the previous.

S1 · Date 1

Soul before skin

Chem 40 · Compat 30 · Quality 20 · Flags 10. ≥70 accept · ≥50 maybe. Dealbreakers force reject.

S2 · Presence

When body enters

Physical weight joins (25). Low physical without chemistry still fails honestly — no force-match.

S3 · IRL

World friction

Logistics, timing, energy in the same room. Twin prep → you take the night that already earned it.

S4 · Belief / IG

Long game

Full belief model × criteria. Information gain closed the uncertainty that small talk never would.

Date-1 decision engine

Chemistry
40
Compat
30
Quality
20
No flags
10
chem ≥70 → +40 · ≥55 → +30 · ≥40 → +15 compat same bands → +30 / +20 / +10 quality excellent/good/fair/poor → +20 / +15 / +5 / 0 red flags → −5 each decision: dealbreakers → reject score ≥ 70 → accept score ≥ 50 → maybe else reject
09 · Heat dynamics

Temperature only if mutual

No user slider. No fantasy mode. Cool → warm → flirty → charged → explicit — only when both lean in.

cool warm ≥0.5 flirty ≥1.5 charged ≥3.5 explicit · mutual only
line score: EXPLICIT +4 · CHARGED +2.5 · FLIRTY +1.2 CONSENT_YES (+heat words) +0.8 CONSENT_NO −3 cool logistics only −0.2 recent lines weighted higher twinHeat vs personaHeat one-sided explicit → cap at charged // never force-match
Deep · Turn brain

How the twin chooses the next sentence

EchoDate’s selection science — often more advanced than “one LLM reply.” Much of it is library or disabled for latency.

LSM — Language Style Matching Library Upgrade

Function-word synchrony between speakers (psycholinguistic classic). Code: analytics/LanguageStyleMatching.ts. Telemetry fields exist; scoring rarely drives generation today.

LSM_cat = 1 − |x−y|/(x+y+ε) LSM = mean over function-word categories KPI target: ≥ 0.55 by phase 3

Multi-candidate + rerank Library Upgrade

AlgorithmConfig.nCandidates = 0 — optimized to one LLM call. Flags still describe N-candidate + sanitizer + phase weights.

score = Σ w_k^phase · m̂_k − Σ λ_j · p̂_j w: lsm 0.20 · semantic 0.15 · emotion 0.15 momentum 0.10 · attraction 0.10 novelty 0.15 · goals 0.05 penalties: repetition 0.50 · boundary · sanitizer

Phase decode P1–P4 Library

PhaseDecodingParams.ts + advanced conversation model. Conservative open → freer deepen. Hysteresis on transitions.

P1 temp≈0.6 · P2 0.7 · P3 0.8 · P4 0.9 wild mode: higher temp, relaxed filters (persona-sim)

Sanitizer + first-person guard Sim / lab

No meta, no third-person self, no internal disclosure. Resample / route switch if invalid. If sanitizer rate high → retune decode, don’t infinite-loop.

Deep · Memory intelligence

Not all lines deserve the same forever

Dual-write categories are live. Typed decay by message class is library — and stronger than treating every fact equally.

Live dual-write Live

Extract → field mapper → agent_profiles + memory_items. User facts only on live dates.

categories: preference · boundary · goal · interest · value biography · anecdote · constraint · red_flag · dealbreaker · misc

Message classifier + decay Library Phase 1

messageClassifier.ts + weightedHistoryService.ts. Trust sticks; small talk fades.

vulnerable_share 0.95 · deep_question 0.90 flirty 0.80 · opinion 0.70 humor 0.60 · logistical 0.40 small_talk 0.30
Deep · Conversational DNA

How you sound — not only what you said

DNA extraction + personality injection encode style into the twin prompt. Voice clone is presence; DNA is linguistic fingerprint.

DNA extraction Library Phase 1

dnaExtraction.ts — verbosity, vocabulary, topic affinities, fillers, phrases, emoji habits. Local key pattern echo:dna:userId.

Personality injection Library Phase 1

personalityInjection.ts — profile → system prompt: tone, humor, boundaries, operating rules. Makes the twin behave as you, not generic.

Deep · Who gets a night

Pre-screen funnel + chemistry momentum

Before expensive conversation — filter the pool. During conversation — watch velocity, not only level.

Attraction pre-screen Library Phase 1

attractionPreScreen.ts — interests overlap, city/proximity, lifestyle bio hints → Unlikely / Possible / Likely.

score ∈ [0,1] <0.4 Unlikely · <0.7 Possible · else Likely historical: score_pre < θ → reject from sim pool

Momentum / plateau / spark Library Phase 1

momentum.ts — chemistry velocity; plateau if |avg Δ| ≤ 0.05 over window. Explains “died mid-date” vs “caught fire.”

v_t = chem_t − chem_{t−1} plateau ⇔ |mean(v_{t−w:t})| ≤ 0.05 no-progress: low velocity + low IG over window
Deep · Decision policy

Escalate, probe, or leave kindly

Beyond accept/maybe/reject bands — confidence gates and golden probes from EchoDate policy design.

Date1 / Date2 engine Library Phase 1

datingDecisionEngine.ts — wired in conversationSimulator, not full user ladder yet. See Decision ladder chapter.

CI-gated policy Library Upgrade

DecisionPolicy.ts — proxy today (attraction + style + anti-rep). Target: trait posteriors (μ,σ²,n) → compat_CI_lower.

escalate if compat_CI_lower ≥ 0.62 AND chemistry ≥ 0.70 AND no dealbreakers else → golden probe → kind exit

Inference Scorer Library

Belief variables with asymptotic confidence. Extract when ≥0.7. Foundation for real CI later.

Observer + repair Library Partial

Observer: <200ms moment labels (vulnerability, deflection, chemistry_spike) + next-speaker guidance. Repair: clarify / pivot / humor after stalls. Feature flags largely off.

Deep · Voice chemistry

Paralinguistics beyond voice IDs

Research algorithm (Oct 2025). Not wired — Grok/EL give presence today. This is the next leap if we invest in audio features.

Six dimensions Spec

Vocal synchrony
25
Prosody fit
20
Emotion align
20
Laughter / humor
15
Flow / backchannel
10
Voice preference
10
Turn-taking smoothness · pitch/energy/rate harmony · valence/arousal sync · laugh reciprocity · interruption quality. Integrates with text chemistry when both exist.
10 · Learning pipeline

How a conversation becomes you

Tonight rewrites tomorrow’s twin — carefully, with constraints, never rewriting you as someone else.

Transcript Session + turns LLM extract Field mapper agent_profiles + memory_items Readiness R Coach context Next train / date
Learning system (conversationLearningSystem.ts) captures success/failure/neutral patterns — admin learning dashboard exists; not yet driving live match rules. Memory categories CHECK-constrained: preference · boundary · goal · interest · value · biography · anecdote · constraint · red_flag · dealbreaker · misc. Live date extracts user facts only.

Dashboard next-action priority

1. No voice clone → /voice-setup 2. missing_fields → /train?mode=coach 3. else → coach polish R ≥ 80 → UI “active”

Debrief recommendation

mismatch / walk_out / redFlags≥2 → no_match spark & interest>60 → strong_match good_solid | (friction & respect>50) → potential neutral / awkward → weak else interest>55 ? potential : weak
11 · Live laboratory

Feel the engines

One panel. Many minds. Trajectory, priors, confidence, verdict, heat, synergy — switch and play.

The step change

Dating stops being endless audition.
It becomes a mind that earns the night for you.

Twin readiness. Voice presence. Real-time adaptation. Honest arcs. Information gain over noise. Mutual heat. A ladder that adds dimensions instead of resetting hope. That is ehaio — the intelligence between human and AI, built so connection can finally be both real and scalable.

Open the app Back to the story Replay the lab