B2B SaaS

A sales-ops agent for CRM hygiene

A CRM hygiene agent for B2B SaaS sales-ops: it reads Salesforce call notes, updates fields, and flags exceptions—built against real CRM rules, not a sandbox. Forecast category never went automatic; the agent does not invent a close date.

Result

18 hours / week recovered

What we left alone

The agent does not coach reps and does not write emails. Those were requested. We said no. Hygiene compounds. A chatty agent would have been another tab to ignore.

The situation

This was a CRM hygiene agent for a growth-stage B2B SaaS sales-ops team, built against live Salesforce rules rather than a clean sandbox. Reps had good conversations and a rotten CRM. Notes lived in a doc; the fields revenue ops needed were empty; forecasts were theater. A meeting-assistant pilot had dumped transcripts nobody read. The job was production CRM hygiene: read the call note, propose next stage, close date, and use case, flag exceptions, and never invent a number. An agent that wrote free text into the wrong picklist would make the forecast worse. Reps would ignore anything that added a tab to their day.

The real constraint

Salesforce was the system of record. Fields had picklists, required stages, and a messy custom object. A CRM hygiene agent that wrote free text into the wrong place would make the forecast worse. Reps would ignore anything that added a tab to their day.

Approach

What we did instead of the obvious demo

01

The job was fields, not a summary

We ignored the transcript-as-product. The agent’s job was: propose next stage, close date, use case, and a one-line reason. That is what ops actually needed.

02

Propose, then earn writes

For the first month the agent only suggested. A rep accepted or edited in the CRM they already had open. We measured accept rate per field. Only high-trust fields went automatic.

03

Built on the ugly API

Validation rules, locked records, duplicate leads. The agent had to fail visibly—not invent a close date when the opportunity was locked.

04

A human still owns the number

Forecast category never went automatic. That is a judgment the manager still makes. The agent is not a quota.

What we refused

  • A new sidebar the reps would never open
  • Unbounded updates across the whole object
  • Letting the model invent dates or amounts

What transferred

  • The field-level allowlist and the accept-rate dashboard
  • A shadow mode they still use for any new field
  • A kill switch in the same place as the other sales tools

The outcome

Ops recovered about eighteen hours a week that used to be chasing reps for fields. Accept rate on use-case and next-step fields held above the bar we set. The forecast meeting started from a CRM that was merely imperfect, not empty. The CRM hygiene agent still proposes; a human still owns the number.

Tell us the job that already hurts.

We’ll tell you honestly if we can help and what it would take.