Student

Lars De Bolle

Opleiding
Marketing, jaar 2
Traject
4 ECTS
Wie ik ben
  • Student Marketing, jaar 2, Arteveldehogeschool
  • Eigen werk: Elevio, mijn bedrijf rond AI en automatisatie. Ik werk nu aan een betaald project van behoorlijke omvang voor een klant.
  • Andere projecten: OpMaat, een offerte-app voor aannemers en zelfstandigen in de bouw, en een vault waarin ik reels opsla en uitwerk
Dit vak
  • Richting: Elevio uitdiepen — mijn bedrijf rond AI en automatisatie, met het klantproject waar ik nu aan werk als vertrekpunt
  • Traject: 4 ECTS

Posts

Week 4

De context kost meer dan de offerte

Mijn tool in cijfers

22 op 24 juist (n = 12, 2 runs) op promptversie v2b. Eén echte fout, twee keer gemaakt, klasse F2: bij "een ruimte schilderen en nadien de belichting regelen" verzon het model een post Elektriciteit lichtpunt van 415 euro, waar een vraag had moeten staan. Twee keer F6, wisselend antwoord, en alleen in de vragen: dezelfde input kreeg eerst twee vragen en dan drie over dezelfde onbekende. De posten zelf waren in alle twaalf inputs identiek, tot op het aantal, de eenheid en het bronlabel.

Na de wijziging draaide ik T02 twee keer en T11 een keer op v3. Alle drie juist, n = 2. Dat is te weinig om 24 op 24 te claimen.

Wat kost één run?

De run van T11, de echte werfopname, met mijn prompt en mijn materialenlijst in hetzelfde bericht. Model Haiku. De sessie verbruikte 134.500 tokens voor 0,09 dollar.

Die 134.500 is niet wat een server zou versturen. De cache write van de eerste beurt was 70.000 tokens: dat is de hele prompt, context inbegrepen. Mijn eigen deel daarvan is ongeveer 3.400 tokens input, want mijn prompt is 11.186 tekens en de materialenlijst tien regels. De rest, ongeveer 66.600 tokens, is Claude Code zelf: zijn instructies, mijn context.md, en de toolbeschrijving van elke MCP-server die aanstaat. De les noemt 20.000 tot 35.000 als normaal. Ik zit op het dubbele, en de reden staat in het usage-paneel: Claude Browser, terminal, ccd_turn, ccd_session.

De context is hier twintig keer groter dan mijn eigen prompt. Een bedrijf dat deze tool via de API draait, stuurt die 66.600 tokens nooit mee.

Mijn deel: 3.400 tokens in, 6.000 tokens uit. Aan 1 dollar per miljoen input en 5 per miljoen output is dat 0,0334 dollar, ofwel 0,030 euro per run (koers 1 dollar = 0,90 euro, aanname uit de opdracht).

Het zwaartepunt ligt bij de output, en niet omdat het antwoord lang is. De JSON die ik terugkrijg is ongeveer 600 tokens. De andere 5.400 zijn denkwerk dat ik niet zie en wel betaal.

Bij 2 offertes per week, 8 per maand, kost dat 0,24 euro per maand. Tien keer dat volume: 2,40 euro. Duizend keer: 240 euro. Op GPT-6.1 Sol verdubbelt alles, want die rekent 2 en 10 dollar per miljoen in plaats van 1 en 5.

Twee aannames die ik moet noemen. /model haiku gaf me Haiku 5.5, terwijl de prijstabel van de cursus Haiku 4.5 vermeldt. En OpMaat draait in productie niet op Haiku maar op Whisper plus GPT-4o. Dat cijfer moet ik nog meten in de app zelf.

Met de hand of met de tool?

SchakelWaardeBron
Met de handWerfbezoek uitwerken, posten opzoeken, prijzen invullen, nakijken: 60 min voor een grotere offerteeigen schatting, Joeri gebruikt Excel
Met de toolInspreken plus de posten nakijken voor hij verstuurt: 18 mineigen schatting na testen in de app
Winst per offerte60 min min 18 min = 42 min
Volume2 per week, 8 per maand, 96 per jaaraanname: 48 werkweken
Uren gewonnen1,4 u per week, 5,6 u per maand, 67 u per jaar
Uurkost50 euroaanname, loonkost van een zelfstandige. Mijn materialenlijst rekent 58 euro als factuurtarief
Waarde67 x 50 = 3.360 euro per jaar
Kost van de tool96 x 0,030 = 2,88 euro per jaargemeten
Netto± 3.357 euro per jaar

