De eerdere vraag “in welke modules mag de assistent schrijven?” is omgedraaid. Toevoegen, wijzigen en verwijderen krijgen ieder een controleerbaar voorstel vóór er iets gebeurt. Het nieuwe ontwerp werkt die richting visueel en per module uit.
Ontwerpvoorstel met varianten, ter keuze. Aanleiding: je wilt de assistent kunnen vragen "wanneer is Robin jarig?", "staat wasmiddel al op de boodschappenlijst?" en "maak een afspraak op 12 augustus bij de tandarts" — lezen en schrijven, in één gesprek.
Er is een volledige assistent op route /assistent, met een classificatie-laag, grounded
antwoorden en bevestigbare schrijfacties. Dit is geen prototype: het is gebouwd, getest en Plus-gated.
assistant_providers.dart:104-109proposed_action.dart, assistant_providers.dart:193ai_gate.dartPrecies de tweede laag die je beschrijft. In deze sheets zit al een AI-knop die een foto of tekst omzet naar ingevulde velden: taken, lijsten, schoolvakanties, sportkalender, verzekeringen, garanties, leningen, agenda, voorraad.
| Jouw voorbeeld | Nu | Waarom |
|---|---|---|
| "Wanneer is X jarig?" | ✅ werkt | Verjaardagen zit in de leescontext, mét de deelmodel-filter. |
| "Staat wasmiddel al op mijn boodschappenlijst?" | ✅ werkt | Boodschappen zit in de leescontext. |
| "Wanneer is afspraak X?" | 🟡 half | Agenda zit in de leescontext, maar alleen een venster rond vandaag — een afspraak ver vooruit valt buiten de meegestuurde tekst. |
| "Maak een afspraak op 12 aug bij de tandarts" | ❌ geweigerd | Er ís geen schrijfactie voor de agenda. De code antwoordt letterlijk "dat kan hier nog niet" (assistant_providers.dart:186-187). |
| "Staat het erop? Zo nee, zet het erin" | ❌ kan niet | De router kiest één actie: lezen of schrijven. Een voorwaardelijke opdracht in één zin bestaat niet in het model. |
Dat laatste is de interessantste: het is geen ontbrekende functie maar een ontbrekend vermogen. Daar gaat de kernkeuze hieronder over.
Dit is de enige vraag die echt uitmaakt. Alles daarna volgt eruit: de kosten, wat er van je telefoon af gaat, en of "staat het erop, zo nee zet erin" kan.
Bij elke leesvraag bouwt de app een tekstdump van zeven modules en stuurt die integraal mee met je
vraag. Er wordt niet gezocht: het model krijgt de hooiberg en zoekt de naald.
assistant_providers.dart:353-402
Doorgaan op het huidige pad: vensters verruimen en meer modules toevoegen aan de tekstdump.
De app zoekt zelf in de lokale database (SQLite staat al op het toestel) en stuurt alleen de gevonden rijen mee. Het model krijgt een handvol treffers in plaats van de hele stapel.
Het model krijgt geen data maar functies: zoek_boodschappen, maak_afspraak,
zoek_agenda. Het beslist zelf wat het aanroept en mag dat aan elkaar rijgen.
Begin met K2. Het lost drie van je vijf voorbeelden op (inclusief de twee die nu falen, zodra de agenda-schrijfactie erbij komt), maakt de kosten voorspelbaar en de privacy beter — en het is een fundament dat K3 later gewoon hergebruikt: de gereedschappen in K3 zijn precies de zoekfuncties uit K2.
K2 en K3 zijn dus geen of-of. Als je K1 kiest gooi je dat fundament weg en betaal je het later opnieuw. Dat is de enige variant die ik echt zou afraden, ook al is hij vandaag het snelst.
De voorwaardelijke opdracht ("zo nee, zet erin") blijft in K2 onmogelijk. Ik zou dat expliciet niet beloven in de eerste versie en de assistent liever laten zeggen: "wasmiddel staat er niet op — wil je dat ik hem toevoeg?" met een knop. Dat is één tik meer, en het is eerlijker dan een assistent die ongevraagd schrijft.
Je zei het scherp: een globale chat die moet raden waar je heen wil, en per module een ingang die het domein al weet. Die tweedeling is precies goed, en het scheelt echt werk — de module-laag hoeft nooit te classificeren.
Het bestaande patroon (foto/tekst → velden) van 9 naar alle relevante formulieren. Geen chat, geen routing.
Dezelfde chat als globaal, maar met de module vastgezet. Geen classificatie-stap, dus sneller, goedkoper en het kan niet in de verkeerde module belanden. In de boodschappenlijst betekent "wasmiddel erbij" precies één ding.
De microfoon bestaat al maar staat op twee plekken. Hem in de module-sheets zetten (mic → tekst → extractie → velden) is weinig werk en verandert veel in gebruik: boodschappen inspreken terwijl je de koelkast opent.
De assistent is vandaag alleen te vinden via Instellingen → AI. Dat is voor een functie die je "gewoon even wil vragen" de verkeerde plek — en het verklaart waarschijnlijk waarom je dacht dat hij niet bestond.
Nu staan die domeinen standaard uit voor alle AI, met een opt-in per domein. Dat betekent dat "wanneer moet ik mijn verzekering opzeggen?" en "welke medicijnen moet Rosanne vandaag?" niet werken tenzij je die domeinen aanzet.
Mijn advies: zo laten. Maar wel de weigering veranderen: nu lijkt het alsof de assistent het niet kan, terwijl hij het niet mag. Beter: "hier kan ik niet bij omdat financieel is uitgesloten van AI — aanzetten?" met een knop naar de instelling. Dat maakt van een doodlopend antwoord een keuze.
Er is een credit-model (ai-credits.md). De vraag is of een assistent-vraag credits kost, en of lezen en schrijven anders geprijsd zijn. Dat bepaalt of K3 (meerdere modelrondes per vraag) überhaupt aantrekkelijk is, en of we lokaal zoeken als kostenbesparing of als privacymaatregel verkopen.
Mijn advies: lezen goedkoop of gratis binnen Plus, schrijven ook — maar een harde bovengrens per dag, zodat een kapotte lus je nooit een rekening bezorgt.
Nu vijf acties. Jouw voorbeeld vraagt agenda erbij. Maar waar stopt het? Een verzekering aanmaken via chat is technisch hetzelfde, maar een fout is daar veel duurder dan bij een boodschappenitem.
Mijn advies: alleen schrijven in modules waar een fout goedkoop en zichtbaar is — agenda, taken, boodschappen, maaltijden, voorraad, verjaardagen. Financieel, vastgoed en gezondheid blijven handmatig, ook als je die domeinen voor lezen aanzet. Dat is een bewuste asymmetrie en ik wil hem expliciet van je horen.
Nu nooit. Bij "zo nee, zet erin" vraag je in feite om dat te versoepelen — jij hebt het immers al opgedragen.
Mijn advies: houd de bevestiging, maar maak hem goedkoop: één knop in het antwoord in plaats van een apart dialoog. De belofte "de assistent doet niets buiten je om" is er een die je één keer kunt breken en daarna nooit meer terugkrijgt.
| Stap | Wat | Omvang |
|---|---|---|
| 1 | Agenda-schrijfactie erbij (jouw vierde voorbeeld) | klein — 1-2 dagen |
| 2 | Ingang op Vandaag (vindbaarheid) | klein — 1 dag |
| 3 | K2: lokale zoeklaag + treffers i.p.v. dump | middel — 4-6 dagen |
| 4 | M2: module-gebonden chat in de belangrijkste modules | middel — 3-5 dagen |
| 5 | M3: microfoon in de module-sheets (ná TEN-140) | klein — 1-2 dagen |
| 6 | K3: gereedschap + meerstaps, met bewaking | groot — 6-10 dagen |
Stap 1 en 2 zijn los waardevol en onafhankelijk van je keuze bij de kernvraag. Als je snel wil voelen of dit de goede richting is, zijn dat de twee om mee te beginnen — daarna beslis je over K2 en K3 met echte ervaring in plaats van op papier.