
Een model scoorde een zichtbaar verkeerd rood 0.97 merkconform. Dat getal veranderde wat ik bouwde.
Ik herinner me het exacte getal, omdat het me in verlegenheid bracht. 0.968. Een generiek gelijkenismodel bekeek een feestdagenasset waarvan het hero-rood zichtbaar, overduidelijk verkeerd was, en scoorde het 0.97 merkconform. Op een schaal waar 1.0 perfect betekent, vertelde het me dat dit creative net zo goed was als verzonden.
In het eerste deel van dit project ging ik ervan uit dat het moeilijke probleem precies het tegenovergestelde was. Ik dacht dat het interessante werk in betrouwbare AI-content was om de generatie beter te maken, een model te leren de exacte rood van het merk te raken, prompts aan te scherpen tot de output er goed uitzag. Ik bouwde de Brand Fidelity Firewall, een demo van een pre-ship-poort die elke door AI gegenereerde campagne-asset moet doorstaan voordat die wordt verzonden. En ik bleef naar het model grijpen als rechter. Het model was het laatste wat ik voor die taak had moeten vertrouwen.
Dit is het verhaal van hoe één verkeerd getal het hele ding herschikte. Als je de afgewerkte versie wilt zien beslissen over een live batch, draait die op veriprajna.com/nl/demos/brand-fidelity-firewall-pre-ship-poort-voor-ai-content. Maar de demo is het makkelijke deel om naar te kijken. Het deel dat de moeite waard is om op te schrijven, is wat het kostte om te stoppen met het model een taak te vragen die het niet kan doen.
Ik bouwde eerst het verkeerde ding
Ik begon waar de meeste mensen beginnen, namelijk met een gelijkenisscore. Het instinct is redelijk. Je hebt een brand book en je hebt een gegenereerde asset, en je wilt één getal dat zegt hoe dichtbij ze liggen. Elke AI-esthetiektool op de markt geeft je dat getal, en het voelt als governance. Het is geen governance. Het is een vibe met een decimaalpunt.
Om de demo eerlijk te maken bedacht ik een nepmerk om tegen te testen, omdat ik de creatives van een echt bedrijf niet door een proof of concept ging jagen. Het merk is "Lumiere," een synthetisch premiumhuis met de tagline "Quiet luxury, since 1984." De primaire kleur is Lumiere Crimson, Pantone PMS 484, hex #9E2B25, met een tolerantie per kleur van 3.0. Alles wat volgt meet tegen dat brand book. Het is een verzonnen merk, maar de pixels en de specs zijn echt, wat de enige manier is om te testen of een check echt werkt.
Daarna stelde ik een batch van twaalf feestdagenassets samen, opnieuw synthetisch, platte layouts zo gebouwd dat elke check echte pixels meet in plaats van fotografische ruis. De firewall zelf genereert niets. Hij neemt vooraf gegenereerde assets in en beslist wat veilig is om te verzenden, dus de twaalf zijn testfixtures die ik schreef om de checks te belasten. Elf ervan waren in orde. Eén, de asset die ik a08 noemde, had een hero-rood dat elke art director vanaf de overkant van de kamer zou afkeuren. Het matchte #9D2E0B over ongeveer 46 procent van het oppervlak. Dat is een ander rood. Niet subtiel anders. Verkeerd.
En de gelijkenisscore was er dol op.
Een getal dat jouw rood niet van het rood van een concurrent kan onderscheiden, meet niet je merk. Het meet luminantie en haalt de schouders op.
De reden waarom het er dol op was, is de moeite waard om te begrijpen, want het is het hele argument. De generieke baseline die ik gebruikte is een echte perceptuele hash, een DCT-gebaseerde pHash, dezelfde familie van techniek die contentplatforms gebruiken om bijna-dubbele beelden te spotten. Hij is bewust gebouwd om robuust te zijn tegen kleur. Hij let op structuur en luminantie, zodat hij dezelfde foto herkent na een herkleuring of een compressiestap. Die robuustheid is precies de eigenschap die je wilt voor deduplicatie en precies de eigenschap die hem nutteloos maakt als merkrechter. Hij bekeek een correct samengestelde layout met een verkeerd rood erin gegoten en zag een correct samengestelde layout. 0.968. Het zou zijn verzonden.
Wat ziet een gelijkenisscore eigenlijk?
Ik houd die screenshot open wanneer ik dit aan mensen uitleg, omdat het paneel het duidelijker zegt dan ik kan. Links de off-brand asset. Rechts de analyse van de firewall.

