Provenance · Customer funnel
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

anonymousadclicked ad 'Intro to AI Engineering'
interest:general: Intro to AI Engineeringallude
leadweb_formsigned up for more info (sam@personal.example)
goal: switch into AI engineeringsaybackground: 2 yrs backendsay
engagedemailemail open: nurture_1
engagement:email_open: nurture_1allude
engagedemailemail click: nurture_1
engagement:email_click: nurture_1allude
engagedweb_returnreturned to site (viewed intro_night)
interest:class_viewed: intro_nightallude
registrantclass_signupregistered for 'Intro to AI Engineering — night cohort'
intent:class: Intro to AI Engineering — night cohortsay
attendeeclass_attendattended 'Intro to AI Engineering — night cohort' (85min)
engagement:attended: Intro to AI Engineering — night cohort:85minallude
attendeeclass_questionasked (text): Do you help with job placement after the program?
interest:career_outcomes: Do you help with job placement after...say
attendeeclass_questionasked (voice): How much does it cost and are there scholarships?
concern:affordability: How much does it cost and are there...allude
relationshipadmissionsDrew Rice: Seems anxious about leaving a stable job
concern:schedule: Seems anxious about leaving a stable joballude
relationshipadmissionsDrew 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.