Section 2 · Qualification & Opportunity Scoring
2.1Hidden 0-100 opportunity score
Built in the POC- No.
- 2.1
- DMA's reference
- Decision Book p.11
- Phase
- Phase 1
- Autonomy
- L4 · Autonomous
- DMA's decision
- Yes
★ Marked "non-negotiable, build first" in the book.
What DMA asked for · Decision Book p.11
Every prospect gets an internal 0–100 score from company size, spend, pain, authority, timing and fit. The prospect never sees it.
Why it matters to DMA: It is the routing backbone: priority lists, alerts and next steps all depend on it.
In our words, from DMA's Product Decision Book v3, page 11.
How we do it
- The AI's job is to find the evidence: it reads the notes, deals and conversations and extracts facts, each with the exact quote it came from. Code, not the AI, turns those facts into the score, so the same facts always give the same score.
- Two scoring versions: one for the dormant Nutshell records (weights size 15, spend 10, pain 10, authority 10, timing 25, fit 15, history 15) and one for website visitors (size 15, spend 15, pain 20, authority 15, timing 20, fit 15). Tiers: A from 70, B from 45, C below.
- Safety gates can cap the tier whatever the score: too little evidence, no lawful basis to email, no reachable contact, a duplicate, not a buyer, or a small account with nothing live.
- Every score is stored with its reasons, the points each reason earned, the evidence, and a plain "could be wrong if" line. DMA opens it with Why? on any list. The score, tier and reason are written to Nutshell's AI fields through the write gate.
The flow
It plays on its own while it's on screen; hover or use the controls to pause or step through.
The record
Northside Dental Group: a former client, notes from 2022 and 2026, a lost renewal.
- Nutshell
- AI
- Stored data
- Rule in code
- Routing
Where the data goes
The same six stages on every page. Nothing reaches Nutshell except through the write gate.
- 1Nutshell and chats
Source
Notes, deals, people, and website conversations.
- 2Sync
Copies Nutshell changes into the bridge database
Brings each record into the mirror; a change triggers a re-score.
- 3Bridge database
A copy of the CRM data, plus what the AI works out
Facts with quotes; the score, tier, reasons and counter-evidence.
- 4AI
Claude models, only through DMA's own gateway
Extracts facts only; it never sets the number.
- 5Write gate
The only way back into Nutshell: checked, approved when needed, sent once
Writes AI Score, AI Tier and AI Reason to Nutshell (allowed on its own, L3).
- 6Nutshell
The system of record
The team sees the AI fields on every record.
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 |
|---|---|---|
| ai.extracted_facts | Facts found in the notes, each with its quote and confidence. | 15 |
| ai.scores | One current score per record: tier, gate, reasons with points, and the could-be-wrong line. | 20 |
| ai.scoring_configs | DMA's scoring versions: weights and tier cut-offs, changed only with approval. | 15 |
How the tables connect (3)
| Column | Points to | Kept by |
|---|---|---|
| ai.extracted_facts.prompt_id | agent.prompts | The application (by id) |
| ai.scores.prompt_id | agent.prompts | The application (by id) |
| ai.scoring_configs.approval_id | ctrl.approvals | The application (by id) |
Worked example
Synthetic demo data: every name, business and number is made up.
Northside Dental Group's score, from list to Nutshell
What you see
1.Ranked by score on Today
The top revivable accounts, highest opportunity first, each with a value and a one-line reason.

What happens in the system
- Bridge database
ai.scoresToday reads each account's current score and tier; Northside is 85, tier A.
- Rule engine
dormant scoring v1The active scoring version, approved by a person; a new version needs a new approval.
Northside Dental Group in the prototype's demo data (synthetic account): the score as the system stored it.
Why Northside scores 85 (tier A)
| Reason | Evidence | Points |
|---|---|---|
| Incumbent contract ending | "contract ends March" (note, June 2026): March 2027, upcoming | 25 |
| Former client, fixable churn | "unhappy with reporting" | 13.5 |
| Fits several services | SEO and local search | 12 |
| Multi-location | "all three offices" | 12 |
| High spend | "15k SEO" a month | 10 |
| Decision maker known | Ops Director on the account | 8.5 |
| Total | Tier A (70 and above). Next step: win-back email to Dana | 85 |
What else is stored
- Could be wrong if
- They renew with their current agency before March 2027, or the reporting problem that drove them away hasn't been fixed.
- Deal value
- $144,000 a year
- Seen by the prospect
- Never
In the running POC

1 / 4Today: accounts ranked by opportunity score.
- 1What the top of the list is worth.
- 2How many dormant records were reviewed.
- 3Draft emails for the whole list.
Dashboard · Today. 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.
Status
Built in the POC. This capability runs in the POC today, on synthetic data, end to end.