# Les 11 — Huiswerk ## Seed-script aanpassen + uitbreiden + reflecteren **Vak:** AI-Assisted Development **Opleiding:** NOVI Hogeschool Utrecht **Deadline:** Voor de volgende les (Les 12 — Tool Calling) **Inleveren:** GitHub repo + `AI-CHAT.md` in root --- ## Doel Bouwt voort op de **lesopdracht** (eigen thema-app). Hier: - **A.** Pas het seed-script aan voor jouw eigen thema (mag AI bij helpen) - **B.** Voeg een **extra veld** toe dat een nieuwe vraag mogelijk maakt - **C.** Schrijf een **reflectie** over wat werkt en wat niet > Niet klaar met de lesopdracht? Eerst die afmaken — daarna komt dit. De huiswerkopdracht heeft de lesopdracht-app nodig om op te bouwen. --- ## Onderdeel A — Seed-script voor jouw thema (verplicht) Het Polderfest seed-script is je voorbeeld. Pas het aan voor jouw eigen thema. ### Stappen 1. Open `seed-polderfest.ts` als referentie 2. Pas aan voor jouw thema: - Domein-arrays (in plaats van adjectives + nouns → wat past bij jouw thema?) - Veld-namen + types - Bio/beschrijving-fragmenten (de samengestelde tekst-generatie) 3. Run je seed-script tegen je eigen Supabase 4. Verifieer 100+ records in Table Editor ### Pro tip: AI als seed-script writer Open OpenCode (of Cursor) en typ: > Hier is het Polderfest seed-script. Pas het aan voor [mijn thema]. > Mijn schema is: [paste schema] > Genereer 200 records met realistisch-ogende variatie. AI doet dit in 1-2 minuten. Daarna jij review — controle. ### Eisen - [ ] Werkende seed-script in `scripts/seed-[thema].ts` - [ ] Minimaal **200 records** in Supabase (was 100 voor lesopdracht — nu meer) - [ ] Procedureel gegenereerd (niet handmatig — gebruik combinaties) - [ ] In je README: korte uitleg hoe je 't gegenereerd hebt --- ## Onderdeel B — Extra veld + nieuwe vraag (verplicht) Voeg minstens **1 extra veld** toe aan je schema. Iets dat een **nieuwe interessante vraag** mogelijk maakt. ### Voorbeelden | Bestaand veld | Extra veld | Nieuwe vraag mogelijk | |---------------|-----------|----------------------| | Restaurant — `cuisine` | `dietary_options: string[]` | "Welke veganistische opties zijn er?" | | Scriptie — `year` | `keywords: string[]` | "Vat scripties over AI samen" | | Festival-band — `tier` | `collaborations: string[]` | "Welke acts hebben samengewerkt met X?" | | Museumstuk — `period` | `acquisition_story: string` | "Welke kunstwerken zijn op een veiling gekocht?" | ### Stappen 1. Update je `schema.sql` met het extra veld 2. Run de SQL in Supabase (kun je `ALTER TABLE` gebruiken — niet alles opnieuw) 3. Update je seed-script om het nieuwe veld te vullen 4. Re-seed je tabel (eerst wis bestaande records: `delete from items;`) 5. Test in chat: stel een vraag die alleen kan dankzij het nieuwe veld ### Eisen - [ ] Nieuw veld toegevoegd aan schema - [ ] Seed-script gevuld voor nieuwe veld - [ ] 1 vraag aan chat die specifiek dit veld gebruikt — werkt - [ ] Screenshot van die vraag + AI antwoord in `AI-CHAT.md` --- ## Onderdeel C — `AI-CHAT.md` reflectie (verplicht) Schrijf een markdown-bestand `AI-CHAT.md` in je repo-root met: ### Sectie 1: Mijn thema - Wat is het thema? - Waarom **kan een gewone LLM** deze vragen niet beantwoorden zonder jouw data? - Welke velden heb je gekozen en waarom? - Welk extra veld heb je toegevoegd (onderdeel B)? ### Sectie 2: 3 leuke vragen die werken Voor elke vraag: - De vraag zelf - Het antwoord van de AI (screenshot of plak-tekst) - Waarom dit een goede demo is ### Sectie 3: 1 vraag waar AI moeite mee had - Welke vraag was het? - Wat ging er mis (vaag antwoord, hallucinatie, foute filter)? - Hoe heb je je **system prompt** aangepast om dit op te lossen? - Werkt de vraag nu wel? ### Vorm - Max 600 woorden in totaal - Concrete voorbeelden (geen vage reflectie) - Mag wat informeel — geen scriptie-toon nodig --- ## Bonus (optioneel, niet verplicht) Iets extra's? Mag, geen extra punten maar wel leerzaam: - **Deploy op Vercel** + production URL in je README - **Loading skeleton** in de chat UI (terwijl AI antwoord aan het streamen is) - **Vergelijking gpt-4o-mini vs gpt-4o** — beschrijf het verschil in antwoorden - **System prompt variaties** — drie prompts proberen, screenshot per variant - **Themed UI** — Tailwind aanpassen zodat 't past bij thema (kleuren, fonts) --- ## Inleveren 1. **GitHub repo URL** in Brightspace 2. **`AI-CHAT.md`** in repo-root 3. **Seed-script** in `scripts/seed-[thema].ts` 4. **Updated schema** in `schema.sql` (met extra veld) 5. **Screenshots** ingevoegd in `AI-CHAT.md` Optioneel: Vercel deploy URL als bonus. --- ## Beoordeling | Criterium | Punten | |-----------|--------| | A — Seed-script werkt + procedureel + 200+ records | 3 | | B — Extra veld + werkende nieuwe vraag | 2 | | C — `AI-CHAT.md` aanwezig met 3 secties | 3 | | Chat werkt end-to-end (geen broken pages) | 1 | | Reflectie sectie C is concreet (geen fluff) | 1 | | **Totaal** | **10** | Voldoende = 6+. Bonus telt mee bij twijfelgevallen. --- ## Tijd-indicatie | Onderdeel | Tijd | |-----------|------| | A — Seed-script aanpassen (met AI hulp) | 30-45 min | | B — Schema uitbreiden + nieuwe veld + vraag testen | 30 min | | C — AI-CHAT.md schrijven met screenshots | 30-45 min | | **Totaal** | **~1,5 - 2 uur** | --- ## Veelvoorkomende valkuilen - **Thema dat LLM al kent** — Yelp-clone, Spotify-data. Werkt niet voor demo van data-power. - **Te weinig records** — 200+ vereist, anders is variatie te klein - **Vage system prompt** — "Help bij vragen" werkt slecht. Wees specifiek. - **Geen reflectie op slechte vragen** — sectie C wordt vaak vergeten, terwijl daar je leercurve zit - **AI verzint feiten** — system prompt versterken: "Verzin NIETS. Gebruik alleen onze data." --- ## Tips - **Schrijf je AI-CHAT.md gaandeweg** — niet aan einde. Sla goede prompts/screenshots op zodra ze werken. - **Maak de prompt-iteratie expliciet** — sectie C wordt mooier als je echt 3-4 prompt-versies probeert. - **Niet bang voor AI in je workflow** — laat OpenCode het seed-script schrijven. Tijdwinst is enorm. Succes! Volgende les pakken we Tool Calling — dan kun je dezelfde demo schaalbaar maken naar 50.000 records.