Het gat tussen die twee getallen is het hele product. 7.12 tegen een tolerantie van 3.0. Dat is het kleurverschil gemeten in CIEDE2000, de ISO- en CIE-standaard voor perceptueel kleurverschil, geschreven als ΔE00. Het is geen gelijkenisgok en het is niets wat ik heb verzonnen. Het is het getal waarover de kleurwetenschapswereld het al eens was voor de vraag "hoe anders zien deze twee kleuren eruit voor een menselijk oog." Een ΔE00 van 7.12 tegen een tolerantie van 3 is een harde fail. De 0.97 van de gelijkenisscore en de 7.12 van de ΔE00 kijken naar dezelfde pixels en zijn het volledig oneens, en slechts één van beide meet wat een merk echt belangrijk vindt.
De eerste keer dat ik die twee metingen naast elkaar legde, stopte ik volledig met denken aan generatie. Het deed er niet toe hoe goed de generator was. Een perfecte generator produceert nog steeds assets die tegen een exacte specificatie moeten worden gemeten, en een gelijkenismodel is structureel niet in staat die meting te doen. Het probleem was nooit betere creatives maken. Het probleem was weten wat veilig is om te verzenden.
Ik wil precies zijn over één ding, omdat het een plek is waar mensen oververkopen. Ik heb CLIP hier niet gedraaid. CLIP is de metric die veel "AI brand scoring"-pitches noemen, en het echt draaien is een gedocumenteerde drop-in, maar het sleept een afhankelijkheid van ongeveer twee gigabyte mee en het demonstreert dezelfde misser die een pHash gratis demonstreert. Dus de baseline in de demo is een eerlijke perceptuele-hash-stand-in voor de generieke-gelijkenisaanpak, niet CLIP in vermomming. Het punt overleeft hoe dan ook. Gelijkenis, hoe je het ook berekent, kan jouw Pantone-rood niet van een verkeerd rood onderscheiden. Kleurwetenschap wel.
Ik probeerde van het model de rechter te maken. Het antwoordde vloeiend en het had het mis.
Ik kwam niet gracieus tot die conclusie. Een tijdlang was ik overtuigd dat de juiste architectuur was om een capabel vision-language-model de arbiter te laten zijn. Laat het de asset zien, laat het het brand book zien, vraag het te beslissen. Modellen zijn goed in het beschrijven van beelden. Toch zou er één me moeten kunnen vertellen of een asset merkconform was.
Dat kon het niet, en de manier waarop het faalde is het deel dat me ongemakkelijk maakte. Het faalde niet luid. Het faalde beleefd en zelfverzekerd. Ik gaf het het off-brand rood en het produceerde een vloeiende, plausibele alinea over hoe de compositie de ingetogen esthetiek van het merk eerde, en landde op goedkeuren. Dan gaf ik het een correcte asset en kreeg een even vloeiende alinea die soms een denkbeeldig probleem signaleerde. De oordelen waren proza, en proza is precies wat je niet wilt tussen een verkeerd rood en een verzonden campagne.
Er zit een reële kost onder, daarom kon ik het niet wegwuiven als een demo-curiositeit. Consumenten zijn het verschil gaan inprijzen. De helft van hen zegt merken te verkiezen die GenAI-content vermijden, volgens Gartner in maart 2026. Een derde stopt met interactie met een merk zodra content als AI wordt onthuld, volgens Adobes Digital Trends-rapport 2026. Smartly.io vond in 2025 dat gemeten vertrouwen in een advertentie daalt van 48 procent naar 13 procent wanneer die van co-created naar volledig AI gaat. De Coca-Cola AI-feestdagenspot, zeventigduizend gegenereerde clips, werd in het openbaar zielloos genoemd. In Cannes in 2025 zag het DM9-schandaal twaalf prijzen ingetrokken over door AI gefabriceerd beeldmateriaal. Wanneer de downside zo concreet is, is een governancelaag die zelfverzekerde alinea's produceert in plaats van bewijsbare metingen geen waarborg. Het is een aansprakelijkheid met goede manieren.
Als het ding dat tussen een verkeerde asset en een live campagne staat tot alles kan worden overgepraat, is het geen poort. Het is een suggestie.
Dus stopte ik met proberen van het model de rechter te maken. Dat was de wending. Alles wat ik daarna bouwde, gaat ervan uit dat het model de minst betrouwbare component in het systeem is, niet de slimste.
Waarom kleurwetenschap, en niet een betere prompt?
Ik koos ervoor om de kleurcheck de harde, onweerlegbare kern te maken, en ik wil uitleggen waarom ik die vertrouw op een manier waarop ik het model nooit vertrouwde. CIEDE2000 is geen heuristiek die ik tuneerde tot de demo er goed uitzag. Het is een gepubliceerde formule met referentietestdata, en ik valideerde mijn implementatie tegen de Sharma et al. referentiekleurparen. Er is een unit test, test_ciede2000_matches_sharma, en die slaagt als een van vijf geslaagde tests in de suite. Dat doet er meer toe dan het klinkt. Het betekent dat de 7.12 niet mijn mening is over hoe verkeerd het rood is. Het is een reproduceerbare meting die een colorimetrist tegen een handboek zou kunnen checken.
Dat is het verschil tussen een getal dat ik kan verdedigen tegenover een sceptische brand director en een getal waarvoor ik me moet verontschuldigen. Wanneer een gelijkenismodel 0.97 zegt, en iemand vraagt waarom, is het eerlijke antwoord "het model voelde het zo." Wanneer ΔE00 7.12 zegt tegen een tolerantie van 3, is het antwoord "hier zijn de twee kleuren in CIELAB, hier is de standaardformule, hier is de referentievalidatie, en hier overschrijdt 7.12 de 3." Eén van die antwoorden overleeft een juridische review. Het andere overleeft tot de eerste harde vraag.
Een oordeel dat ik kan herleiden tot een gepubliceerde formule overleeft een juridische review. Een oordeel dat ik alleen kan uitleggen als de intuïtie van een model overleeft tot de eerste harde vraag.
Ik leerde ook voorzichtig te zijn over waar de kleur wordt gemeten. Het hele beeld beoordelen zou een piepklein correct logo het gemiddelde terug in tolerantie laten trekken terwijl de enorme verkeerde hero-regio wordt verzonden. Dus de check beoordeelt specifiek de dominante verzadigde hero-regio, wat is hoe het off-brand rood wordt gevangen zelfs wanneer een zuiver crimson logo in de hoek zit en perfect correct is. De poort kijkt waar een menselijk oog eerst kijkt.
De poort moet saai zijn
Ik maakte halverwege een regel voor mezelf: wat beslist, moet saai zijn. Saai betekent deterministisch, gewone code, buiten elk model, testbaar en reproduceerbaar. Het moment waarop een beslissing afhangt van het humeur van een model, stopt die met auditbaar zijn, en een auditbaar oordeel is de hele waarde.
Dus de poort is precies dat. Hij geeft BLOCK bij elke harde fail, FLAG bij de cases die een mens echt moet bezitten, en anders PASS. Er is een unit-geteste invariant waar ik meer om geef dan om elke afzonderlijke feature, test_gate_invariant_no_hard_fail_passes: geen asset met een harde fail wordt ooit teruggegeven als PASS of FLAG. Hij kan er niet doorheen glippen. Dat is een eigenschap die je kunt bewijzen, geen gedrag waarop je hoopt.
Kleur is niet de enige harde block, en ik bouwde bewust een tweede die niets met kleur te maken heeft, om te bewijzen dat de poort geen one-trick kleurmeter is. Asset a09 heeft een perfect crimson, ΔE00 van 0.00, dood op Lumiere Crimson. En de poort blokkeert hem toch.

