pAinappleContact

Case 08

Inbound in plaats van scouting: het ambassadeursprogramma

De eerste versie van het ambassadeursprogramma ging over kandidaten vinden en beoordelen. Toen duidelijk werd wat de klant werkelijk nodig had, is dat model dezelfde avond weggegooid en vervangen door een aanmeldpagina die zelf filtert, mailt en een bestelling klaarzet.

Aanmelden

Inbound, geen scouting

Filtering

Automatisch, per merk, sport en product

Van brief tot bestelklare order

Twee fases, dezelfde avond

Wettelijke aanleiding

AVG en Telecommunicatiewet art. 11.7

Situatie

Waar dit begon

De opdracht was een ambassadeursprogramma voor een merk: een manier om mensen die het merk willen vertegenwoordigen te vinden, te beoordelen en op te volgen. De eerste versie (fase 1) bouwde daarvoor een FastAPI-module met handmatige kandidaatinvoer: iemand voert een kandidaat in, met diens volgers, community-omvang en of die een aantoonbare leidersrol heeft, en de kandidaat wordt automatisch getoetst aan de criteria van het merk. Die criteria liggen als data vast, nooit als code: een verplicht criterium is een harde eis, een niet-verplicht criterium telt alleen mee in een gewogen score. Een verkeerd ingestelde regel laat de toetsing falen in plaats van in stilte iedereen te laten slagen of zakken.

Fase 1 kwam met een expliciete grens: social scouting, verrijking en geautomatiseerde outreach bleven bewust buiten scope, voor een latere fase. Er stond een werkend, getest stuk toetsingslogica, een demo-merk met voorbeeldkandidaten, en een adminpagina om de wachtrij te beheren.

Beslissing

Wat we besloten, en waarom niet anders

Fase 2 begon minder dan drie kwartier later, en gooide het kandidatenmodel van fase 1 volledig om. Wat de klant werkelijk had beschreven was geen matchingtool tussen merk en kandidaat, en geen marktplaats: het is gereedschap dat een merk koopt om zijn eigen ambassadeursprogramma te draaien, met aanmeldingen die zelf binnenkomen. Het probleem van de klant is niet mensen vínden — advertenties leveren meer aanmeldingen op dan hij kan verwerken — het is alles filteren en afhandelen wat daarna komt.

Inbound-only is ook geen stijlkeuze maar de enige juridisch houdbare vorm: sociale platforms afschrapen en de resultaten koud benaderen is niet toegestaan onder de AVG en art. 11.7 Telecommunicatiewet, terwijl iemand die zelf een aanmeldformulier invult zijn gegevens precies voor dat doel heeft afgestaan. Fase 1's kandidatenmodel is daarom niet naast de nieuwe opzet blijven staan — de tabellen bevatten alleen dit repo's eigen demogegevens, dus er was niets te migreren.

De rest van het ontwerp uit fase 1 bleef wel overeind: criteria als databestand in plaats van code, niets slaat een verdict of score op — beide worden bij elke lezing herberekend uit de aanmelding, de socials en de criteria van het merk, zodat een gewijzigde drempel nooit een verouderde kopie kan achterlaten. Een handmatige overrule wordt wel bewaard, met de automatische uitkomst er zichtbaar naast.

Verloop

Wat er gebeurde, in volgorde

  1. 30 augustus 2026, 19:14

    Fase 1: handmatige kandidaten en toetsing

    Een ambassadors-module (slug amb, amb_-tabellen) plus een /ambassadeurs/-pagina: kandidaten handmatig invoeren, toetsen aan per-merk criteria (minimum volgers op een platform, minimum community-omvang, bevestigd leiderschap), en een pipelinestatus per kandidaat. Verplichte criteria zijn harde eisen, niet-verplichte tellen mee in een gewogen score; een verkeerd ingestelde criterium faalt hard in plaats van iedereen te laten slagen. Geen verdict wordt opgeslagen — alles wordt bij elke lezing herberekend. Social scouting/verrijking en geautomatiseerde outreach bleven expliciet buiten scope.

  2. 30 augustus 2026, 19:58

    Fase 2: het model omgegooid naar wat de klant echt bedoelde

    De module herbouwd rond inbound aanmeldingen in plaats van scouting: een publieke aanmeldpagina per merk zonder login (/ambassadeur-worden/{merk}/) met naam, e-mail, socials, sport of community, een vrije pitch en een product met maat/kleur uit de eigen catalogus van het merk — beveiligd met een honeypot, een rate limit per IP en validatie tegen de eigen rijen van het merk. Automatische scoring bij binnenkomst tegen de criteria die gelden voor dat merk, die sport en dat product. Bij een geslaagde toetsing volgt een mail met een no-login link naar precies drie vragen (adres, maatbevestiging, kortingscode), daarna een bevestigingsmail, en een bestelrecord compleet genoeg om in één stap te verwerken: product, variant, adres, kortingscode, nulwaarde, ambassador-tag, zichtbaar op de adminpagina en downloadbaar als CSV. Fase 1's kandidatenmodel is verwijderd — de tabellen bevatten alleen demogegevens van dit repo.

  3. 30 augustus 2026, 20:07

    Een echte onderbroken-seed bug, dezelfde avond hersteld

    De seed van het demovoorbeeld stopte zodra er al een merk bestond, wat een halve invoer permanent kon maken: een proces dat afbrak tussen het aanmaken van het merk en de rest liet een merkrij zonder sporten, producten of criteria achter, en de bestaande guard blokkeerde daarna elke poging om dat te herstellen. Dat gebeurde voor het echt, tijdens deze fase-2-omschakeling zelf, doordat een herstart middenin een seed viel. Tussenliggende rijen worden nu alleen geflusht voor hun ids, met één commit aan het eind, zodat een onderbroken seed volledig terugrolt en de volgende start weer schoon seedt.

Van Linear-brief naar een werkend, klantgezicht product gaat niet altijd in één rechte lijn: fase 1 loste het verkeerde probleem netjes op, en de waarde zat in dat binnen dezelfde avond te herkennen en het model weg te gooien in plaats van het ernaast te laten staan.

Fase 1 was geen mislukking om te verbergen: het leverde getest, werkend toetsingswerk op dat grotendeels overeind bleef — data-gedreven criteria, herberekende verdicts, een demo die veilig blijft seeden. Wat er niet overeind bleef was de aanname dat dit een matching- of scoutingtool moest zijn. Zodra dat scherp werd, is het kandidatenmodel niet gemigreerd of naast de nieuwe opzet gehouden — het is weggehaald, omdat de tabellen alleen dit repo's eigen demorijen bevatten en er dus niets te verliezen was.

Diezelfde avond kwam er ook een echte productiebug uit voort — een onderbroken seed die een halve merkrij achterliet — en die is ter plekke gerepareerd in plaats van als los ticket weggezet. Van een manuele kandidatenlijst tot een publieke aanmeldpagina met automatische filtering en een bestelklare order: dat is de volledige afstand tussen een brief en een werkend, aanmelder-gericht product, binnen één bouwsessie afgelegd.

Volgende stap

Zo'n verhaal, maar dan uw eigen

Niet elk eerste ontwerp is het goede ontwerp, en dat hoeft geen probleem te zijn zolang de weg terug net zo snel gaat als de weg ernaartoe. Als uw volgende idee ook zo'n aanname bevat die pas bij het bouwen zichtbaar wordt, is dat precies het moment om te bellen voordat er wordt gebouwd, of vlak erna om bij te sturen.