Elke week bouwen we een fictief bedrijf een complete website in ongeveer een uur, alleen via de chat in DirectAdmin. Deze week: Kapsalon Knip & Zo in Groningen, twee kappers, knippen, kleuren en baardverzorging. Het model: OpenAI Codex op GPT-6-Astra. De site staat live op kapsalon.nieuwesite.nl en blijft staan.
De regels zijn simpel. Een leeg domein, vier opdrachten die we letterlijk intypen, de assistent in auto-modus, en niemand die tussendoor iets repareert. De tijden hieronder komen uit het run-log van de assistent.
De cijfers
| Taak | Opdracht | Tijd | Goedkeuringen | Resultaat |
|---|---|---|---|---|
| 1 | WordPress installeren | 196 s (chat bleef 25 min hangen) | 0 | WordPress live met eigen database |
| 2 | Eigen thema bouwen | 485 s | 0 | Thema knip-en-zo, 4 pagina's, mobiel gecontroleerd |
| 3 | Reserveringsplugin | 614 s | 0 | Plugin met beheerpagina en bevestigingsmail |
| 4 | LiteSpeed Cache instellen en meten | 226 s | 0 | Cache aan, laadtijd voor en na gemeten |
| 5 | Gegevens invullen (extra) | 210 s + 106 s | 0 | Online reserveren aan |
Model: OpenAI Codex, GPT-6-Astra, auto-modus. Totaal run: 47 minuten, waarvan 25 minuten wachten op een vastgelopen chat (taak 1). Netto bouwtijd voor vier taken: ongeveer 25 minuten.
De opdrachten
1. "Installeer WordPress met de titel Kapsalon Knip & Zo." Codex keek eerst in de map, zag dat die leeg was, en installeerde WordPress met een eigen database. Volgens Codex' eigen sessielog was dat na 3 minuten en 16 seconden klaar. In de chat bleef het daarna hangen op "Voert een opdracht uit", 25 minuten lang. Daarover verderop meer, want het lag niet aan Codex.
2. "Maak een eigen thema voor Kapsalon Knip & Zo: een warme, moderne kapsalon in Groningen met twee kappers. Homepage met openingstijden van vandaag, een prijslijst, een pagina Over ons met de twee kappers, en een contactpagina met kaart. Geen standaardsjabloon." 485 seconden. Een thema met de naam knip-en-zo, diep aubergine op een warm crème, een eigen font, een grote kop "Goed haar. Helemaal jij.", prijslijst, Over ons, Contact met kaart, en een badge "Twee kappers. Alle aandacht." Codex controleerde het resultaat zelf op desktop en mobiel met screenshots.

Wat opviel: de assistent vroeg om de namen van de kappers, het adres, het telefoonnummer, de openingstijden en de prijzen. Die hadden we niet gegeven. In plaats van ze te verzinnen zette Codex overal "volgt binnenkort" neer en bouwde verder.
3. "Maak een plugin waarmee klanten online een afspraak reserveren: keuze uit behandeling, kapper, datum en tijd, met een beheerpagina voor de kapsalon en een bevestigingsmail." 614 seconden. Plugin knip-zo-afspraken: behandeling, kapper, datum en tijd, beheer onder WordPress → Afspraken, bevestigingsmails, bescherming tegen dubbele boekingen, en een eigen test die de pagina op mobiel en desktop nakeek.
Ook hier hetzelfde patroon: omdat de echte behandelingen en kappers ontbraken, zette Codex online boeken bewust uit en toonde de pagina "Online reserveren is binnenkort mogelijk". Netjes, maar voor een demo van een boekingsplugin is dat een zwak plaatje. Dus gaven we de gegevens alsnog.
5. De gegevens. Twee kappers, adres, telefoon, openingstijden en prijzen in één bericht: 210 seconden, alles ingevuld, en toen een tegenvraag: hoe lang duurt elke behandeling? Die tijden erbij: 106 seconden, online reserveren aan, en Codex controleerde zelf dat elke combinatie van behandeling, kapper, datum en tijd werkt.

4. "Stel LiteSpeed Cache goed in voor deze site en meet het verschil in laadtijd voor en na." 226 seconden. Browsercache aan, bestanden verkleind, en de afspraakpagina en de openingstijden bewust buiten de cache gehouden. Daarna zeven metingen voor en na, middelste waarde: desktop van 333 naar 324 milliseconden, mobiel van 305 naar 303. Codex' eigen conclusie: de site was al snel en dit verschil valt binnen de meetruis. Dat is een eerlijker antwoord dan een mooi percentage.
De hele site, pagina voor pagina
Alle vier pagina's uit het menu zoals ze nu live staan, als volledige schermafdruk. Scroll in het venster om een pagina helemaal te zien. Met de knop mobiel zie je hoe dezelfde pagina er op een telefoon uitziet.

Wat misging
Eén ding, en het lag aan ons. Na de WordPress-installatie stuurt Codex een lijst van alle 398 geschreven bestanden naar de chat. Onze koppeling maakt daar per bestand een wijzigingskaart van, met de volledige inhoud erbij. Die stroom liep vast, vermoedelijk daar. Codex was al klaar, WordPress stond, maar de chat bleef op "Voert een opdracht uit" staan tot onze wachttijd van 25 minuten om was. Bij het thema (17 bestanden) en de plugin ging het wel goed.
De fix staat op de lijst: grote wijzigingen samenvatten in plaats van per bestand tonen, en een wachthond in de koppeling die ingrijpt als Codex klaar meldt maar de chat dat niet doorkrijgt. Zonder die hapering was het hele project in ruim 25 minuten klaar geweest: 196, 485, 614 en 226 seconden.
Wat we leerden
- Geef de feiten mee, of laat hem aannames doen. Codex verzint geen kappersnamen, adressen of prijzen en vroeg er twee keer om. Netjes, maar in auto-modus wil je dat hij doorbouwt. Sinds deze aflevering staat in de vaste regels van de assistent: kies bij ontbrekende gegevens een herkenbare voorbeeldwaarde, bouw de functie werkend op en vraag de echte gegevens achteraf. Vragen stelt hij alleen nog vóór onomkeerbare stappen.
- Astra is grondig, niet snel. Acht minuten voor een thema en tien voor een plugin, inclusief eigen tests en screenshots. De bakkerij van vorige week deed Claude in vergelijkbare tijden. Het verschil zit in de stijl van werken, niet in de snelheid.
- De koppeling is de zwakste schakel, niet het model. De enige echte storing van vandaag zat in ons eigen stuk software.
Claude of Codex?
Deze aflevering draaide volledig op Codex. Het thema is smaakvoller dan we verwachtten, en de plugin kwam met een eigen test. Volgende week doen we een verbouwing: een fysiotherapiepraktijk met een site uit 2012, op Claude Opus. Dan zien we of de twee elkaar iets te leren hebben.
Wil je dit zelf proberen? Codex of Claude koppel je in Invoker Link met je eigen abonnement; de pakketten staan bij webhosting.