Geen schoenendoos met bonnetjes meer: maak een foto met je telefoon, AI leest winkel, datum, bedrag en btw uit, jij kiest het project en de administratie keurt goed. Aan het eind van de maand één export voor de boekhouder.
Wow-moment
Iemand in de zaal fotografeert een echt bonnetje met zijn telefoon (via de QR-code naar de app): binnen 5 seconden staat het in de lijst met bedrag, btw en categorie, en de grafiek op het dashboard springt omhoog.
Gegevens
| Tabel | Kolommen |
|---|---|
users |
(zit al in de starter; APP_AUTH=demo met rollen Medewerker en Administratie) |
projects |
name, code |
receipts |
user_id, project_id (nullable), image_path, status (lezen, te controleren, goedgekeurd, afgekeurd), merchant, date, total (decimal 10,2), vat (decimal 10,2), vat_rate (0/9/21), category (brandstof, materiaal, lunch, reizen, kantoor, overig), payment (pin, contant, creditcard), note, ai_raw (json), error, reviewed_by (nullable) |
Pagina's
- Scannen (
/receipts/new): groot camera-uploadveld (accept="image/*" capture="environment"), meerdere tegelijk mag. Na uploaden direct terug naar de lijst; elke bon start als "lezen". - Mijn bonnen (
/receipts):<x-live>-tabel met miniatuur, winkel, datum, bedrag, status-badge. Klik = detail met foto naast de uitgelezen velden, alles aanpasbaar, project kiezen. - Controleren (rol Administratie): alle bonnen "te controleren", knoppen Goedkeuren / Afkeuren met reden.
- Export (
/receipts/export?month=2026-10): CSV of Excel (composer require phpoffice/phpspreadsheet) met alle goedgekeurde bonnen, kolommen zoals een boekhouder wil (datum, leverancier, omschrijving, excl., btw, incl., categorie, project). - Dashboard (
_live): uitgaven deze maand per categorie (donut), per week (bar), aantal te controleren.
Bouwvolgorde
- Migraties, modellen, seeder: 3 projecten, 4 medewerkers + 1 administratie, ±25 bonnen verspreid over 2 maanden (zonder foto of met een placeholder-afbeelding).
- Uploaden + job
ReadReceipt(workers): AI met vision (docs/AI.md 2.5) en vaste velden (docs/AI.md 2.3):merchant,date(YYYY-MM-DD),total,vat,vat_rate,category(enum),payment(enum),confidence(0-1). Resultaat in de kolommen, status naar "te controleren". Lageconfidence= oranje badge "controleer". - Lijst + detail + aanpassen. 4. Controleren met rollen (
Access::requireRole('Administratie')). - Export. 6. Dashboard-grafieken.
- Extra's: pdf-facturen (tekst eruit met
smalot/pdfparser, zie docs/AI.md), dubbele bon herkennen (zelfde winkel, datum en bedrag), kilometerdeclaratie als tweede soort, maandrapport dat de planner op de 1e maakt.
Prompt-tip
"Je leest Nederlandse kassabonnen en facturen. Bedragen in euro met punt als decimaalteken. total is inclusief btw.
Kun je iets niet lezen, geef dan null en een lage confidence. Verzin niets."
Demo-data
25 bonnen van herkenbare Nederlandse winkels (Gamma, Shell, Albert Heijn, Praxis, Technische Unie, NS) met realistische bedragen; een paar met status "te controleren". Neem zelf 3 echte bonnetjes mee voor de live demo.
Demo (3 minuten)
- "Bonnen raken kwijt en de administratie tikt alles over." 2. Live een bon fotograferen: velden vullen zich.
- Administratie keurt goed. 4. Export naar Excel en het dashboard met uitgaven per categorie.