The Commission · Use case

Get what a rep learns in a meeting into Salesforce, HubSpot and the follow-up email without the rep typing any of it.

The clientA B2B cybersecurity sales team. Reps on the road all day, leadership back at the office.

The problem

Updating every system after a meeting took 15 to 20 minutes, so it mostly didn't happen.

What it cost

Stages and close dates went stale, pipeline reviews ran on memory, and leadership was calling reps at night to find out what was happening with deals.

Before

  1. 1Meeting ends
  2. 2Rep drives to the next one
  3. 3Hours later: log into Salesforce, find the account, type notes, change the stage
  4. 4Repeat in HubSpot, then write the follow-up email
  5. 5Most of it never happens

After

  1. 1Meeting ends
  2. 2Rep leaves a 30-second voice note in Telegram
  3. 3Agent replies with a draft of what it will record
  4. 4Rep taps approve
  5. 5Salesforce, HubSpot and Outlook are updated in under a minute
Walkthrough · 1 of 4

The rep talks

A voice note, the way they'd tell a colleague.

  1. Rep: Voice note · 0:31 — Just left Northwind. Their CISO Dana said the endpoint contract is up in March and they're unhappy with renewal pricing. She wants a proposal for 400 seats. Follow up next Tuesday.

Illustrative data. Names are fictional.

Walkthrough · 2 of 4

The agent answers and extracts

One model call does both.

  1. Rep: Voice note · 0:31 — Just left Northwind. Their CISO Dana said the endpoint contract is up in March and they're unhappy with renewal pricing. She wants a proposal for 400 seats. Follow up next Tuesday.
  2. Agent: Got it. Here's what I'll record: Contact — Dana, CISO, Northwind (enriched: verified title and email). Signal — endpoint contract expires March, price-sensitive. Opportunity — 400 seats, stage moves to Proposal, close date set for end of March. Follow-up email drafted for Tuesday. Approve?

Illustrative data. Names are fictional.

Walkthrough · 3 of 4

The human gate

Nothing is written until the rep approves.

  1. Agent: Got it. Here's what I'll record: Contact — Dana, CISO, Northwind (enriched: verified title and email). Signal — endpoint contract expires March, price-sensitive. Opportunity — 400 seats, stage moves to Proposal, close date set for end of March. Follow-up email drafted for Tuesday. Approve?
  2. Rep: Approve
  3. System: ✓ HubSpot: contact and activity logged ✓ Salesforce: stage → Proposal, close date updated ✓ Outlook: follow-up drafted, reminder set

Illustrative data. Names are fictional.

Walkthrough · 4 of 4

What leadership sees

The pipeline fills in on its own.

AccountRepStageARRClose dateLast update
NorthwindMaya R.Proposal$240kMar 31Updated 1 min ago
ContosoJordan T.Negotiation$385kFeb 14Today, 9:12 AM
FabrikamMaya R.Discovery$120kApr 30Yesterday
TailspinSam K.Qualified$175kMay 152 days ago

Illustrative data. Names are fictional.

How it works
  1. Telegram (capture)
  2. Node service + Claude (reply, extract, check)
  3. Postgres graph + vector memory (row-level security)
  4. HubSpot · Salesforce · Outlook (write-back after approval)

It's a workflow, not an agent. The steps are fixed; the model does judgment inside one of them.

The decision I’d defend
I chose

A human approval gate on every write

Instead of

Letting the agent write straight to the CRM

What it cost

A few seconds per meeting

Because

A wrong record in a customer's Salesforce costs far more than a few seconds.

Results
<3s
Message to fully structured CRM records
~95%
Cost cut vs commercial sales-intel platforms
15–20 min → <1 min
Rep time per meeting to update every system
What’s next
  1. 01Function calling instead of tagged JSON, so the API validates the shape
  2. 02A team dashboard on the same database
  3. 03Signal scoring and real-time alerts
The close

What this means for you

  1. 01Nothing gets written to a system of record until a person approves it. That costs a few seconds per meeting and it is worth it.
  2. 02The model drafts and the code enforces, which is how anything near a customer’s system of record should behave.
  3. 03It lives where people already work, so it gets used: 15 to 20 minutes of typing became a 30-second voice note.
  4. 04I built it inside three systems the client already owned, which is what coexisting with a legacy core asks of a forward deployed engineer.
Questions
Why Telegram and not a custom app?

The bottleneck was capture friction, not interface polish. Zero install, voice notes, and reps already live in messaging.

Why did you change models?

It launched on Gemini's free tier behind a swappable client. Extraction wasn't robust enough on real field messages, so I migrated to Claude in an afternoon without touching the bot.

How do you know the extraction is right?

A second agent checks it against the database, then the rep approves it. The prompt drafts; the code enforces.

Why Azure?

The client is a Microsoft shop on E5, so identity and Outlook were already there.