Skip to content

Customer journey

The customer journey is the heart of the demo. Thirteen gates, each producing structured evidence. The order matters; the reconciliation pass assumes it.

#GateSource of truthEvent(s)
1Open in plain languageModel(none)
2Status disclosureUI buttonpresent_disclosure then acknowledge_disclosure
3Eligibility checkUI formrecord_eligibility
4Indicative quote configuratorUI formrecord_provisional_quote
5Email opt-inUI formrecord_email_preference
6Application detailsUI formrecord_personal_facts + record_financial_facts (+ record_customer_contact if mobile missing)
7Vulnerability checkUI formrecord_vulnerability_indicators
8Credit search consentUI buttonpresent_disclosure then capture_consent
9Pre-contract confirmationServer reconcile + UI buttonpresent_disclosure then acknowledge_disclosure
10SubmitServer reconcilesubmit_application then waterfall runs
11Waterfall narrationModel + serverWATERFALL_RESULT_JSON system note
12Counter-offer or declineUI buttonsaccept_counter_offer / refuse_counter_offer
13AcceptanceModelcase_complete

See Event taxonomy for full payload shapes.

The order is not arbitrary. It reflects the FCA-compliant sequence:

  1. Status before eligibility. The customer must know who’s talking to them and on what basis before they answer any qualifying questions.
  2. Eligibility before quote. A customer who can’t qualify shouldn’t see a tempting indicative monthly. The agent doesn’t anchor.
  3. Quote before application details. The customer commits to a term they’ve chosen with full information about the indicative monthly. Application details come after they’ve decided to proceed.
  4. Application details before vulnerability check. The customer has filled in their details; the vulnerability prompt is the moment to flag anything that needs care before consent.
  5. Vulnerability before credit search consent. A flagged customer might choose to withdraw or take time before consenting.
  6. Consent before pre-contract. A customer who refuses the credit search never sees pre-contract; nothing is sent to the lender panel.
  7. Pre-contract before submission. The customer affirms accuracy as a final step before the application becomes live.

If the agent (or a human operator) tries to skip a gate, reconciliation catches it and forces the journey back into sequence.

Each gate has a UI surface designed to be unambiguous on a phone:

  • Disclosures render the verbatim body text as a card with a single button (“I understand”, “I confirm”, or “Grant / Refuse”).
  • Forms are short and use chips for enumerated values (residential status, property type, employment status). No free-text dropdowns where avoidable.
  • The quote configurator shows the loan amount big, term chips, monthly payment recomputing live.
  • The waterfall animates lender-by-lender as steps land. The agent’s prose narrates in parallel.

The chat thread runs the whole way through, but it’s a companion to the structured cards, not the primary surface. The agent answers questions and explains; the cards capture the regulated commitments.

The agent’s system prompt is explicit about what’s in and out of bounds:

  • Plain UK English. No marketing speak. Banned filler: “brilliant”, “perfect”, “amazing”, “fantastic”, “wonderful”, “lovely”. No exclamation marks anywhere.
  • Never invent disclosure content. The model emits present_disclosure with an id, the UI looks up the body and renders verbatim.
  • Never infer consent or eligibility from conversational vibes. The structured cards are the source of truth.
  • Never claim a guarantee about future solar savings. Always label as estimate.
  • Never give suitability advice (“you should pick X”, “this is right for you”).
  • Never recommend a specific offer in prose. The UI labels one offer with a factual marker like “Lowest net cost”.

This is enforced by the reconciliation pass and by the empty-turn protection, not by hope.