Confidential · © 2026 Space-O Technologies Inc. · Prepared exclusively for DMA. Please do not copy, save or share.

Section 11 · Pricing, Proposals & Closing

11.1Pricing guardrails

Built — needs DMA's data
No.
11.1
DMA's reference
Decision Book p.24
Phase
Phase 1
Autonomy
L3 · Act within rules
DMA's decision
Yes

◆ Amended in v3 of the book.

What DMA asked for · Decision Book p.24

The AI may talk about price, and make pricing decisions, only within rules DMA approves.

Why it matters to DMA: It stops the AI freelancing on pricing: the foundation for any AI-led selling.

In our words, from DMA's Product Decision Book v3, page 24.

How we do it

  • Prices live in one place: DMA's rate card, stored as a rule that changes only with a second person's approval. The POC's card holds sample prices, and it is still in review, so today no card is live.
  • Proposals are priced by code from that card: the AI chooses the services and writes the words, but never sees or writes a price. Every line is checked against the card.
  • In the website chat, a price question gets a range worded by code from the approved card only, such as "Local SEO usually runs $1,200–$2,100 a month; a strategist confirms exact pricing on a call". The AI never sees the figures: its pricing tool hands it a placeholder, and the chat puts the approved sentence in its place after every check has run.
  • Any other number the AI writes next to a price is refused before the visitor sees it. With no approved card, or nothing on the card for that service, the chat says a strategist covers pricing on the call. A pricing question still goes to Josh's team, so a person confirms the exact price.
  • What this needs from DMA: its real rate card, and which ranges the chat may show, approved by two people. Until then the live demo stays honest and shows no figures; the tests run the same code on a sample card.

The flow

It plays on its own while it's on screen; hover or use the controls to pause or step through.

placeholderplaceholderrangeRate cardapproved ruleSecond personapproves changesAI chooses servicesnever sees a priceCode prices itline by lineProposalevery line checkedPricing toola placeholder, no figureOutput gaterefuses the AI's ownnumbersWebsite chatthe approved range, incode's words
Step 1 of 5

One rate card

Changed only with a second person's approval.

  • Stored data
  • Person
  • AI
  • Rule in code
  • Screen

Where the data goes

The same six stages on every page. Nothing reaches Nutshell except through the write gate.

  1. 1DMA's rate card

    Source

    Entered once, approved by two people.

  2. 2Sync

    Copies Nutshell changes into the bridge database

    Not involved.

  3. 3Bridge database

    A copy of the CRM data, plus what the AI works out

    The approved rate card, every proposal priced from it, and a log line for each price question (which card version, never the figure).

  4. 4AI

    Claude models, only through DMA's own gateway

    Chooses services and words; places the price placeholder; never sees or writes a price.

  5. 5Write gate

    The only way back into Nutshell: checked, approved when needed, sent once

    Proposal outcomes go to Nutshell through the gate.

  6. 6Nutshell

    The system of record

    The deal carries the proposal's value.

The tables behind it

Drawn from the POC's database catalogue: structure only, no data.

ctrl.policy_rulesPKiduuidrule_keytextversionintegerkindtextstatustextIDapproval_iduuidapproved_bytext+ 14 more columnsai.proposalsPKiduuidFKsupersedes_iduuidstatustextpackage_codetextmonthly_totalnumericcontract_valuenumericdiscount_pctnumericFKapproval_iduuidapproved_bytextsent_attimestamp+ 26 more columnsctrl.decision_logPKiduuidPKoccurred_attimestampIDagent_version_iduuidIDrun_iduuidtooltextIDconversation_iduuidpolicy_resulttextoutputjsonb+ 20 more columns

PK primary keyFK reference the database enforces (solid line)ID reference kept by id (dashed line)

TableWhat it holdsColumns
ctrl.policy_rulesDMA's rules as approved versions, including the rate card and the discount band.21
ai.proposalsEach proposal: lines priced by code, totals, discount, the checks it passed and its approval.36
ctrl.decision_logEach price question the chat answered: the service, range or strategist line, and the card version. No figures.28
How the tables connect (6)
ColumnPoints toKept by
ctrl.policy_rules.approval_idctrl.approvalsThe application (by id)
ai.proposals.supersedes_idai.proposalsThe database (foreign key)
ai.proposals.approval_idctrl.approvalsThe database (foreign key)
ctrl.decision_log.agent_version_idagent.agent_versionsThe application (by id)
ctrl.decision_log.run_idagent.runsThe application (by id)
ctrl.decision_log.conversation_idconv.conversationsThe application (by id)

Worked example

Synthetic demo data: every name, business and number is made up.

A price question in the website chat

1 / 3

What you see

1.The rate card is a rule

Only an approved, active card counts. Today's sample card is still in review.

localhost:13301/rules
One rule opened: what it does, its version and who approved it. The rate card is a rule like this.
Callout 2

What happens in the system

  • Bridge databasectrl.policy_rules · rate_card.default

    The chat reads the ACTIVE version only; a card in review is no card.

  • Rule enginefour-eyes

    A second person approves the card before it is live.

Worded by code from the POC's sample rate card (sample prices, not DMA's). The tests run it as the approved card; the live demo's card is still in review, so the live chat shows the strategist line.

What the chat shows for "how much is …?" (sample card, as the tests run it)

Visitor asks aboutFromToWhat the chat shows
Local SEO$1,200$2,100"Local SEO (per location) usually runs $1,200–$2,100 a month; a strategist confirms exact pricing on a call."
SEO$2,500$4,300"SEO (organic search) usually runs $2,500–$4,300 a month; a strategist confirms exact pricing on a call."
Paid search$1,500$4,300"Paid search management usually runs $1,500–$4,300 a month; …"
Reputation$600$2,100"Review and reputation management usually runs $600–$2,100 a month; …"
A new website (not on the card)"Pricing depends on what you need, so a strategist covers pricing on the call."
Any service, no approved card (today's live demo)The same strategist line: no figure at all.

What the AI writes, and what the visitor sees

The AI writesThe output gateThe visitor sees
"Good question. [[price:lane.local]] Would you like me to find you a time?"Passes: no figure in the AI's textThe Local SEO range sentence, word for word, then the offer of a call
"[[price:lane.local]] For 3 locations that's about 3,600 a month."Refused: a number of the AI's own next to the priceThe strategist line and the offer of a call
"Local SEO is about $900 a month."Refused: a price the AI wrote itselfThe strategist line and the offer of a call

A sample proposal, priced by code (sample rate card)

LineQtyPriceTotal
Local SEO (per location)3$1,200/mo$3,600/mo
Review and reputation management1$600/mo$600/mo
Monthly reporting and strategy call1$300/mo$300/mo
Discount (within the 10% band)5%−$225/mo
Monthly total$4,275/mo

In the running POC

localhost:13301/rules
One rule opened: what it does, its version and who approved it. The rate card is a rule like this.

1 / 5One rule opened: what it does, its version and who approved it. The rate card is a rule like this.

  1. 1The rule in plain words.
  2. 2Its live version and its approval.

Dashboard · Govern → Rules, one escalation rule open. 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.

OpenWhereWhat to try
RulesDMA AI dashboardThe rate card, as a rule waiting for approval.
ApprovalsDMA AI dashboardApprove the rate card as a second person to switch ranges on.

Status

Built — needs DMA's data

Built — needs DMA's data. This capability runs in the POC today. It needs DMA's own content or data to go live; no code change is needed for that.

11.1 Pricing guardrails · DMA AI proof