I thought my sales AI was closing deals. It was guessing.

I thought my sales AI was closing deals. It was guessing.

Martin Shein · · 6 min read

A prospect told my agent "let me think about it." My agent moved the deal to Proposal.

Nobody had agreed to anything. There was no budget, no next meeting, no second stakeholder. There was a polite no, and my model read it as progress. Here's the breakdown.

A pipeline that only moves forward can't forecast

Look at what the AI CRM category ships right now. Auto-advance. Auto-summarize. Auto-score. Every one of those features is built on the same assumption: that motion is good, and more motion is better.

That assumption is what broke my board.

An agent that advances a deal on its own optimism is not helping you forecast. It is lying to you politely. And it is a very convincing liar, because the board looks healthy. Cards move right. The weighted total climbs. You feel like you had a good week.

Here's why that matters: your forecast is a number you make decisions with. You hire against it. You spend against it. If the number is inflated by deals no buyer ever agreed to, you are not running a pipeline. You are running a mood.

The rule that fixed it: exit evidence

So I inverted the default. In @di-atomic/sales-pipeline, the agent's most valuable behaviour is refusal.

The rule is one sentence. A deal moves to the next stage only when there is a logged buyer signal, dated at or after the moment the deal entered its current stage. No signal, no move. The agent stays put and writes down why.

This is not my invention. It is the mechanism underneath MEDDIC. MEDDIC's entire forecasting-accuracy gain comes from refusing to advance a deal until the stage's exit evidence exists. Everyone quotes the acronym. Almost nobody enforces the gate.

But there's a catch: a rule an agent can talk itself out of is not a rule. So the skill ships verify-stage-progression-evidence.mjs. Run it on your board and it checks every stage transition for a logged signal, then prints PASS or FAIL with the count. It doesn't take your word for it. It doesn't take the agent's word for it either.

Four more scripts ship with it: dossier coverage, handoff payload, coordination, and one I'll come back to in a second. All five print numbers.

Every stage in the contract declares two things: the fields it writes, and the evidence required to leave. Closed Won will not close without a valid handoff payload. Closed Lost will not close without a written loss reason. You cannot quietly delete a deal you lost, which is exactly the deal you most need to learn from.

A white chalk card stopped dead by a gold barrier, labelled "signal?" and "no move"

The second thing I got wrong: I already owned the CRM

My first instinct was to connect a CRM. It's the reflex everyone has. Pick Salesforce or HubSpot or Pipedrive, wire it up, sync both ways, maintain the mapping from now on.

Now for the good part: I already had one and hadn't noticed.

The AgentBoard I run every day has deals, contacts, and companies boards. Columns are stages. A card is a deal. custom_fields is the deal data. Comments are the activity log. It has links between records, a scheduler, and per-column instructions the agent reads before it acts. That is a CRM. I'd been treating it as a to-do list.

So the skill wraps no third-party CRM at all. There is no sync, no field mapping, no second source of truth to reconcile at quarter end. And because I know how strong the pull is toward bolting one on, lint-external-crm-mentions.mjs fails any output that recommends one. The anti-pattern is enforced, not just documented.

Your agent owns the board. It provisions the columns, writes the per-column instructions, and operates them.

Three chalk kanban columns with one gold card, labelled "column = stage" and "card = deal"

The part I didn't expect to matter most

I built this expecting qualification to be where the value was. It wasn't. It was follow-up.

Let me show you the numbers I found. 80% of sales close between the 5th and the 12th touch. Most reps stop after 4. So the majority of the market quits immediately before the range where the majority of deals actually close.

It gets worse. 48% of reps never follow up at all. 64% of companies have no nurture process. The average company takes 72 hours to respond to a new lead, while responding inside 5 minutes multiplies your reach by roughly 900 times.

Read those together and the conclusion is uncomfortable: most pipelines don't lose to a competitor. They lose to silence.

That is why "no phantom progression" and "persistent cadence" are the same feature. If the agent is allowed to move a stalled deal forward, the deal looks alive and nobody chases it. If it must sit in Negotiation with last_touch_at and next_touch_at on the card, the stall is visible, and the cadence has something to fire against.

Bottom line: you can always optimize a number. You can't optimize zero. This skill's job is to make sure the number on your board is real.

And when a deal closes either way, the outcome is written to memory keyed by ICP and brand. The next deal in that segment starts with what the last one taught, instead of starting from nothing.

A chalk track of touch marks: a cross at "reps quit" early, a gold band over the later touches labelled "80% close"

For regulated deals, the structure stays and the pressure goes

I sell into chemicals. REACH, CLP, biocides. Those deals have a different rulebook.

For regulated ICPs the skill keeps the process discipline and gates out the pressure. No manufactured urgency. No insistence closes. No absolute claims. Deal copy routes through copy-engine's claim linter, so you get "designed to support compliance" and never "fully compliant."

It also captures the supply-chain role at qualification, manufacturer or importer or distributor, because that single field changes what the buyer is legally obliged to do. Getting it wrong doesn't cost you a deal. It costs your customer a filing.

What it costs you

Nothing to run. It's guidance-only: 12 references, 9 recipes, 81 evidence-bundled registry assets, 23 learnings, 5 scripts, and zero methods. There is no backend and no API to call. Every write is done by a peer you already have, which is why installing it doesn't add a service to your stack.

What it costs you is comfort. Your board will show fewer deals in late stages next week. That's not the skill underperforming. That's the first honest forecast you've had.

It's live on the OPVS marketplace as @di-atomic/sales-pipeline. Trigger it by saying "create a deal for this prospect" or "move this deal to the next stage."