funnel paths 5/5
safety invariant ✓
customers on record 1
allude facts 7hold facts 1say facts 4
One customer = one record across every touchpoint. Each touchpoint captures facts; each fact gets a surface policy deciding what a 1:1 rep may do with it and whether it can appear in mass copy. This page shows the funnel paths (the test suite), one walked journey, and the two views built from the same record.
Say — The customer stated this to us directly — a rep may reference it, and it may appear in mass copy.
engine: source ∈ {web_form, class_signup, class_question_text}; consent on file.
Allude — Behavioral / inferred / voice / a rep's own note — a rep may only raise an adjacent topic; never stated, but it can steer which class we feature.
engine: source ∈ {ad, email, web_return, class_question_voice, rep_note, external}.
Hold — Sensitive or non-consented — known internally, never surfaced, alluded to, or used anywhere.
engine: key ∈ sensitive_keys, or consent absent → hold (overrides source).
The funnel — every way in, and what happens at each stage
How every fact is classified (the surface policy)
Consent first, then sensitivity, then source — declared facts become say; behavioral / voice / inferred / rep-notes become allude; sensitive or non-consented become hold.
Realistic example — what data is captured, and exactly where it's stored
A career-switcher, Maya Rivera, through the funnel: ① the data available to input at each touchpoint → ② how it's captured → ③ the fact + surface policy it becomes → ④ the row it lands in. Example values; the fields, keys, and policies match the real touchpoint functions. (3rd-party enrichment can also feed this record — the next layer.)
① The funnel paths — every way customers fall in (the test suite)
Click-through adAd → website → sign up for more info
✓
clicked ad (anonymous visitor) → filled the 'more info' form + consent
captures: interest (behavioral → hold until consent, then allude) · goal (declared → say)
✓ behavioral fact starts hold, unlocks to allude on consent
✓ declared goal is say
Nurture emailEmail → click → return → sign up for a class
✓
clicked the email → returned to the site → registered for the night class
captures: email engagement (allude) · intent:class (declared → say) · magic-link login issued
✓ class signup issues the magic-link login (one identity)
✓ class intent is say
Night classAttend the night class → ask questions (text & voice)
✓
attended the live class → asked a question by text → asked a question by voice
captures: career-outcomes interest (text → say) · affordability concern (voice → allude)
✓ text question is say (on the record)
✓ voice question is allude (sensitive capture)
Admissions officer1:1 admissions emails with Drew Rice
✓
Drew logs an observation → Drew logs a sensitive personal detail
captures: rep note (allude — don't quote it back) · family detail (sensitive → hold)
✓ rep note is allude
✓ sensitive detail is held, never surfaced
Website (no consent)Signs up WITHOUT consent
✓
clicked ad → submitted form but declined consent
captures: everything captured but held
✓ no consent → every fact is hold
✓ nothing is inlineable in mass copy
② A walked journey — Sam Lee (relationship)
Every touchpoint, in order, with the facts it captured — color-coded by surface policy. Login (magic-link): 84132fa3982ccba5
anonymousad —
clicked ad 'Intro to AI Engineering'
interest:general: Intro to AI Engineeringallude
leadweb_form —
signed up for more info (sam@personal.example)
goal: switch into AI engineeringsaybackground: 2 yrs backendsay
engagedemail —
email open: nurture_1
engagement:email_open: nurture_1allude
engagedemail —
email click: nurture_1
engagement:email_click: nurture_1allude
engagedweb_return —
returned to site (viewed intro_night)
interest:class_viewed: intro_nightallude
registrantclass_signup —
registered for 'Intro to AI Engineering — night cohort'
intent:class: Intro to AI Engineering — night cohortsay
attendeeclass_attend —
attended 'Intro to AI Engineering — night cohort' (85min)
engagement:attended: Intro to AI Engineering — night cohort:85minallude
attendeeclass_question —
asked (text): Do you help with job placement after the program?
interest:career_outcomes: Do you help with job placement after...say
attendeeclass_question —
asked (voice): How much does it cost and are there scholarships?
concern:affordability: How much does it cost and are there...allude
relationshipadmissions —
Drew Rice: Seems anxious about leaving a stable job
concern:schedule: Seems anxious about leaving a stable joballude
relationshipadmissions —
Drew Rice: Going through a divorce
family: Going through a divorcehold
③ Two views, one record — 1:1 outreach vs automated personalization
Rep view — for a 1:1 conversation (e.g. Drew Rice)
Say it · allude to it (adjacent topic) · hold it.
say: switch into AI engineering (goal · web_form)
say: 2 yrs backend (background · web_form)
say: Intro to AI Engineering — night cohort (intent:class · class_signup)
say: Do you help with job placement after the program? (interest:career_outcomes · class_question_text)
allude: interest:general
(ad)“What's the main thing you're hoping to get out of this?”
allude: engagement:email_open
(email)“What's the main thing you're hoping to get out of this?”
allude: engagement:email_click
(email)“What's the main thing you're hoping to get out of this?”
allude: interest:class_viewed
(web_return)“What's the main thing you're hoping to get out of this?”
allude: engagement:attended
(web_return)“What's the main thing you're hoping to get out of this?”
allude: concern:affordability
(class_question_voice)“We can always walk through how people make the investment work — want me to?”
allude: concern:schedule
(rep_note)“Plenty of our students are juggling this around a full-time job — how are you thinking about the time?”
hold: family — sensitive (family) → hold, never surfaced
Automated view — mass email + personalized website
Only “say” facts may be inlined; “allude” steers selection silently; “hold” is withheld.
inline: switch into AI engineering (goal)
inline: 2 yrs backend (background)
inline: Intro to AI Engineering — night cohort (intent:class)
inline: Do you help with job placement after the program? (interest:career_outcomes)
steers selection (not stated): interest:general, engagement:email_open, engagement:email_click, interest:class_viewed, engagement:attended, concern:affordability, concern:schedule
withheld entirely: family
④ The safety guarantee
✓ holds — No held/sensitive fact ever reaches mass copy or a rep's “say”; behavioral is allude-only.