SaaS
AI-agent marges per seat: 16 rekenfouten van founders
Twee offertes op de keukentafel om middernacht: Gainsight op €280k, een AI-agent op €72k. Geen van beide klopt. Hier is waarom, en welke je vanavond fixt.

Het is eind juni en je zit in Amsterdam. Twee offertes op de keukentafel. De Gainsight-uitbreiding die je head of CS wil — €280k in jaar één, voornamelijk seat-licenties voor de 1.400 accounts in jullie boek. En de AI-agent die jullie CTO heeft uitgewerkt — €72k all-in, "met Sonnet en een Mixpanel event-cache." Geen van jullie vertrouwt het eigen getal. Allebei zitten jullie binnen een factor drie van het juiste antwoord.
De oorzaak is bijna nooit de modelprijs. De oorzaak is dat de per-seat marge op een customer-success agent tegen de verkeerde eenheid wordt afgezet. Soms is de fix een prompt template. Soms is het een herschrijving van de pricing page. Weten welke welke is, houdt het ACV-lek dicht vóór het renewal-seizoen begint.
Waarom de seat de verkeerde eenheid is
Een CS-agent wordt niet per seat aangeroepen. Hij wordt per event aangeroepen — een usage-drop in Mixpanel, een NPS-dip, een ticket dat heropent, een renewal die over zestig dagen aankomt. Je seat-aantal is grofweg constant per kwartaal. Je event-aantal niet. Een boek met 1.400 accounts genereert tussen de 80k en 400k qualifying events per maand, afhankelijk van hoe strikt je CS-team "qualifying" heeft gedefinieerd. Zodra je het account-profiel cached, beantwoordt de agent de meeste events in minder dan 1k input-tokens.
In die kloof tussen billing unit en cost unit zit elke margefout. Hieronder: de veldgids. Twee groepen. De eerste fix je vanavond, in een prompt template dat je head of CS al beheert. De tweede dwingt een herschrijving af van de pricing page, het comp plan en de renewal motion.
Acht fouten die je vanavond in een prompt template fixt
Geen van deze fouten vraagt engineering. Allemaal vragen ze dat je toegeeft dat je het verkeerde voorbeeld uit een vendor-demo hebt overgenomen.
- Tokens tegen lijstprijs rekenen. Je hebt de agent geprijsd tegen Anthropic's gepubliceerde per-miljoen-token tarief en bent vergeten dat prompt caching de gecachede input naar 10% daarvan brengt. Voor een agent die hetzelfde account-profiel 40 keer per maand opnieuw leest, is dat grofweg 75% korting op je input-rekening.
- De health-score gate overslaan. De agent wordt op elk event aangeroepen in plaats van op elk event dat een rubric-drempel passeert. Een gate van drie regels ("alleen reageren als health < 60 EN days_to_renewal < 90") verlaagt het callvolume met 60–80% op een doorsnee boek.
- Proza genereren waar een payload volstaat. CS leest de agent-output als een rij in een queue, niet als een paragraaf. Vraag om JSON met vijf velden. Je bespaart het grootste deel van je output-tokens en je CSM's stoppen met scannen.
- De hele accounthistorie meesturen. Een rollende Mixpanel-window van 30 dagen dekt 95% van het signaal. De overige 5% zit in twee samenvattingsvelden die je wekelijks vooraf kunt berekenen.
- Naar Opus grijpen. Sonnet handelt de rubric prima af. Opus duikt op in je rekening omdat iemand om 23.00 edge cases testte en vergat terug te wisselen.
- Opnieuw over de tier laten nadenken. Als de klant op Starter zit, weet de rubric dat al. Vraag het model niet om het uit de events af te leiden.
- Eén event, één call. Batch drie events in één call wanneer ze binnen een venster van 15 minuten binnenkomen. Het model merkt het niet. Je rekening daalt met een derde.
- "Geen actie" behandelen als falen. De goedkoopste output die de agent produceert is "geen actie nodig, herchecken over 14 dagen." Werk dat in de rubric en stop met op elk stil account een aanbeveling forceren.
Samen toegepast brengt deze groep de kosten-per-account-per-maand doorgaans van een getal dat de CFO bang maakt terug naar een getal dat in de platformregel verdwijnt.
Een prompt template dat zes daarvan in één klap dichttimmert
You are the CS triage agent for {{product_name}}.
Inputs:
- account_profile (cached): {{cached_profile}}
- last_30d_events: {{events_json}}
- health_score: {{score}}
- days_to_renewal: {{dtr}}
- plan_tier: {{tier}}
Gate:
- If health_score >= 60 AND days_to_renewal > 90, return:
{"action":"none","recheck_in_days":14}
- Otherwise continue.
Return JSON only:
{
"action": "outreach" | "escalate" | "monitor" | "none",
"reason_code": "usage_drop|nps_dip|ticket_spike|dormant|renewal_risk",
"csm_note": "<= 240 chars, plain text",
"recheck_in_days": 14
}
Dit is grofweg de vorm die in productie draait voor een boek van 1.400 accounts, op ongeveer €900 per maand aan Sonnet plus gecachede input, tegenover de Gainsight-offerte van €280k. De gate alléén snijdt al meer in de uitgaven dan welke onderhandeling over de model-tier dan ook.
Tachtig procent van de margefout op een CS-agent is een ontbrekende rubric-gate, een ongecachet profiel en een model-tier die niemand na week één heeft heroverwogen.
Acht fouten die je pricing page laten herschrijven
Dit zijn de fouten waar geen promptwijziging je redt. De billing unit klopt niet, de contractvorm klopt niet, of je CFO heeft de FX niet meegenomen. Elk lek tikt ACV langzaam weg tot aan de renewal, en dan hard.
- De agent per seat prijzen. Je kostendrijver is event-volume; het seat-aantal van je klant is vlak. Je verkoopt een eenheid die niemand koopt.
- In de platform fee bundelen zonder marginale-kostenregel. De eerste whale die 4M events per maand afvuurt, vreet de marge van de volgende tien klanten op. Er valt niets te heronderhandelen.
- Gainsight-seats meetellen als "bespaard". Als je die CSM's niet verschuift naar expansion of onboarding, verschijnt de besparing niet in EBITDA. Hij verschijnt als headcount die je niet hebt geschrapt en ook niet hebt verplaatst.
- In EUR quoten, in USD betalen. Jaarcontracten in EUR tegenover een USD compute-rekening leveren een schommeling van 5–8% in brutomarge per FX-cyclus. Hedge of bereken het door.
- Aannemen dat het seat-aantal stabiel is. Een typisch B2B SaaS-boek churnt 8–12% van de seats per jaar bínnen accounts die "verlengd" hebben. Je per-seat marge halveert op die accounts.
- Op de mediaan prijzen. De top 5% van de accounts veroorzaakt het grootste deel van de agent-compute. Pakketten op medianeprijs geven die 5% jouw marge cadeau.
- De agent meegeven in freemium. Marginale kosten zijn groter dan nul. Marginale omzet is nul. Die rekensom komt nooit goed.
- Niet factureren voor "geen actie"-calls. Intern zijn ze goedkoop. Extern zijn ze onzichtbaar. Je sales-team gaat quoten op de rekening, niet op de waarde, en biedt zichzelf onder.
Het patroon: voor elk van deze fouten moet je SKU's, finance én de renewal motion aanraken. Geen ervan lost je head of CS in zijn eentje op. Samen zijn ze de reden dat de founder uiteindelijk de Gainsight-offerte tekent — Gainsight prijst tenminste per seat, en dat is de eenheid die het comp plan al spreekt.
Het patroon dat ontstaat als je alle zestien uitzet
Zet ze uit op twee assen: kosten van de fix (promptwijziging links, SKU-herschrijving rechts) op de x-as, maandelijks teruggewonnen marge op de y-as. De vorm, op elk B2B SaaS-boek onder €7M ARR dat we hebben gezien, is dezelfde. Vier of vijf prompt-template fixes winnen grofweg 60–70% van het lek terug. De resterende 30–40% zit in twee of drie pricing-page items — bijna altijd #9, #10 en #14. De rest is afronding.
Heb je alleen een middag, dan rol je het prompt template uit en boek je een sessie van 90 minuten met finance over #9 en #14. Die volgorde wint consistent genoeg marge terug om het tweede jaar van de agent te financieren zonder prijsverhoging.
Wanneer Gainsight zijn regel nog verdient
Twee scenario's. Eén: je opereert onder regelgeving en de CS-workflow vraagt om auditable, role-based UI voor menselijke goedkeurders — dat van de plank kopen is sneller dan het zelf bouwen. Twee: je CS-team heeft nul engineering-capaciteit en het rubric-werk zelf is de bottleneck; de templates van Gainsight geven je iets concreets om tegenover te zetten. In beide gevallen bestaan de agent en Gainsight naast elkaar, waarbij de agent Gainsight's API aanroept in plaats van de seats te vervangen. De €280k krimpt niet, maar het is geen margevraagstuk meer; het wordt een workflow-vraagstuk. Dat is een ander gesprek, en een eerlijker.
Wat je morgen doet
Trek het Mixpanel event-aantal van vorige maand voor je CS-eligible events. Vermenigvuldig met het gecachede Sonnet input-tarief, plus een output-budget van zo'n 500 tokens per call. Vergelijk dat getal met je huidige per-seat CS-omzet. Is de ratio onder de 8%, dan heb je een werkbare agent-business en is de vraag pricing-page hygiëne. Is hij boven de 25%, dan ontbreekt de gate en kun je het in één middag fixen.
Toen we eerder dit jaar de CS-triage agent bouwden voor een Utrechtse ops-SaaS, liepen we tegen item #10 aan — de agent zat gebundeld in de platform fee, en één whale-account at een kwart van de marge-pool in zijn eentje. We hebben het opgelost met een metered overage SKU en een striktere rubric-gate, het soort AI-agent werk dat het snelst terugverdient. De prompt-template fixes kostten een middag. De SKU-herschrijving zes weken. Begin met die middag.
Kern
Per seat prijzen op een CS-agent is een eenheid verkopen die niemand koopt: de kostendrijver is event-volume, niet headcount, en in de rubric-gate zit de marge.
FAQ
Moeten we de CS-agent zelf bouwen of gewoon Gainsight kopen?
Meestal allebei. Bouw de triage-agent tegen je event-stream en laat hem Gainsight's API aanroepen voor de menselijke approval-workflow. De agent eigent zich het volume toe; Gainsight eigent zich de audit toe.
Wat kost het draaien van een CS-agent voor 1.400 accounts daadwerkelijk?
Met prompt caching, een health-score gate en Sonnet voor de rubric: grofweg €700–€1.200 per maand aan model spend. Zonder de gate vijf tot tien keer zoveel. De gate is de variabele.
Welke van de zestien fouten lekt de meeste ACV?
Nummer negen: de agent per seat prijzen. Je kost is per event, je klant koopt seats, en het gat groeit bij elke renewal. Hij is ook het lastigst terug te draaien, omdat hij de pricing page raakt.
Kunnen we de CS-agent in onze free of freemium tier opnemen?
Alleen als je het event-volume hard limiteert. Marginale kosten zijn boven nul, marginale omzet is nul, dus een ongelimiteerde free tier is een langzaam EBITDA-lek. Limiteer calls per account per maand of gate op plan.
Hoe snel zien we de prompt-template fixes terug op de rekening?
Binnen één billing-cyclus. De health-score gate en de cached-profile wijziging verlagen het callvolume en de input-kosten per call op de eerstvolgende factuur. SKU- en pricing-page wijzigingen vragen een volledige renewal-cyclus.