← Blog

Strategy

Content-agent retainers: waar de marge stilletjes weglekt

Je verkocht een content-agent retainer voor €4.500 per klant. Drie maanden later is de API-rekening dubbel zo hoog als begroot. Hier ging je marge naartoe.

Jacob Molkenboer· Oprichter · A Brand New Company· 10 apr 2026· 9 min
Open ivoren leren grootboek op licht bureau, potloodstreepjes, groen zijden lint, koperen presse-papier, rood wassen zegel.

Het is de tweede dinsdag van de maand. Je kijkt naar de P&L per klant van je content-agent product en bij alle acht klanten staat één regel in het rood. Je verkocht de retainer voor €4.500 per maand per klant. De Anthropic-factuur voor de zwaarste klant is €1.380, de geboekte uren van je editor komen op nog eens €1.100, en de statuscalls van de projectmanager heb je niet eens meegerekend. De marge is dun genoeg dat je het niet zou overleven als één van die klanten opzegt.

Het oorspronkelijke salesdeck zei dat de kosten zouden afvlakken. Dat doen ze niet, omdat je een content-agent verkocht maar een content-pipeline oplevert: acht koude, losse, flagship-pipelines die bij elke draft de brand voice opnieuw van nul opbouwen.

Wat volgt is een veldgids voor de vijftien specifieke plekken waar marge weglekt uit een Nederlandse MKB content-agent retainer in 2026. Ze staan op volgorde van wat het kost om ze te dichten. De eerste negen kan een account lead vanmiddag fixen door één prompt-template bestand aan te passen. De laatste zes vragen om een gesprek met de klant over wat de retainer eigenlijk is.

De prijsillusie

De val zit hierin: de eenheid die je aan de klant verkocht is “een gepubliceerde blogpost in onze tone of voice”, maar de eenheid waar je kosten op schalen is “een API-call met getokeniseerde input”. Die twee bewegen niet samen. Een post van 1.200 woorden kan tussen €0,14 en €11 kosten, afhankelijk van welk model 'm schreef, hoe vaak het brand-voice document opnieuw is meegestuurd, hoeveel edit-rondes de editor triggerde, en of de image-stap per paragraaf draaide of één keer aan het einde.

De meeste MKB-bureaus die we hebben doorgelicht leveren de duurste versie van die range en prijzen alsof ze de goedkoopste leveren. Hier zit het verschil.

Negen lekken die een account lead in één prompt-template dicht

1. Elke call standaard naar een flagship-model sturen

Opus voor de outline, voor de draft, voor de edit pass, voor de social-cut, voor de meta description. Een Sonnet-tier model handelt de outline, de brand-voice rewrite, de social-cut en de meta af zonder kwaliteitsverlies dat een menselijke lezer opmerkt. Reserveer de flagship-tier voor de ene stap die er echt baat bij heeft, meestal de eerste long-form draft bij technische klanten. De gepubliceerde prijzen van Anthropic alleen al verklaren een 5x verschil tussen de tiers.

2. Brand voice in de user message in plaats van de system message

Als het brand-voice document, meestal 4 tot 8k tokens “zo schrijven we, zo niet”, in de user message zit, wordt het nooit gecached. Verplaats het naar de system message, markeer het als cacheable prefix, en vanaf de tweede call betaal je een fractie van de eerste. De prompt-caching docs van Anthropic beschrijven hoe het werkt. In de praktijk is deze ene wijziging €40 tot €120 per klant per maand waard bij een cadans van vier posts.

3. De brand voice opnieuw meesturen bij elke paragraaf

De pipeline maakt een outline en itereert daarna paragraaf voor paragraaf. Elke paragraaf-call stuurt de volledige brand voice opnieuw mee. Zelfs met caching heeft het cache-window een TTL van vijf minuten, dus een lange generatie loopt er overheen. Batch de paragraafgeneratie in één call, of schrijf de volledige draft in één keer en edit per paragraaf.

4. Editorial review als flagship-model call

Als je editorial gate “vraag Opus of dit door de brand voice komt en herschrijf zo niet” is, betaal je flagship-tarieven voor classificatiewerk. Een Sonnet-tier classifier met een ja/nee/edit-schema kost een fractie en is deterministischer.

