Skip to content
D · 02 · TECHNICAL WRITE-UP

Shop Life.

Een voice-first gezinsassistent, ontworpen voor in de auto.

Werk blijft buiten de auto. Dan is de rit vrij, en Shop Life gebruikt die voor gezinscoördinatie en zelf bijleren. Praat ermee; het regelt de agenda, de maaltijden en research. Alles wat niet terug te draaien is, wacht op een ja in WhatsApp.

01 · DRIE TOEPASSINGEN

Drie taken voor onderweg.

Elke toepassing zit achter dezelfde spraakagent. Intentieherkenning bepaalt waar het gesprek heen gaat, het betreffende subsysteem handelt het af, en WhatsApp toont de bevestiging.

FunctieWat het doetWaarFlow
GezinsagendaAfspraken aanmaken in gewone taal, conflictdetectie, en proactieve herinneringen via WhatsApp tegen een gedeelde gezinsagenda.Onder het rijdenVoice → parser → Google Calendar API → conflict check → WhatsApp confirm + reminder.
Maaltijdplanning + boodschappenRecepten bedenken via spraak; de boodschappenlijst volgt uit het gekozen plan; de Picnic-mand wordt automatisch gevuld.Onderweg naar huisVoice → Spoonacular for recipes → list generation → Picnic API cart add → WhatsApp approval gate → checkout.
Research + debatGrondig onderzoek naar elk onderwerp via spraak, met een melding via WhatsApp als het klaar is. Zodra het in de kennisbank staat, kan de assistent er een debat met je over voeren — RAG-onderbouwd tegen het onderzoek dat hij net heeft gedaan.Lange ritten, tijd om zelf bij te lerenVoice → research orchestrator → Vertex AI embeddings → KB → debate agent (RAG over the same KB) → voice reply.
02 · STACK

Wat eronder draait.

LaagDetail
SpraakinterfaceElevenLabs Conversational AI — inkomende én uitgaande spraak. Ontworpen voor handsfree gebruik onder het rijden.
Parsing + classificatieGoogle Gemini 2.5 Flash — snelle intentie- en entiteitsherkenning uit het gesprekstranscript.
Research + redenerenGoogle Gemini 2.5 Pro — de zwaardere laag voor het researchsubsysteem en de debatantwoorden.
Embeddings + RAGVertex AI text-embedding-004 — vectoriseert de research-output zodat de debatagent per beurt de relevante stukken kan ophalen.
BackendPython 3.11 + FastAPI op Google Cloud Run. Gebouwd met Docker, gedeployed via GitHub. Secrets in Google Secret Manager.
Data + opslagBigQuery als datawarehouse, Cloud Storage voor documenten.
03 · INTEGRATIES

De vier API's waar het op draait.

Elke integratie wijst naar iets wat het huishouden al gebruikt: de gezinsagenda, de gezinschat op WhatsApp, en Picnic, dat de boodschappen van het huishouden bezorgt.

  • Google Calendar API — Lezen en schrijven in de gezinsagenda. De bron van waarheid voor wat er al gepland staat.
  • WhatsApp Business API (via PyWa) — Asynchroon goedkeuringskanaal + proactieve herinneringen.
  • Spoonacular API — Receptdata voor de maaltijdplanning-gesprekken.
  • Picnic API — Automatisering van de boodschappenmand. De boodschappenlijst belandt in de mand.
04 · OPVALLENDE ONTWERPKEUZES

De minder voor de hand liggende beslissingen.

Voice erin, WhatsApp eruit
Spraak is de juiste invoermodus voor de auto. Het is de verkeerde controlemodus — je kunt een boodschappenlijst niet hardop nalezen. Dus de spraakagent bereidt voor en de WhatsApp-thread keurt goed. Agenda-uitnodigingen en Picnic-afrekeningen wachten allebei op een ja in die thread; niets wat de dag van een ander raakt, wordt zonder vastgelegd.
Gemaakt voor de reistijd
Het systeem is ontworpen voor de reistijd, een stuk van de dag dat er toch al was, zodat het geen geconcentreerde werkuren opslokt.
Dezelfde stack als deze site
ElevenLabs Conversational AI + Gemini + Cloud Run is dezelfde familie waar de site rutgertuit.nl op draait, dus de auth, het secret-beheer en het deploymentpatroon lagen al klaar.
WAAROM DIT BESTAAT

Het meeste regelwerk in een gezin is onzichtbaar werk. Het komt terecht bij wie de ruimte heeft om het bij te houden. AI is nuttig wanneer het dat bijhouden overneemt en de beslissingen zelf bij het gezin laat: welke maaltijd je kookt, welke middag je vrijmaakt. Dat is de lijn die Shop Life probeert vast te houden. Onder de motorkap leent het de multi-agent-opzet waar Luminary het hardst op leunt: de redeneerlogica blijft vast, terwijl de voorkeuren van het gezin als config meekomen.

Lees de broncode op GitHub →