[{"data":1,"prerenderedAt":262},["ShallowReactive",2],{"profile":3,"project-offerte-agent":133,"projects":235},{"id":4,"about":5,"aboutTitle":6,"availability":7,"availabilityShort":8,"contact":9,"dummy":12,"education":13,"email":25,"extension":26,"focus":27,"links":28,"meta":31,"name":32,"portrait":33,"qualities":34,"site":47,"skills":50,"stem":107,"study":108,"tagline":109,"taglineHighlights":110,"terminal":113,"work":116,"__hash__":132},"profile\u002Fprofile.yml","Ik ben Jesse, tweedejaars HBO-ICT-student aan de Hogeschool van Amsterdam met de specialisatie Software Engineering. Ik ben gemotiveerd, leergierig en ondernemend: naast mijn studie bouw ik aan een eigen SaaS-product voor vakmensen. Sportief ben ik ook: ik gaf een seizoen ski- en snowboardles in Oostenrijk. Ik werk het best in een team, waar ideeën scherper worden omdat je ze deelt.\n","Ik leer het snelst door te bouwen, liefst samen met anderen.","Stage vanaf februari 2027","feb 2027",{"title":10,"text":11},"Op zoek naar een stagiair met energie?","Ik zoek een stage vanaf februari 2027. Stuur gerust een bericht.",true,[14,19],{"period":15,"current":12,"title":16,"org":17,"text":18},"2024 – heden","Bachelor HBO-ICT · Software Engineering","Hogeschool van Amsterdam","Focus op backend en AI, scrum en werken in projectteams.",{"period":20,"current":21,"title":22,"org":23,"text":24},"2018 – 2023",false,"Havo","Bonhoeffer College, Castricum","Dubbelprofiel: Natuur & Techniek en Natuur & Gezondheid.","Wilffertjesse@gmail.com","yml","Full-stack · backend & AI",{"linkedin":29,"github":30},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjesse-wilffert-1410b0448\u002F","https:\u002F\u002Fgithub.com\u002Fjessewilf1209",{},"Jesse Wilffert","Portrait.jpg",[35,38,41,44],{"title":36,"text":37},"Energiek","Ik breng tempo en zin in een project.",{"title":39,"text":40},"Samenwerken","Ik deel wat ik weet en vraag actief om feedback.",{"title":42,"text":43},"Loyaliteit","Ik maak af waar ik aan begin, ook als het lastig wordt.",{"title":45,"text":46},"Flexibel","Ik schakel snel tussen taken, rollen en tools.",{"version":48,"updated":49},"1.1.1","9 nov 2026",[51,67,82,95],{"group":52,"items":53},"Programmeertalen",[54,57,59,62,64],{"name":55,"note":56},"Java","2 jr",{"name":58,"note":56},"JavaScript",{"name":60,"note":61},"TypeScript","1 jr",{"name":63,"note":56},"SQL",{"name":65,"note":66},"HTML & CSS","3 jr",{"group":68,"items":69},"Frameworks",[70,73,76,79],{"name":71,"note":72},"Spring Boot","backend",{"name":74,"note":75},"Vue.js","frontend",{"name":77,"note":78},"Pinia","state",{"name":80,"note":81},"Tailwind CSS","styling",{"group":83,"items":84},"Tools",[85,87,89,91,93],{"name":86},"Git",{"name":88},"GitLab & GitHub",{"name":90},"Vercel",{"name":92},"Docker",{"name":94},"Claude Code",{"group":96,"items":97},"Talen",[98,101,104],{"name":99,"note":100},"Nederlands","moedertaal",{"name":102,"note":103},"Engels","vloeiend",{"name":105,"note":106},"Duits","basis","profile","HBO-ICT · Software Engineering, HvA","Software engineering-student die bouwt wat echt gebruikt wordt, van Java- en Python-backend tot AI-toepassing in Next.js.",[111,112],"Java- en Python-backend","AI-toepassing in Next.js",{"whoami":114,"stack":115},"jesse wilffert · student software engineering @ HvA","java  python  typescript  next.js  vue",[117,122,127],{"period":118,"current":12,"title":119,"org":120,"text":121},"2022 – heden","Keukenmedewerker","Cafetaria Family, Uitgeest","Snel en nauwkeurig werken onder tijdsdruk in een klein team.",{"period":123,"current":21,"title":124,"org":125,"text":126},"2022 – 2023","Ski- en snowboardleraar","Leverreizen, Oostenrijk","Les gegeven aan groepen van verschillende niveaus.",{"period":128,"current":21,"title":129,"org":130,"text":131},"2020 – 2022","Vakkenvuller","Albert Heijn","Eerste bijbaan: zelfstandig werken en verantwoordelijkheid nemen.","jw6i42pGEeH8DW__j6MrFUtKXp_mA51RIq34MFRkiGI",{"id":134,"title":135,"approach":136,"body":166,"cover":170,"description":170,"details":173,"dummy":21,"extension":177,"learnings":178,"links":190,"meta":192,"navigation":12,"order":193,"path":194,"problem":195,"results":198,"seo":219,"slug":220,"status":221,"statusLabel":222,"stem":223,"summary":224,"tags":225,"terminalStack":232,"year":233,"__hash__":234},"projects\u002Fprojects\u002Fofferte-agent.md","Offerte-Agent",{"title":137,"text":138,"flow":139,"steps":156},"Eerst het fundament, dan de features.","Ik heb het project opgeknipt in fases (0 tot en met 6) en 27 architectuurbeslissingen met onderbouwing vastgelegd in BESLISSINGEN.md. Fase 0 bestond alleen uit fundament: CI-pipeline, secret scanning, codekwaliteit-tooling en een multi-tenant database. Ik bepaalde wat er gebouwd werd en hoe het moest werken en testte de code; Claude Code schreef de code uit, vooral de complexere onderdelen.",[140,144,148,152],{"kind":141,"title":142,"detail":143},"Klant","Chatwidget","1 codefragment · eigen huisstijl",{"kind":145,"title":146,"detail":147,"highlight":12},"Backend","Intake-engine","next.js · zod",{"kind":149,"title":150,"detail":151},"AI","Amazon Bedrock (EU)","gestructureerde output · dagbudget",{"kind":153,"title":154,"detail":155},"Hovenier","Dashboard","supabase · row level security",[157,160,163],{"title":158,"text":159},"Multi-tenancy vanaf dag één","Elke hovenier ziet alleen zijn eigen data. Dat wordt afgedwongen in de database zelf met Row Level Security, niet alleen in de applicatiecode.",{"title":161,"text":162},"Een taalmodel betrouwbaar en veilig inzetten","De AI antwoordt in een vast JSON-formaat dat server-side met Zod wordt gecontroleerd. Bij een fout volgt één nieuwe poging en daarna een nette fallback, zodat de bezoeker nooit een kapot gesprek ziet. De server bepaalt zelf of de intake compleet is, en invoer wordt opgeschoond tegen prompt injection.",{"title":164,"text":165},"EU-dataresidentie en kostenbeheersing","Een provider-abstractie wisselt tussen een mock, de Anthropic API en Amazon Bedrock; in productie is alleen de EU-variant toegestaan. Een platformbrede dagrem weigert AI-aanroepen zodra het budget op is, met geldbedragen als gehele getallen tegen afrondingsfouten.",{"type":167,"value":168,"toc":169},"minimark",[],{"title":170,"searchDepth":171,"depth":171,"links":172},"",2,[],{"role":174,"period":175,"team":176},"Solo developer · eigen project","Jun 2026 – heden","Solo, met Claude Code als AI-programmeerassistent","md",{"title":179,"items":180},"Werken met API’s, en met AI als assistent.",[181,184,187],{"title":182,"text":183},"Werken met API’s","Veel ervaring opgedaan met externe diensten: AI-modellen (Anthropic en Amazon Bedrock), e-mail (Amazon SES) en de database (Supabase).",{"title":185,"text":186},"Een eigen chatbot bouwen","Hoe je een AI-gesprek opzet dat gericht informatie verzamelt, in plaats van een algemene chatbot te gebruiken.",{"title":188,"text":189},"Slim samenwerken met AI","Hoe ik AI inzet als programmeerassistent, zodat ik sneller werk en zelf de richting en de kwaliteit bewaak.",{"github":191,"demo":170},"https:\u002F\u002Fgithub.com\u002Fjessewilf1209\u002Fofferte-agent",{},1,"\u002Fprojects\u002Fofferte-agent",{"title":196,"text":197},"Elke aanvraag begint met uitvragen.","Voordat een hovenier een offerte kan maken, moet hij eerst alle gegevens bij de klant ophalen: wat er moet gebeuren, hoe groot de tuin is, hoe het er nu uitziet. En pas daarna weet hij of een aanvraag kansrijk is. De Offerte-Agent neemt dat eerste gesprek over.",{"title":199,"items":200},"Wat er nu staat.",[201,204,207,210,213,216],{"title":202,"text":203},"Widget op elke website","Met één codefragment, als zwevende chatbubbel of inline in de pagina, in de eigen huisstijlkleuren met automatisch leesbaar contrast.",{"title":205,"text":206},"AI-intake met leadscore","Het gesprek verzamelt stap voor stap de offertegegevens en geeft de aanvraag een score.",{"title":208,"text":209},"Veilige foto-upload","Controle op het echte bestandstype en verwijdering van locatiegegevens uit de foto.",{"title":211,"text":212},"Dashboard voor de ondernemer","Inloggen, leadoverzicht met score, detailpagina per lead en instellingen met de embed-code.",{"title":214,"text":215},"Melding en AI-opvolgmail","E-mail bij elke nieuwe lead, plus een door AI voorgestelde opvolgmail die de ondernemer aanpast en verstuurt.",{"title":217,"text":218},"AVG ingebouwd","Lead verwijderen met één knop en een dagelijkse taak die verlopen gegevens opruimt.",{"title":135,"description":170},"offerte-agent","wip","In ontwikkeling · eigen project","projects\u002Fofferte-agent","AI-chatwidget die hoveniers op hun eigen website plaatsen. De widget voert het intakegesprek met een potentiële klant, verzamelt alles voor een offerte (ook foto’s van de tuin) en geeft elke aanvraag een leadscore in een eigen dashboard.",[60,226,227,228,229,230,231],"Next.js","React","Supabase","PostgreSQL","Amazon Bedrock","Zod","nextjs · supabase · bedrock","2026","APhN4cdewghQS1wDqKAPRX5y0PTlD87faTyNUMvSpn0",[236,238,249],{"slug":220,"title":135,"order":193,"year":233,"status":221,"statusLabel":222,"summary":224,"tags":237,"terminalStack":232},[60,226,227,228,229,230,231],{"slug":239,"title":240,"order":171,"year":233,"status":221,"statusLabel":241,"summary":242,"tags":243,"terminalStack":248},"ai-profile","AI Profile","In ontwikkeling · schoolproject","Interactieve AI-booth die eruitziet als een vriendelijke chatbot, maar ongemerkt een profiel van de bezoeker opbouwt en dat aan het einde laat zien en uitprint. Voor de opdracht GenAI Exposed van het Lectoraat Responsible IT (HvA).",[244,245,60,227,80,246,247],"Python","FastAPI","Ollama","Claude API","python · fastapi · ollama",{"slug":250,"title":251,"order":252,"year":233,"status":253,"statusLabel":254,"summary":255,"tags":256,"terminalStack":261},"its-never-too-late","It’s Never Too Late",3,"done","Afgerond en live · eigen project","Volledig herbouwde website voor een spreker en ervaringsdeskundige, als eigen WordPress child theme. De site vertelt zijn verhaal, toont zijn diensten en referenties, en heeft een voorinschrijvingspagina voor zijn aankomende boek.",[257,258,58,259,260],"PHP","WordPress","CSS","HTML","wordpress · php · vanilla js",1794297410571]