from anthropic import Anthropic

client = Anthropic()

def editorial_gate(draft: str, brand_voice: str) -> dict:
    return client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=300,
        system=[{
            "type": "text",
            "text": brand_voice,
            "cache_control": {"type": "ephemeral"},
        }],
        messages=[{
            "role": "user",
            "content": (
                "Score this draft against the brand voice above. "
                "Return JSON with keys: verdict (pass|edit|reject), "
                "reasons (array of strings), worst_line (string).\n\n"
                f"DRAFT:\n{draft}"
            ),
        }],
    )

5. Geen structured output, dus je parseert markdown

De helft van de tijd van de editor gaat op aan het herformatteren van koppen die het model als bold uitspuugde in plaats van als H2. Pin de output op een JSON-schema of een HTML-fragment, valideer in de API-laag, en de editor edit alleen nog tekst.

6. Image-generatie bij elke post terwijl de klant wekelijks publiceert

Vier hero-images per maand genereren, voor een paar cent per stuk, is prima. Eén per H2 over veertig posts heen is dat niet. Zet de default op één afbeelding per post, gecached op de topic-key, en regenereer alleen als de editor het signaleert.

7. Geen lengtelimiet, dus drafts lopen uit

De klant briefte 800 woorden. Het model leverde 2.400. De editor kortte 'm in. Je betaalde voor 2.400 output-tokens én het uur van de editor. Zet max_tokens op de brieflengte plus 20%, en laat de prompt expliciet zeggen “stop bij 950 woorden, zelfs als de outline meer suggereert”.

8. De volledige CMS-historie in de context dumpen

De “kennisbank” is de laatste 200 posts die de klant gepubliceerd heeft, meegestuurd bij elke call. Voor de kwaliteit doet 'ie heel weinig. Haal via een goedkope embedding-lookup de drie semantisch meest relevante posts op; hou de cache-prefix mager.

9. Brand-voice rewrite draaien op tekst die het model al in voice schreef

Het first-draft model heeft de brand voice al in zijn system prompt. Daarna draait de pipeline nog een “voice-harmonisatie” call over de output. De helft van de tijd verandert er niks en heb je twee keer betaald. Draai eerst de gate (punt 4), en herschrijf alleen de paragrafen die de gate markeert.

Takeaway

Als je alleen punt 1, 2 en 4 fixt, daalt de API-rekening per klant met grofweg twee derde op de meeste retainers die we hebben doorgelicht. De overige zes zijn er bovenop gratis geld.

Zes lekken die om een nieuwe retainer-onderhandeling vragen

10. Vaste prijs, ongelimiteerd revisies

In de retainer staat “we publiceren vier posts per maand”. Er staat niet “na drie editor-rondes worden extra revisies bijgefactureerd”. Dus de klant vraagt ronde vier, ronde vijf, ronde zes, en elke ronde is een nieuwe inference-run plus een editor-pass. Daar prompt je je niet uit; dat is een open commerciële voorwaarde.

11. Geen SLA, dus de kwaliteitslat schuift

In de eerste maand was “goed genoeg” 80% van publicabel. In maand zes verwacht de klant 99%. Je pipeline is niet slechter geworden, de lat is verschoven. Of je herschrijft de SLA in de retainer met meetbare criteria voor wat publicabel is, of je accepteert dat dit een senior-editor product is dat als junior-editor product geprijsd staat.

12. Je verkocht “AI-only” maar mensen reviewen elke post

Het verhaal naar de klant was dat de agent het end-to-end afhandelt. De realiteit is dat de editor alles leest omdat de klant dat na één slechte post eiste. De uren-regel is nu permanent en de prijs is niet meegegaan. Heronderhandel de levering als “AI-drafted, human-finished” en verprijs, of investeer in het editorial-gate werk dat sampling daadwerkelijk veilig maakt.

13. Maatwerk-pipeline per klant, geen gedeelde infra

Acht klanten, acht repositories, acht prompt-sets, acht deploys. Elke model-upgrade is acht migraties. Elke prompt-caching winst moet acht keer geïmplementeerd worden. De retainer was geprijsd alsof je één product had; je hebt er acht. Consolideer naar één pipeline met configuratie per klant, of accepteer dat je een maatwerkstudio runt en prijs daar ook naar.

