Section 1 · Website AI Salesperson
1.2Natural conversation, not a form
Built in the POC- No.
- 1.2
- DMA's reference
- Decision Book p.10
- Phase
- Phase 1
- Autonomy
- L4 · Autonomous
- DMA's decision
- Yes
What DMA asked for · Decision Book p.10
Instead of a static form, the AI asks one useful question at a time and adapts to each answer.
Why it matters to DMA: Conversations convert better than forms. DMA calls this the core mechanic of the whole website agent.
In our words, from DMA's Product Decision Book v3, page 10.
How we do it
- Each visitor message first passes quick checks: abuse, legal or payment trouble, a request for a person, a pricing question, or a request to book. Those are handled by fixed rules, so the important cases never depend on the AI's judgement.
- Everything else goes to the AI strategist. Before each reply it gets a short brief from the system: what we already know, what is still missing (the business, the main problem, the website, the timing) and whether it is time to stop asking and offer a call.
- The strategist asks one natural question at a time. When the visitor mentions a website, the free site review starts straight away and the findings appear in the chat as a card.
- After every exchange, a smaller AI model updates the running notes: industry, number of locations, the problem, role, timing and which services fit. Code, not the AI, turns those notes into the 0–100 score and the A/B/C tier.
- When the visitor books or leaves an email, the lead goes to Nutshell through the write gate with the summary, the score and the site review attached.
The flow
It plays on its own while it's on screen; hover or use the controls to pause or step through.
The visitor writes
"I own a dental practice with 3 locations. New patient calls are down this year." No form fields, in their own words.
- Person
- Rule in code
- Routing
- AI
- Screen
- Stored data
- Nutshell
Where the data goes
The same six stages on every page. Nothing reaches Nutshell except through the write gate.
- 1Website chat
Source
The visitor's messages, and the website they share.
- 2Sync
Copies Nutshell changes into the bridge database
Mirrors the new lead back from Nutshell once it is written.
- 3Bridge database
A copy of the CRM data, plus what the AI works out
Stores every message (encrypted), the site review, the booked meeting.
- 4AI
Claude models, only through DMA's own gateway
The strategist writes replies; a smaller model keeps the notes.
- 5Write gate
The only way back into Nutshell: checked, approved when needed, sent once
Creates the lead with the summary, score and review attached.
- 6Nutshell
The system of record
A new lead with a note the salesperson can read in 30 seconds.
The tables behind it
Drawn from the POC's database catalogue: structure only, no data.
PK primary keyFK reference the database enforces (solid line)ID reference kept by id (dashed line)
| Table | What it holds | Columns |
|---|---|---|
| conv.conversations | One row per chat, with its stage: opened, engaged, reviewed, booked. | 22 |
| conv.participants | Who is in the chat: the visitor, the AI and any team member who joins. | 8 |
| conv.messages | Every line, encrypted; the visitor's lines are marked as untrusted input. | 21 |
| ai.site_reviews | The live website review: the three findings, with the evidence for each. | 18 |
| ctrl.meetings | Calls booked from the chat, with the consent record for the visitor's email. | 16 |
| ctrl.outbox | The write gate: every change bound for Nutshell waits here and is sent once. | 28 |
How the tables connect (11)
| Column | Points to | Kept by |
|---|---|---|
| conv.conversations.agent_version_id | agent.agent_versions | The application (by id) |
| conv.participants.conversation_id | conv.conversations | The database (foreign key) |
| conv.participants.agent_id | agent.agents | The application (by id) |
| conv.messages.conversation_id | conv.conversations | The database (foreign key) |
| conv.messages.participant_id | conv.participants | The application (by id) |
| conv.messages.decision_id | ctrl.decision_log | The application (by id) |
| conv.messages.agent_version_id | agent.agent_versions | The application (by id) |
| ai.site_reviews.conversation_id | conv.conversations | The application (by id) |
| ai.site_reviews.prompt_id | agent.prompts | The application (by id) |
| ctrl.meetings.conversation_id | conv.conversations | The application (by id) |
| ctrl.outbox.approval_id | ctrl.approvals | The database (foreign key) |
Worked example
Synthetic demo data: every name, business and number is made up.
One real conversation on the BrightSmile demo site, step by step
What you see
1.The chat opens with the disclosure
Before anything else, the visitor is told they're talking to DMA's AI assistant and that a person can join any time.

What happens in the system
- Rule engineALLOW
chat.disclosureDisclosure recorded before the first reply: the AI-assistant disclosure was shown first.
- Bridge database
conv.conversationsA new conversation row: channel web chat, the starting page, stage "opened".
- Rule engine
opener pickerThe first line is chosen by rules from the page and campaign tags. No AI call, so no cost.
Right-hand values come from a real run of the POC on September 25, 2026 (trace tr_muh5sw194tot7e797019, tr_muh5sw3y109o05zmqjmp6…). Rows marked “sample” are illustrative.
A synthetic visitor, the owner of a three-location dental practice, chats on the BrightSmile demo page.
The conversation
| # | Who | Message |
|---|---|---|
| 1 | AI | You're chatting with DMA's AI assistant. A person from DMA can join any time: tap "Talk to a person". |
| 2 | AI | Hi, I'm DMA's AI assistant. What does your business do, and what would you like more of: calls, leads or sales? Or paste your website and I'll show you three things I'd fix. |
| 3 | Visitor | I own a dental practice with 3 locations. New patient calls are down this year. |
| 4 | AI | That's a frustrating trend, especially across three offices. Is it all three, or is one location doing worse than the others? |
| 5 | Visitor | Mostly Lakeside and Northgate. Our site is brightsmile-demo.test |
| 6 | AI | (The review card shows three findings.) Two of your offices have no map on their pages, which lines up with fewer calls there. When were you hoping to have this sorted? |
| 7 | Visitor | Ideally in the next month or two. |
| 8 | AI | That's a realistic window. A 45-minute call with a strategist would walk through a plan for each office. Want to pick a time? |
What the note-taker recorded
- Business
- Dental practice, 3 locations
- Main problem
- New-patient calls are downStated clearly by the visitor.
- Role
- Owner (decision maker)
- Timing
- Soon: in the next month or two
- Services that fit
- SEO, Local search
- Still missing
- Budget (the AI never asks for money)
The score, worked out by code
| Factor | What we know | Weight | Points |
|---|---|---|---|
| Size | 3 locations | 15 | 12 |
| Spend | Not discussed, so a neutral value | 15 | 6 |
| Pain | A specific problem, stated | 20 | 20 |
| Authority | Owner | 15 | 15 |
| Timing | In the next month or two | 20 | 14 |
| Fit | Two core services (SEO, local) | 15 | 15 |
| Total | Tier A (70 and above). Next step: call today, hot inbound lead | 100 | 82 |
In the running POC

1 / 5The chat's first line: the visitor is talking to DMA's AI assistant, and a person can join any time.
- 1The header label and the "Talk to a person" button, on screen for the whole chat.
- 2The disclosure in the first message.
Website chat · the AI disclosure (label, first message, Talk to a person). Captured from the running POC on September 25, 2026; synthetic data.
See it live
Opens the exact screen in the running POC, in a new tab.
| Open | Where | What to try |
|---|---|---|
| BrightSmile Dental demo site | Demo prospect website | Open the chat, describe a problem, then paste brightsmile-demo.test. |
| Live chats | DMA AI dashboard | See the conversation, its tier and last line while it happens. |
| Leads in the CRM simulator | CRM simulator (stands in for Nutshell) | After a booking, the new lead appears here with the chat summary. |
Status
Built in the POC. This capability runs in the POC today, on synthetic data, end to end.