De kost van de tool is hier irrelevant. Drie euro per jaar tegenover 3.360 euro aan tijd. Als de tool afgeraden moet worden, is dat nooit om de tokenprijs.

Mijn zwakste cijfer

De 18 minuten nakijken. Die 60 minuten met de hand is ook geschat, maar als die de helft is, blijft er nog altijd 12 minuten winst per offerte over: 19 uur en 960 euro per jaar. Vervelend, geen ander antwoord.

De 18 minuten is gevaarlijker, want hij kan de andere kant op. Mijn hele cijfer veronderstelt dat Joeri de zeven posten snel overloopt en doorstuurt. Doet hij dat niet, omdat hij de bronlabels niet vertrouwt en alles natelt, dan wordt nakijken 35 minuten en zakt de winst naar 7 minuten per offerte: 11 uur en 560 euro per jaar. Bij 42 minuten nakijken is de winst nul.

Dat is geen technisch probleem maar een vertrouwensprobleem, en het staat als openstaande vraag in mijn scenario. Het cijfer dat ik nodig heb, krijg ik pas als Joeri de tool echt gebruikt.

Week 3

De fix die een nieuwe fout maakte

Wat ontbrak er in mijn context?

Ik liep de zes bouwstenen af op mijn prompt van vorige week en vond drie gaten: nul voorbeelden, geen regel met een waarom, en een uitweg die een ontbrekende prijs dekte maar geen tegenstrijdige maat. Die drie heb ik gedicht. De buurtest vond er acht meer, en geen van die acht is een ontbrekende bouwsteen. Het zijn regels die onderling niet kloppen. "Schat op Belgische richtprijzen", en nergens stond een richtprijs. Bij eenheid forfait volgt uit mijn eigen regel dat het aantal 0 is, en dan staat die post op nul euro. Een checklist vindt wat er niet staat, een lezer vindt wat er niet samen kan.

En vijf keer bleek mijn verwachte antwoord iets te eisen dat nergens in mijn prompt stond. De uren per m2 voor sloopwerk. Dat een container er altijd bij hoort. Wanneer het model mag afleiden. Dat zat in mijn hoofd en nergens anders.

Mijn eerste cijfer

22 op 24 juist (n = 12, 2 runs). Eén echte fout, twee keer gemaakt: F2. En twee keer F6, wisselend antwoord. Die F6 is het interessantste. De posten waren in alle twaalf inputs bij beide runs identiek: zelfde aantallen, eenheden en bronlabels. Alleen het aantal vragen wisselde. Eén input stelde in run 1 een vraag en in run 2 geen, een andere eerst twee en dan drie over dezelfde onbekende. De harde uitvoer is stabiel, de zachte niet. Voor een offerte is dat de goede kant op, maar mijn eigen prompt zegt dat de aannemer vragen die hij al beantwoord heeft vanaf dan wegklikt.

Eén fout zat in mijn testset. Bij de Franse opname verwachtte ik sloopwerk aan 12 uur, 750 euro. Het model nam tegels uitbreken aan 12 m2, 264 euro, en volgde daarmee correct een regel die ik zelf net had toegevoegd.

Eén wijziging

De fout: bij "een ruimte schilderen en nadien de belichting regelen" maakte het model een tweede post, "Elektriciteit lichtpunt plaatsen", 415 euro. Die had niet mogen bestaan: van "de belichting regelen" weet je niet of het een punt, een armatuur of een hele kring is. Dat hoort een vraag te zijn.

Welke bouwsteen fout was: geen van de zes. Het was een botsing tussen een regel en de richtprijzenlijst die ik na de buurtest had toegevoegd. Daar staat "Elektriciteit per punt: 280 tot 550". Het model vond een prijs, en een prijs hebben voelde als toestemming om een post te maken. Die lijst was zelf een fix uit de buurtest. Een fix die een nieuwe fout maakt.

Mijn wijziging: één alinea onder de richtprijzen, dat een prijs vinden geen reden is om een post te maken. Twee keer opnieuw gedraaid, beide keren juist.

