Nieuwe eigenaarsrichting: schrijven wordt een zichtbaar voorstel

10 augustus 2026

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.

Open het ontwerp van het schrijfvoorstel →

AI-assistent: zoeken én aanmaken

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.

27 juli 2026 · door de ontwerp-gate: dit raakt navigatie, kosten en privacy · niets gebouwd voordat je gekozen hebt

7 modules werken al 2 van je vier voorbeelden lukken nu niet 1 kernkeuze 4 open vragen

1. Wat er al staat — meer dan je denkt

De grounded assistent bestaat en werkt

gebouwd

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.

Lezen
Een vraag wordt geclassificeerd naar een module, maar voor een leesvraag zoekt de assistent bewust in alle modules — met de motivering in de code dat een vraag in een andere module kan zitten dan de trefwoorden suggereren ("lunch met de honkbal" is agenda, niet sport). assistant_providers.dart:104-109
Schrijven
Vijf acties bestaan: verjaardag, taak, boodschappen, maaltijd, voorraaditem. Een schrijfactie wordt altijd eerst als voorstel getoond en pas na jouw bevestiging uitgevoerd — via de controller van de eigen module, zodat het item zich gedraagt als handmatig aangemaakt (inclusief herinneringen). proposed_action.dart, assistant_providers.dart:193
Grenzen
Buiten bereik → een weigering met concrete app-bestemmingen in plaats van een gokkende chatbot. Financieel en gezondheid zijn standaard uitgesloten van alle AI, tenzij je er per domein expliciet voor kiest. ai_gate.dart
Spraak
De microfoon zit al in het assistent-scherm en in de inbox-capture.

De module-laag bestaat ook al — in 9 van de ~40 formulieren

gedeeltelijk

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

Wat er goed aan is
Het routeert nergens naar: het formulier is de context. Geen classificatie, geen kans dat het in de verkeerde module belandt — exact het voordeel dat jij benoemt.
Wat er mist
Het is extractie naar velden, geen gesprek. En de microfoon zit er niet in — die staat alleen in het assistent-scherm en de inbox. Je kunt dus in een module wel een foto laten uitlezen, maar niet inspreken.

2. Wat er van jouw vier voorbeelden nu níet lukt

Twee werken, twee niet

de aanleiding
Jouw voorbeeldNuWaarom
"Wanneer is X jarig?"✅ werktVerjaardagen zit in de leescontext, mét de deelmodel-filter.
"Staat wasmiddel al op mijn boodschappenlijst?"✅ werktBoodschappen zit in de leescontext.
"Wanneer is afspraak X?"🟡 halfAgenda 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"❌ geweigerdEr í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 nietDe 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.

3. De kernkeuze — hoe komt het model aan je gegevens?

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.

Hoe het nu werkt: de hele stapel gaat mee

huidige stand

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

Wat daar goed aan is
Het is eerlijk grounded — het model kan niets verzinnen wat niet in die dump staat. En de dump respecteert het deelmodel: privé-items van anderen zitten er niet in, en uitgeschakelde modules ook niet.
Wat er niet aan schaalt
Drie dingen tegelijk. Kosten: elke vraag rekent over de hele dump af, ook "wanneer is Robin jarig". Privacy: je stuurt structureel meer weg dan de vraag nodig heeft. Bereik: om het betaalbaar te houden staan er vensters op (agenda rond vandaag), en precies daardoor faalt "wanneer is afspraak X" voor iets in november.

Variant K1 · Meer modules in de dump

goedkoopste stap

Doorgaan op het huidige pad: vensters verruimen en meer modules toevoegen aan de tekstdump.

Wat het oplevert
"Wanneer is afspraak X" gaat werken. Snel te doen.
Wat het kost
Elke vraag wordt duurder, en de kosten stijgen mee met hoe vol je app zit — een gezin dat de app twee jaar gebruikt betaalt per vraag meer dan een nieuw gezin. Dat is een vervelende vorm.
Wat je opgeeft
De voorwaardelijke opdracht blijft onmogelijk. En de privacy-richting is verkeerd: meer modules erin betekent meer gegevens weg bij elke vraag.

Variant K2 · Lokaal zoeken, alleen treffers versturen

aanbevolen

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.

