Het is de donderdag voor een lang weekend, en je operations-lead heeft drie tabbladen open: een vacaturebord, een spreadsheet met kandidaat-projectmanagers, en een Slack-kanaal waar vier accountmanagers dezelfde vraag stellen. "Hoe staat het met de verbouwing in IJmuiden?" Niks daarvan is een aannameprobleem. Het is een procesautomatiseringsprobleem, en de kosten blijven onzichtbaar tot je ernaar gaat zoeken.
De reflex is om iemand aan te nemen. Nog een projectmanager zou het achternazitten opvangen. Maar een projectmanager kost €4.000 tot €6.000 per maand, en het meeste van wat die zou opvangen is geen management. Het is verzamelwerk. Een getal uit de ene tool in de andere overtypen. Een ontwerper om een update vragen die al in het takenbord staat. Een recente r/webdev-thread verwoordde het bredere punt goed: meer mensen bovenop een zwak proces repareert het proces niet, het verbergt het.
Dit is een veldgids voor de zes taken die het waard zijn om te automatiseren voordat je die vacaturetekst schrijft. Geen ervan vraagt om een fine-tune van een model of een project van zes weken. De meeste zijn een gepland script plus een webhook.
De aanname die het proces verbergt
Een projectmanager die op een kapot proces wordt gezet, wordt een menselijke integratielaag. Die brengt de dag door met het verplaatsen van data tussen systemen die al met elkaar zouden moeten praten, en omdat die er goed in is, merkt niemand dat de systemen nooit gerepareerd zijn. Zes maanden later heb je hetzelfde probleem plus nog een salaris.
Dus voordat je iets automatiseert: schrijf de werkelijke volgorde van een taak op. Wie start 'm, waar begint de data, waar eindigt die, wie wordt er achternagezeten. De helft van de tijd laat de kaart alleen al de oplossing zien.
Een kapot proces automatiseren maakt het kapotte alleen maar sneller en moeilijker te zien. Teken de stappen eerst op papier. Kun je het niet tekenen, dan ben je niet klaar om het te scripten.
Intake bij projectstart
Een deal wordt gesloten. Iemand maakt vervolgens het project aan in de takentool, opent een Slack-kanaal, maakt de drive-map, kopieert er een takentemplate in, nodigt het team uit, en plakt het budget ergens neer. Dertig tot vijfenveertig minuten, en een stap wordt vaak genoeg overgeslagen dat jullie allemaal weleens een project een week hebben zien lopen zonder vastgelegd budget.
Trigger het in plaats daarvan vanuit de CRM. Zodra een deal naar "gewonnen" gaat, bouwt een webhook het skelet:
# intake.py - turn a closed deal into a project skeleton
from fastapi import FastAPI, Request
app = FastAPI()
HOURLY_RATE = 95
@app.post("/intake")
async def intake(req: Request):
deal = await req.json()
project = create_project(
name=deal["client"],
budget_hours=deal["amount"] / HOURLY_RATE,
channel=create_slack_channel(deal["client"]),
)
seed_tasks(project, template=deal["service_type"])
notify(project.lead, f"{deal['client']} is live: {project.url}")
return {"project_id": project.id}
De winst is niet het bespaarde halfuur. Het is dat elk project nu op dezelfde manier begint, zodat elke latere automatisering dezelfde vorm kan aannemen.
Status najagen door het hele team
"Hoe staat het met X" is de duurste zin in een bureau. Het beantwoorden trekt een projectmanager in vijf DM's, die elk iemand onderbreken wiens update al bestaat: in de git-history, de takentool, de urenregistratie.
Haal het op in plaats van erom te vragen. Een script leest elke ochtend de drie bronnen en plaatst één regel per actief project in één kanaal: laatste commit, openstaande taken, verbruikte uren tegenover budget. Geen DM's, geen standup die alleen bestaat om op te halen wat een query ook kon.
Hou het overzicht kort. Eén regel per project, met de verandering sinds gisteren. Een status-update van 400 woorden wordt vluchtig gelezen en daarna genegeerd.
Urenstaten en WIP afstemmen
Elk project heeft een budget en een verbruik. In het gat ertussen sterft de marge stilletjes. De meeste bureaus ontdekken pas dat een project 130% over budget is wanneer iemand eindelijk de urenstaten optelt, oftewel te laat.
Draai de afstemming 's nachts. Tel de goedgekeurde uren per project op, vergelijk tegen de budgeturen, en markeer alles boven de 80%. De uitkomst gaat naar de projectlead, niet naar een rapport dat niemand opent. Het doel is de overschrijding op te vangen terwijl er nog knoppen zijn om aan te draaien.
Statusrapporten voor de klant
De wekelijkse klantupdate is echt werk, en het zijn ook elke week dezelfde drie vragen: wat is opgeleverd, wat zit vast, wat komt er aan. Dat is gestructureerde data, en die heb je al uit het statusoverzicht hierboven.
Genereer het concept, en laat een mens het redigeren en versturen. Automatiseer het versturen niet. Het concept bespaart de leeg-papier-belasting; de mens houdt het oordeel. En weersta de verleiding om een model het te laten opvullen. Een recente Hacker News-thread ving de stemming precies: mensen zijn de door AI gegenereerde lappen tekst in gesprekken zat. Klanten voelen dat meteen. Ze willen drie korte secties, geen essay dat langer duurde om te lezen dan het werk om te doen.
Facturen najagen
Ergens ligt een spreadsheet met onbetaalde facturen, 400 regels diep, met kleurcodes, met de hand bijgehouden. Het is de duidelijkste automatiseringskandidaat in het pand, want de logica is een query:
-- invoices past due that still need a nudge
SELECT id, client_email, amount, due_date
FROM invoices
WHERE status = 'sent'
AND due_date < CURRENT_DATE - INTERVAL '3 days'
AND reminders_sent < 3;
Plan dat in, stuur een herinnering op basis van een template, verhoog de teller. Factureer je via een payment provider, dan hoef je het misschien helemaal niet te bouwen: de automatische herinneringen van Stripe dekken dit vanuit het dashboard. De valkuil is de afstemming, en daar komen we op terug.
Notulen en actiepunten
Klantgesprekken eindigen met afspraken, en afspraken vervagen als ze alleen in iemands notitieblok leven. Een transcript kan worden omgezet in een lijst met actiepunten met een eigenaar en een deadline, rechtstreeks in de takentool geschreven.
Eén regel: een mens controleert de lijst voordat die wordt toegewezen. Transcripts verstaan namen verkeerd en lezen toon verkeerd, en een actiepunt dat een model verzint en stilletjes aan een developer toewijst is erger dan geen automatisering.
De taken die je beter met rust laat
Een project scopen, het lastige gesprek voeren wanneer een klant ontevreden is, beslissen welk van twee uitlopende projecten deze week de senior developer krijgt. Dat is oordeel, en oordeel is het eigenlijke werk van een projectmanager. Het verzamelwerk automatiseren vervangt de rol niet, het ruimt het bureau op zodat de rol gedaan kan worden.
Voor het leidingwerk hoef je niet vanaf nul te beginnen. Open-source tools zoals n8n geven je een self-service workflow-runner, zodat de zes taken hierboven configuratie worden in plaats van een nieuwe codebase. Gebruik die voor de bedrading. Hou het oordeel menselijk.
Toen we een procesautomatisering bouwden voor een Rotterdams recruitmentbureau, was het najagen van facturen de eerste taak die we oppakten, en waar we tegenaan liepen was de afstemming: "betaald" leefde in hun bankfeed, niet in hun facturatietool, dus een naïeve herinnering zou klanten lastigvallen die al hadden afgerekend. We losten het op door het bankexport te matchen tegen openstaande facturen voordat er een herinnering de deur uit ging, precies het soort onglamoureuze detail dat bepaalt of procesautomatisering vertrouwen wint of verliest.
Hier is de versie van vijf minuten. Open je laatste vijf "hoe staat het met X"-threads in Slack. Vraag je bij elk antwoord af waar dat feit leefde voordat een mens het opnieuw in de thread typte. Elk feit dat al in een tool stond is een regel op je backlog, en die backlog is korter dan een vacaturetekst.




