# 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.
