denis bauer· belgrade, serbia·linkedIn·cv·email·Book a call with me
Extrovert
Case study

Customer success, rebuilt as an agentic operation

One person ran support, billing, the help centre and founder analytics for a B2B SaaS — by turning the whole function into a routed, self-correcting workflow on Claude Code.

0
logged investigations in 14 weeks
0
custom skills, ~2,100 lines
0
live data sources wired in
0
post-mortems turned into rules
every number here came out of the project's own logs
What this was

The whole function, one person

Extrovert is an AI LinkedIn engagement product for B2B sales teams, with a founder and four engineers. I ran support, billing, the help centre and founder-facing analytics as Head of Customer Success.

Rather than work the queue by hand, I rebuilt the function as an agentic operation on Claude Code: a router that decides what kind of question it is, an investigation skill wired directly into production, and a loop that turns every wrong answer into a rule so the same mistake does not come back.

The point was never automation for its own sake. It was that a support answer should be traced to the code path that produced it and confirmed against production, not assembled from a plausible story — and that one person should be able to hold that standard across a whole queue.

The workstation

Six live sources, one setup document

The whole environment rebuilds on a fresh machine in under an hour, with a smoke test per integration.

Production Postgres
Read-only, 6 schemas
Account state, campaigns, jobs, billing, assistant threads
Grafana Loki
LogQL
Provider responses, request traces, job timing
Intercom
Read + article editing
Conversations, contacts, help-centre articles
YouTrack
Read + write
Filing and tracking engineering tickets
Attio
Read
Churn list, subscription state, partner flags
Six product repos
Local clones
Tracing the exact code path behind a symptom

One rule runs through all of it: the database is read-only and there is no send tool on the inbox. The agent produces SQL and drafts; I run them and I send them. Nothing reaches a customer or the database without a human in between.

The agentic workflow

How a ticket gets routed

The router's first and only real decision: does this answer depend on the state of this account?

Inbound
A user writes in
cs-user-help
Triage router
Reads the ticket, picks the path
kb-read
Ground it in the help centre
No account state involved
ops-extrovert-debug
Trace it to the code
logsdatabasesource
Output
Draft reply
A human reads it and sends it
A user writes in
The ticket lands with whatever the customer chose to tell you: a symptom, a screenshot, a number that looks wrong. Nothing is trusted yet.
stage 1 of 5 · click a stage to hold it
Knowledge base

A help centre with two audiences

Three AI agents answer on the company's behalf and all three read these articles. When an agent walks someone through a setup, the article is its prompt.

The source of truth
96 articles
one wording
69
written by me
~45
rewritten in 2 months
executable as instructions, readable as help
Intercom Fin answers before a human sees the ticket
It replies to customers directly in the inbox. Whatever the article says is what the customer is told, so a stale paragraph becomes a wrong answer at scale rather than one bad reply.
click a reader to hold it
The part that compounds

Every wrong answer becomes a rule

A post-mortem in a document is a diary entry. The same post-mortem written into the skill is a guardrail — it fires on the next case, without anyone remembering it.

Step one
A case is handled
Verdict, evidence, code reference
It gets logged
cs-log.md
One line per case, 190 of them
I got it wrong
cs-error-log.md
What was missed, and why
Same day
Wired into the skill
Where it fires next time
…and back into the next case, so the same class of mistake does not return
48
post-mortems on my own wrong answers
37
memory files that outlive a session
131
queue items closed in the help centre
30141
lines in the triage skill, May to September
Support by the numbers

190 investigations, 14 weeks

Each one ends in a verdict backed by production evidence and a code reference — two independent sources, or it does not ship.

Cases logged per month
36
June
16
July
89
August
48
September
to the 18th
August is when the workflow started carrying the queue
Where those cases landed
33Working as designedTraced to the exact code path, then confirmed in the database
15Confirmed bugsReproduction, mechanism and code reference handed to engineering
12Manual SQL fixesRead-back query, transaction, verify query — run by a human
22Tickets filed as reporterMost resolved, out of 83 distinct tickets worked
Founder-facing analytics

Six questions, answered from the raw data

Not a dashboard reading. Each question fans out into parallel reads of production, and converges into something the founder can act on.

The founder asks
Who actually churned, and why?
Production Postgres
Grafana Loki
Intercom threads
Attio
Product repos
What came back
Every account classified by driver, with a confidence level
It separated the genuinely churned from the mislabelled, and surfaced accounts still paying with auto-renew off, two systemic bugs holding users, and real customers wrongly excluded as partners.
The churn analysis runs a dossier per account in its own subagent, so the main context stays clean — and it ships with an eval set.1 of 6 · click one to hold it
Oleg Sobolev
”
It’s been great working with Denis on automating our support function with agentic workflows. One person now covers what would normally need a team, and the bugs that reach engineering arrive already traced to the cause.
Oleg SobolevFounder, Extrovert
What actually made it work
A human gate on every write
Read-only database access and no send tool is not a limitation. It is the thing that makes the rest safe to run fast.
Verdicts need a mechanism
“Probably a sync issue” is not an answer. Two independent sources and a named code path, or it does not ship to the customer.
Write the mistake down where it fires
A post-mortem in a document is a diary entry. The same post-mortem as a rule inside the skill is a guardrail.
Routing beats one big prompt
Most of the quality came from the first decision — does this answer depend on account state — not from the depth of any single step.
Documentation is now an interface
Once agents answer on your behalf, help-centre articles are prompts. They have to be executable, not just readable.