We bouwden een webshop die volledig op AI draait. Dit hebben we geleerd
In maart bouwden we een webshop die volledig op AI draait. Hij scrapet het nieuws, kiest een geschikt onderwerp, ontwerpt daar een T-shirt bij en verkoopt dat in de webshop, allemaal zonder menselijke tussenkomst. Een primeur in België, en het haalde zelfs het nationale nieuws, al is dat jammer genoeg geen T-shirt geworden. Wat hebben we geleerd uit dit project, het resultaat van een hackathon samen met marketing-AI-studio MARKOMATIC en AI-consultant NXTGN? Onze AI-experts blikten graag terug en delen hun inzichten.
Les 1: een stevig architecturaal fundament is de tijd waard
Nog voor er één regel code geschreven is, loont het enorm om het team op één lijn te krijgen over de architectuur en meteen op schaalbaarheid te ontwerpen. Een korte maar gefocuste sessie over structuur, services en aanpak geeft iedereen een helder vertrekpunt voor de rest van het traject.
Vanaf dat vertrekpunt liep de weg naar de eindmeet wel via een paar omwegen. Tijdens de ontwikkeling doken details en problemen op die bij de eerste analyse gewoon niet zichtbaar waren. De opbouw van services en agents verschuift, processtappen bleken complexer dan gedacht, en het koppelen van verschillende services brengt vaak extra logicalagen of databasetabellen naar boven waar niemand rekening mee hield. Dat is normaal. Meerdere iteraties zijn geen teken van slechte voorbereiding, maar een onvermijdelijk kenmerk van het bouwproces.
Les 2: AI voegt onnodige complexiteit toe als je niet stuurt
Een terugkerend patroon: AI-assistenten voegen te veel toe. Bij Terraform-modules op maat implementeert AI elke denkbare use case, in plaats van de configuratie af te stemmen op onze specifieke situatie. Serverless-configuraties bevatten dan weer opties die al standaard ingesteld staan, ondertussen verouderd zijn of gewoon fout. Hetzelfde geldt voor Docker-builds of het bundelen van code, waar overbodige opties de configuratie nodeloos zwaar maken. Kritisch nalezen blijft dus essentieel. Zeker, of net, wanneer AI het eerste voorstel doet. AI-assistentie versnelt het coderen fors, maar je eigen expertise blijft de motor.
Les 3: Shopify als hefboom voor snelle oplevering
Shopify biedt een pak meer standaardfunctionaliteit dan we vooraf dachten. Door slim te gebruiken wat het platform al aanbiedt, vermeden we maatwerk waar het niet nodig was en wonnen we tijd voor de dingen die er echt toe doen.
Les 4: AWS Step Functions optimaliseren met native ASL
Voor veel van onze applicaties kiezen we voor serverless architecturen, vooral omwille van de schaalbaarheid en de kostenefficientie. Dat geldt ook voor het project “Is this real?”. Een deel van het proces is deterministisch, en daarvoor gebruiken we AWS Step Functions, een patroon dat we geregeld toepassen voor deterministische AI-workflows.
Traditioneel gebruiken we het Serverless Framework in combinatie met de plugin serverless-step-functions. Door onze bestandsstructuur te optimaliseren ontdekten we dat we Amazon States Language (ASL) rechtstreeks kunnen gebruiken, zonder abstractielaag. Dat bood een belangrijk voordeel: we konden de previewfunctie van de AWS Toolkit voor Visual Studio Code gebruiken om onze state machines visueel te ontwerpen en te valideren vóór de deployment.
Die aanpak stroomlijnde ons ontwikkelproces aanzienlijk. We konden lokaal itereren en valideren, wat het aantal trial-and-error deployments drastisch verminderde. Het resultaat: snellere ontwikkelcycli en lagere cloudkosten tijdens de ontwikkelfase.
Les 5: overstappen op EventBridge Scheduler met native tijdzone-ondersteuning
Het generatieproces van “Is this real?” draait dagelijks op een vast tijdstip. Oorspronkelijk gebruikten we daarvoor EventBridge scheduled events binnen het Serverless Framework. Later schakelden we over op EventBridge Scheduler, dat een belangrijk voordeel biedt: native ondersteuning voor tijdzones.
Dat betekent dat het generatieproces echt elke dag op hetzelfde moment loopt, ongeacht de overgang tussen zomer- en wintertijd. De scheduler past de uitvoering automatisch aan zonder extra configuratie, waardoor het proces het hele jaar door consistent blijft.
Les 6: Claude Code tijdens rapid prototyping
We gebruiken Claude Code al een tijd als codeerassistent en zien onze ontwikkeling er duidelijk door versnellen. Tijdens “Is this real?” botsten we wel op een aantal beperkingen die in vergelijkbare situaties relevant zijn.
Een concreet voorbeeld: hoewel we met een stevige projectblauwdruk werkten, was dat in essentie een “leeg vertrekpunt”. Claude Code komt moeilijk op gang wanneer de eerste briefing beperkt is, omdat de te hanteren architectuur en structuur op dat moment onvoldoende vastliggen.
We leerden dat het essentieel is om vooraf een zo helder mogelijke briefing klaar te leggen, en indien nodig zelf een aantal kernstructuren manueel uit te tekenen voor Claude Code optimaal kan bijdragen. Dat vormt het fundament waarop de AI-assistent verder kan bouwen.
In klassieke projectcontexten speelt dit minder, want daar ligt er meestal een uitgewerkte briefing klaar. In hackathons of rapid prototyping zoals “Is this real?” is die voorbereiding wel cruciaal voor geslaagde AI-ondersteunde ontwikkeling.
Les 7: containers in plaats van Lambda layers voor AI en Python
Bij AI-projecten in Python leerden we dat je beter meteen naar containers grijpt en Lambda layers vermijdt. De reden is een harde limiet op de omvang: Lambda layers zijn samen begrensd op 250 MB uitgepakt, terwijl een Lambda container image tot 10 GB aankan. AI- en ML-bibliotheken (denk aan PyTorch, Transformers, LangChain en al hun afhankelijkheden) gaan routineus over die 250 MB, nog voor je eigen code erbij zit. Containers geven je de ruimte die je nodig hebt, zonder het risico dat je op het slechtst mogelijke moment tegen een muur loopt.
Les 8: taken verdelen is een actieve vaardigheid
Het project bleek in uitvoering complexer dan de oorspronkelijke inschatting deed vermoeden. Op zich niet ongewoon, maar in een hackathon waar tijd het schaarse goed is, moesten we snel schakelen. Toen bleek dat de AI-pijplijn meer werk vroeg dan ingeschat, herverdeelden we de taken zodat iedereen productief kon blijven. Taakverdeling bewust sturen, in plaats van er blind op te vertrouwen dat het zichzelf oplost, is een vaardigheid op zich. Zeker onder tijdsdruk.
Les 9: AI-beeldgeneratie overtreft de verwachtingen, maar consistentie is de grootste uitdaging
De kwaliteit van hedendaagse beeldgeneratie verraste het team oprecht. De T-shirtontwerpen overtroffen keer op keer de verwachtingen, en tonen wat dit domein in de toekomst kan betekenen. De grootste technische uitdaging was wel de consistentie bewaken, zowel visueel als tekstueel. AI is per definitie niet grappig (ze simuleert humor op basis van patronen), maar we hebben de lat hoog genoeg gelegd om zelfs een journalist van De Tijd te doen zeggen dat de resultaten echt grappig waren. Daar mogen we trots op zijn, ook al kostte het heel wat iteraties om er te geraken.
Les 10: deploymentproblemen houden geen rekening met deadlines
Ook tijdens een hackathon loop je tegen deploymentproblemen aan, en net daarom doen ze pijn: ze vreten kostbare tijd die je liever aan verdere ontwikkeling besteedt. De les is niet dat je ze altijd kan vermijden, maar dat je er vooraf ruimte voor moet inbouwen in je tijdsbuffer.
Les 11: een hackathon duurt te kort om kwalitatief bij te sturen
De beschikbare tijd laat niet toe om het eindresultaat tot het gewenste kwaliteitsniveau te verfijnen. Een concreet voorbeeld: tijdens de eerste liveperiode genereerde de agent die nieuwsitems selecteert bijna dagelijks content over Donald Trump. Dat patroon was niet de bedoeling. Integendeel: variatie in onderwerpen is cruciaal voor de geloofwaardigheid van het concept. We moesten bijsturen, wat aantoont dat promptlogica en contentbeleid meer aandacht verdienen dan een hackathon doorgaans toelaat.
Bonusles: muziek was een onverwachte productiviteitsboost
Tot slot een minder technische vaststelling: met luide drum-'n-bass tegen het einde van de hackathon gaf iedereen net dat tikkeltje meer. Soms zijn de eenvoudigste ingrepen de meest effectieve.
Tot slot
De weg van losjes aan elkaar geknoopte scripts naar een werkende productiepijplijn was zwaarder dan verwacht, maar ook een pak leuker. Iets productieklaar maken vraagt meer discipline, structuur en doorzettingsvermogen dan de eerste vibe-codingfase, en net dat maakt het de moeite waard.
Heb je een nieuwe uitdaging voor ons? Neem contact op, we verleggen graag grenzen.