Wat het oplevert
Onbeperkt bereik: "wanneer is afspraak X" werkt ook voor volgend jaar, want er staat geen venster meer op. Kosten worden vlak — een vraag kost hetzelfde bij een lege en een volle app. En er gaat aantoonbaar minder van je telefoon af: alleen wat op je vraag matcht.
Wat het kost
Er moet een zoeklaag komen die weet wat "wasmiddel" of "tandarts" in welke module betekent. Dat is echt werk, en het is de plek waar het mis kan gaan: mist de zoeker de treffer, dan zegt het model "niet gevonden" terwijl het er wel staat. Dat is een vervelender fout dan te veel data, want hij is stil.
Vangnet
Bij nul treffers alsnog de smalle dump van de meest waarschijnlijke module meesturen, en in het antwoord zeggen waar er gezocht is. Dan is "niet gevonden" een controleerbare uitspraak en geen mysterie.

Variant K3 · Het model gereedschap geven

meest kunnen, meeste risico

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.

Wat het oplevert
Dit is het enige dat "staat wasmiddel erop? Zo nee, zet het erin" echt kan: zoeken, de uitkomst bekijken, en dán besluiten te schrijven. Ook meerstaps-opdrachten ("zet de tandartsafspraak erin en een taak om de verzekeringskaart mee te nemen").
Wat het kost
Meerdere modelrondes per vraag, dus duurder en langzamer dan K2 — merkbaar, in de orde van seconden. En het vraagt strakke bewaking: elk gereedschap moet zelf zijn rechten en het deelmodel afdwingen, want het model bepaalt de aanroep en niet jij.
Waar ik voorzichtig in ben
De huidige belofte is "de assistent muteert nooit zelf". Met gereedschap wordt die belofte een implementatiedetail in plaats van een structurele eigenschap. Die moet dan hard afgedwongen blijven: schrijf-gereedschap levert een voorstel op, nooit een uitvoering.

Mijn advies: K2 nu, K3 als aparte stap erna

aanbeveling

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.

4. De twee lagen — jouw indeling, uitgewerkt

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.

Laag 2 (module) · Variant M1 — extractie zoals nu, in álle formulieren

uitrol

Het bestaande patroon (foto/tekst → velden) van 9 naar alle relevante formulieren. Geen chat, geen routing.

Voor
Bewezen patroon, voorspelbaar, geen nieuwe risico's. Puur uitrolwerk.
Tegen
Je kunt niets vragen in een module — alleen invullen.

Laag 2 · Variant M2 — module-gebonden chat

aanbevolen

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.

Voor
Alle voordelen die je noemt: context bekend, domein bekend, dus de juiste actie is direct duidelijk. Bovendien mag hier een strakker gereedschap-setje gelden, wat K3 later veiliger maakt: in de boodschappenmodule bestaat "maak een afspraak" simpelweg niet.
Tegen
Twee ingangen betekent dat je moet uitleggen waarom de ene wél en de andere níet iets kan. Dat lost zich op als de globale chat een module-vraag gewoon doorstuurt in plaats van weigert.

Laag 2 · Variant M3 — spraak eerst

klein, hoog gevoel

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.

Let op
Dit hangt aan TEN-140: de permissietekst belooft on-device-herkenning die nu niet wordt afgedwongen. Spraak breder uitrollen vóór dat is opgelost, vergroot een belofte die nog niet waar is. Doe TEN-140 dus eerst, of gelijktijdig.

Laag 1 (globaal) · Waar kom je binnen?

nu onvindbaar

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.

Opties
a. Een vast invoerveld bovenaan Vandaag ("Vraag of voeg toe…"). Meest vindbaar, kost verticale ruimte op het drukste scherm. · b. Een knop in de onderbalk. Altijd bereikbaar, kost een plek in de navigatie. · c. Een zwevende knop rechtsonder. Goedkoopst, maar botst met de bestaande toevoeg-knoppen.
Advies
a, het veld op Vandaag. Het maakt van de assistent een invoerplek in plaats van een scherm dat je moet opzoeken, en het sluit aan bij hoe je de voorbeelden formuleerde: je wilt iets vragen of toevoegen, niet "de assistent openen".

5. Open vragen — hier maak ik geen aanname van

1 · Mogen financieel en gezondheid mee?

privacy

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.

2 · Wat mag een vraag kosten?

verdienmodel

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.

3 · Hoe ver gaat "aanmaken"?

scope

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.

4 · Mag de assistent zonder bevestiging schrijven?

principe

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.

6. Omvang — ruwe inschatting, geen belofte

StapWatOmvang
1Agenda-schrijfactie erbij (jouw vierde voorbeeld)klein — 1-2 dagen
2Ingang op Vandaag (vindbaarheid)klein — 1 dag
3K2: lokale zoeklaag + treffers i.p.v. dumpmiddel — 4-6 dagen
4M2: module-gebonden chat in de belangrijkste modulesmiddel — 3-5 dagen
5M3: microfoon in de module-sheets (ná TEN-140)klein — 1-2 dagen
6K3: gereedschap + meerstaps, met bewakinggroot — 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.