De derde harde block is regulatoir, en het is degene met echte datums eraan. Als AI-content wordt verzonden naar een markt die een machineleesbare AI-contentopenbaarmaking vereist en die openbaarmaking ontbreekt, is dat een harde block ongeacht hoe goed de pixels zijn. Asset a10 is een schone, merkconforme layout die naar de EU gaat zonder Article 50-label. De openbaarmakingsplicht van Article 50 van de EU AI Act is afdwingbaar op 2 augustus 2026, met boetes tot 15 miljoen euro of 3 procent van de omzet. SB-8420A van New York landt op 9 juni 2026. CAITA van Californië komt in augustus 2026. Section 5 van de FTC hangt over het geheel. Een ontbrekend verplicht label is geen stijlnotitie. Het is een boete die staat te wachten, en de poort behandelt het zo.
Op de volledige demo-batch van twaalf assets komt de splitsing uit op zeven PASS, drie BLOCK, twee FLAG. Dat is een auto-clear-percentage van 58.3 procent op deze specifieke vaste batch, en ik zeg "deze specifieke batch" expres, omdat het een berekend resultaat is op twaalf synthetische assets, geen belofte over jouw productiepijplijn.

De twee FLAG-cases zijn degene waar ik het meest trots op ben, omdat het de cases zijn waarin een eerlijk systeem zegt "ik weet het niet, een mens moet beslissen." Asset a11 bevat een door AI gegenereerd menselijk gezicht, dus het gaat naar een persoon voor authenticiteitsgoedkeuring in plaats van gebluft tot een PASS of een BLOCK. Dat is het NielsenIQ negative-halo-risico, de bevinding dat door AI gegenereerde gezichten de merkperceptie kunnen meesleuren, en het is geen oordeel dat code alleen zou moeten vellen. Asset a12 mikt op Japan, een markt buiten de dekking van het brand book, dus de openbaarmakingsregels zijn onbekend en het gaat naar legal in plaats van vals te worden goedgekeurd. Een poort die nooit onzekerheid toegeeft is niet rigoureus. Hij is roekeloos.
Waar het model nog goed voor is
Ik heb het model niet weggegooid, en ik wil eerlijk zijn over waar het belandde, want "we hebben de AI eruit gehaald" zou een leugen zijn en ook verspilling. Het vision-language-model zit nog in de pijplijn. Het heeft alleen geen stem. Het schrijft een adviserende notitie, één provider-verwisselbare call, en het is alleen informatief. Het onthoudt zich netjes als er geen key is of het een fout geeft, en het verandert nooit een PASS, een FLAG of een BLOCK.

