Plan It
Zet in gewone taal beschreven weekplannen (werk, school, toetsen) om in een concreet rooster via AI, en stuurt bij een vervolgbericht alleen bij wat nodig is.
- Chatbericht
- Groq (Llama 3.3 70B)
- Gestructureerd rooster
- Opslag (Supabase)
Probleem
Mbo- en vavo-studenten jongleren vaak met school, een bijbaan en privéleven tegelijk. Een planning die op maandag nog klopt, houdt woensdag vaak al geen stand meer. Klassieke agenda-apps lossen dat niet op: die verwachten dat je zelf structuur aanbrengt, terwijl juist die structuur het probleem is.
Aanpak
Je vertelt in gewone taal wat je week vult, bijvoorbeeld "ik werk dinsdag en donderdag tot 18:00, en heb vrijdag een wiskundetoets." Een AI-studiecoach (Groq API, Llama 3.3 70B) zet dat om in een concreet weekrooster: tijdsblokken verdeeld over studie, werk, privé en deadlines, met ruimte voor pauzes.
Stuur je een vervolgbericht om iets aan te passen, dan krijgt de AI de bestaande planning als context mee en geeft alleen de dagen terug die daadwerkelijk veranderen, in plaats van de hele week opnieuw te verzinnen. Dat vraagt om een prompt die niet alleen een rooster genereert, maar ook weet wanneer het over de rest stil moet blijven.
Er zijn twee instapniveaus: gratis uitproberen zonder account, waarbij bewust niets wordt opgeslagen, of inloggen voor een rooster dat per kalenderdatum persistent wordt bewaard in Supabase (Postgres), afgeschermd per gebruiker met row-level security. De backend is Spring Boot 3.5 met Thymeleaf voor de dashboard-UI en een eigen HTML/CSS/vanilla-JS- landingspagina, met een animatie die losse tijdsblokken vanzelf tot een rooster laat vormen.
Stack
Bewuste keuze
Ik koos er bewust voor om uitproberen zonder account mogelijk te maken, zonder dat er iets wordt opgeslagen. Dat verlaagt de drempel voor een eerste indruk, maar betekent ook dat een gast bij elk bezoek opnieuw begint. Voor een product waarbij de eerste indruk vaak bepaalt of een student blijft, weegt dat drempelverlagende effect zwaarder dan het gemak van automatisch onthouden.
Wat ik ervan leerde
De grootste uitdaging zat niet in het eerste rooster genereren, maar in het incrementeel bijsturen: de AI moest leren wanneer het stil moest blijven over dagen die niet wijzigden, in plaats van bij elk bericht de hele week opnieuw te verzinnen. Dat loste ik op door de bestaande planning expliciet als context in de prompt mee te geven en het antwoordformaat strikt te begrenzen tot alleen de gewijzigde dagen.
Doordat ingelogde gebruikers hun rooster in Supabase bewaren, moest de databeveiliging verder gaan dan een simpele login-check. Row-level security zorgt ervoor dat de afscherming per gebruiker op databaseniveau wordt afgedwongen, niet alleen in de applicatielaag: zelfs een bug in de Spring Boot-code kan dan geen rooster van de ene gebruiker aan een andere tonen.
Dit was ook het eerste project waarin ik de volledige merkidentiteit zelf heb ontworpen, van de "papieren rooster"-esthetiek tot de animatie die het kernidee in één beweging laat zien. Een goede oefening om ontwerpkeuzes te onderbouwen vanuit de doelgroep, niet alleen vanuit wat er technisch mogelijk is.