14. Prijzen per blogpost in plaats van per agent-maand

Prijzen per post straft je af voor elke efficiëntiewinst. Als de agent goedkoper wordt, verwacht de klant dat de prijs zakt. Prijzen per agent-maand, een vaste retainer voor “jouw content-agent, draaiend”, laat je de marge houden die je hebt verdiend door het ding goed te engineeren. De meeste MKB-bureaus die we spreken zitten nog op het eerste model en vragen zich af waarom caching-winst nooit op de bottom line landt.

15. Geen telemetrie per klant, dus je weet niet welke retainer verlies maakt

De Anthropic-factuur is één getal voor het hele bureau. Je vermoedt dat één klant 60% daarvan is, maar je kunt het niet bewijzen, dus behandel je iedereen gelijk en smeer je het verlies uit over het portfolio. Tag elke API-call met een client_id, zet een wekelijkse kostenregel per klant in je operations dashboard, en de slecht passende retainers worden binnen een maand zichtbaar.

Wat je vandaag doet, en wat je voor volgende week inplant

Als je dit 's ochtends leest, kan je punt 1, 2, 4 en 7 voor de lunch live hebben. Het zijn edits in één prompt-template bestand en één model-naam string. De wijziging zie je terug op de volgende facturatiecyclus van Anthropic.

Punt 10 tot en met 15 fix je niet in code. Die fix je door bij de volgende retainer-review binnen te lopen met een document van één pagina waarop staat: “dit is wat we hebben opgeleverd, dit zijn de werkelijke kosten, dit is wat we voor de volgende termijn voorstellen”. De klanten die redelijk zijn verlengen op betere voorwaarden. De klanten die dat niet zijn geven je het antwoord dat je nodig had op de vraag of je die retainer überhaupt moet houden.

Toen we vorig kwartaal de content-pipeline herbouwden voor een Rotterdams B2B-bureau, liepen we ertegenaan dat punt 13 en 15 meer schade aanrichtten dan 1 tot en met 9 bij elkaar: acht forks van dezelfde code zonder zicht per klant. Uiteindelijk hebben we ze geconsolideerd in één configureerbare AI-agent, telemetrie per klant in hun bestaande BI-tool gezet, en twee retainers heronderhandeld omhoog en eentje eruit. De fee per klant veranderde nauwelijks; de marge wel.

Het kleinste wat je vandaag kan doen: open je laatste Anthropic-factuur, sorteer op grootste project_id, en vraag jezelf af of die ene klant je genoeg betaalt om de grootste project_id te rechtvaardigen. Als het antwoord nee is, heb je je eerste gesprek geboekt.

Kern

De meeste MKB content-agent retainers lekken marge op drie te fixen plekken: flagship-model als default, brand voice in de user message in plaats van de system message, en menselijke review geprijsd als een AI-workflow.

FAQ

Gaat de tekstkwaliteit achteruit als ik overstap van een flagship-model naar Sonnet?

Niet op outlines, brand-voice rewrites, social cuts of meta descriptions. De enige stap waar lezers verschil opmerken is de first-draft long-form pass bij technische onderwerpen. Hou daar het flagship, vervang de rest.

Hoeveel bespaart prompt caching daadwerkelijk op een content-retainer?

Bij een klant met vier posts per maand en een brand-voice document van 8k tokens scheelt het verplaatsen naar een gecachte system-prefix typisch €40 tot €120 per klant per maand. De besparing schaalt mee met cadans en documentgrootte.

Moet ik nu elke klant naar prijzen per agent-maand verhuizen?

Nieuwe klanten vandaag, bestaande klanten bij hun volgende verlenging. Prijzen per post straft elke efficiëntiewinst die je oplevert; prijzen per agent-maand laat je de marge houden die caching en routing je opleveren.

Wat is de grootste fout op deze lijst?

Geen client_id meesturen bij je API-calls. Zonder telemetrie per klant kan je niet bewijzen welke retainer bloedt, dus smeer je het verlies uit over het portfolio en onderprijs je ook de volgende deal.

strategyai agentsautomationoperationsbusinesstooling

Iets bouwen?

Start een project