Waarom dat geen bewijs is: twee runs op één input, en de andere elf heb ik niet opnieuw gedraaid. Ik mag dus niet zeggen dat de tool nu 24 op 24 haalt. Dat is hetzelfde probleem dat die richtprijzenlijst mij bezorgde, en de reden waarom ik voor week 4 alle twaalf opnieuw moet draaien.

Week 2

De fout zat tussen twee AI-stappen

Wat bouw ik?

De spraakfunctie van OpMaat, mijn app voor aannemers. Erin gaat een gesproken werfopname plus de eigen materialenlijst van de aannemer. Eruit komt een lijst offerteposten in JSON, elk met omschrijving, eenheid, aantal, eenheidsprijs en een label bron dat zegt waar die prijs vandaan komt: eigen uit zijn bibliotheek, geschat op Belgische richtprijs, of open als het product nog niet gekozen is.

Waarom een taalmodel?

Omdat ik structuur uit vrije spraak haal. Whisper doet de transcriptie, GPT-4o verdeelt die tekst over zes velden en maakt de posten. Bij een foto komt Vision erbij. Het label bron is de uitweg: het model mag niet doen alsof een gok een eigen prijs is. De server controleert dat label daarna zelf tegen de echte lijst, dus het model stelt de herkomst voor en de server stelt ze vast.

Eén testinput

Input T01: "Ik moet een badkamer gaan uitbreken die badkamer is 5 op 7 meter euh ik bedoel 5 op 6 meter."

Juist antwoord: rekenen met 5 op 6, en de verspreking melden in plaats van ze stil weg te werken.

Wat het deed: Whisper schreef de verspreking letterlijk op. Het tweede model verdeelde de transcriptie over de zes velden en loste de tegenspraak daar stil op, zonder dat ergens in de code vastligt welke maat wint. Het ruwe transcript ging daarna niet mee, dus de controlelaag zag enkel die zes velden. Alle vier de regelcontroles zwegen. De rekensomcontrole heeft een expliciet m²-getal naast de maten nodig. De onrealistisch-controle begint pas boven 100 m². De tegenspraakcontrole zag 35 tegenover 30 wel, maar liet het door, want 14,3 procent viel onder de marge van 25 procent. Netto 5 m² te veel tegelwerk, ongeveer 17 procent, zonder één signaal. Het enige vangnet was dat de aannemer de vooringevulde velden zelf nalas.

Nu meldt het systeem de correctie ("Je zei eerst 5 op 7 en daarna 5 op 6; ik reken met 5 op 6"), en als beide maten tóch als m² in twee velden belanden, vraagt het welke moet gelden.

De les: de fout zat niet in de spraakherkenning en niet in het rekenen. Die werkten. De fout zat op de overdracht tussen twee AI-stappen, waar de tweede stap een beslissing nam die ze niet mocht nemen en de informatie om ze te betwisten weggooide. Een deterministische controlelaag ernaast dekt dat niet af, want die krijgt alleen het resultaat te zien. En een drempel die ruim genoeg staat om ruis te slikken, slikt ook precies de verspreking die een mens op een werf echt maakt.

Week 1

Week 1: Claude Code kende ik al, GitHub niet

Wat heb ik tot nu toe met AI gedaan?

Ik werk al veel met Claude Code. Ik bouwde er een vault mee waarin ik reels opsla en uitwerk, en ik gebruik het voor OpMaat, voor Elevio en voor een reisapp voor Holiways. Alles met Claude Code in de terminal, niet met een browserchat.

Wat verraste me vandaag?

Woensdag was ik niet in de les: mijn lessenrooster was nog niet in orde. Ik heb de opzet vandaag ingehaald: account, fork, clone, eigen map.

Wat me opvalt: leuk dat we zulke dingen nu met school leren, met Claude Code en GitHub. Met Claude Code werkte ik al heel veel, met GitHub minder. Ik liet Claude Code vaak dingen voor mij doen op GitHub, zoals skills downloaden. Nu doe ik het zelf en zie ik wat eronder zit: fork, clone, remote, commit, push, pull request.

Welke richting wil ik uit?

Ik wil Elevio verder uitwerken. Ik ben daar nu bezig met een klant voor wie ik een redelijk groot project mag doen, en daarop wil ik verder bouwen om mijn bedrijf binnen AI en automatisatie uit te diepen. Ik hoop dat de lessen van dit vak daarbij helpen en me nieuwe dingen leren die ik in het werkveld kan gebruiken.