Het model mag zo vloeiend en zelfverzekerd zijn als het wil. Het kan nog steeds geen verkeerd rood verzenden.
Lees die adviserende notitie naast het oordeel en je ziet de gezonde taakverdeling die ik zocht. De poort had al BLOCK gezegd, op de kracht van 7.12 tegen 3.0. Het model voegt de menselijke kleur toe, het waarom-het-ertoe-doet, de zin die een brand director echt wil lezen. Dat is echt nuttig. Het is context, geen oordeel. De deterministische poort beslist. Het model adviseert alleen. Toen ik het model op die stoel zette, stopte ik met er nerveus over te zijn. Zijn vloeiendheid veranderde van een risico in een feature, omdat die vloeiendheid nu onder een oordeel zit dat het geen macht heeft om te bewegen.
Elke goedgekeurde asset exporteert een Brand Fidelity Certificate, JSON plus printbare HTML, met de metingen per check, de herkomst van welke elementen AI versus mens waren, de openbaarmakingsstatus per markt, het poortresultaat, het model en de versie, en een timestamp. Ik moet voorzichtig zijn over wat dat document is. Het is een indienbaar bewijsstuk, een reproduceerbaar bewijs van wat werd gemeten en besloten. Het is geen juridische certificering en het is geen juridisch advies. Het "EU AI Act certified" noemen zou precies het soort zelfverzekerde overdrijving zijn die dit hele project bestaat om af te wijzen.
Generatie was nooit de bottleneck
Ik kom steeds terug bij het moment met 0.968, omdat het mijn gevoel op zijn kop zette over waar het moeilijke probleem zit. Ik had aangenomen dat naarmate generators verbeterden, het vertrouwensprobleem zou krimpen. Dit bouwen overtuigde me van het tegenovergestelde. Een betere generator produceert een verkeerd rood sneller en in hoger volume. Hij vertelt je niet dat het rood verkeerd is. Niets aan modelkwaliteit raakt de vraag of een asset overeenkomt met PMS 484 en een Article 50-label draagt, en dat zijn de vragen die beslissen wat veilig is om te verzenden.
De ongemakkelijke versie hiervan, die ik hardop ben gaan zeggen, is dat het belangrijkste deel van een stack voor betrouwbare AI-content bijna geen AI bevat. De kleurcheck is een formule van een standaardisatie-orgaan. De vrije-ruimte-check is geometrie. De openbaarmakingscheck is een rules engine gemapt op gedateerde wetten. Het ene model in het systeem mag niets beslissen. Dat voelde als iets vreemds om te bouwen tot ik me herinnerde dat het hele punt was om het oordeel te kunnen bewijzen, en je kunt een alinea niet bewijzen.
Je kunt de afgewerkte poort zelf draaien en kijken hoe hij het rood vangt op veriprajna.com/nl/demos/brand-fidelity-firewall-pre-ship-poort-voor-ai-content. Wat ik liever wil dat je meeneemt, is de vraag die hij bij me achterliet. Als je governancelaag kan worden overgepraat om een verkeerd rood goed te keuren met een zelfverzekerde zin, regeerde die dan ooit iets? Of genereerde je alleen sneller en noemde je de snelheid een strategie?
En als je het liever bekijkt dan te lezen hoe ik het beschrijf, hier is de hele poort van begin tot eind.
Ik denk niet dat die vraag makkelijker wordt naarmate de modellen beter worden. Ik denk dat hij scherper wordt.


