Shop Life.
A voice-first family assistant, designed for the car.
Work stays out of the car. That leaves the drive free, and Shop Life uses it for family coordination and personal learning. Talk to it; it handles the calendar, meals and research. Anything that can't be undone waits for a yes in WhatsApp.
Three jobs for the drive.
Each use case lives behind the same voice agent. Intent detection routes the conversation, the relevant subsystem handles it, and WhatsApp surfaces the receipt.
| Capability | What it does | Where | Flow |
|---|---|---|---|
| Family calendar | Natural-language event creation, conflict detection, and proactive WhatsApp reminders against a shared family calendar. | While driving | Voice → parser → Google Calendar API → conflict check → WhatsApp confirm + reminder. |
| Meal planning + grocery | Recipe brainstorming over voice; shopping list generated from the chosen plan; Picnic cart populated automatically. | Commute home | Voice → Spoonacular for recipes → list generation → Picnic API cart add → WhatsApp approval gate → checkout. |
| Research + debate | Deep research on any topic over voice, with WhatsApp notification when ready. Once it's in the knowledge base, the assistant can hold a debate with you about it — RAG-backed against the research it just did. | Long drives, personal learning time | Voice → research orchestrator → Vertex AI embeddings → KB → debate agent (RAG over the same KB) → voice reply. |
What runs underneath.
| Layer | Detail |
|---|---|
| Voice interface | ElevenLabs Conversational AI — inbound + outbound voice. Designed for hands-free use while driving. |
| Parsing + classification | Google Gemini 2.5 Flash — fast intent + entity extraction from the conversation transcript. |
| Research + reasoning | Google Gemini 2.5 Pro — the heavier-lift layer for the research subsystem and debate responses. |
| Embeddings + RAG | Vertex AI text-embedding-004 — vectorises the research output so the debate agent can retrieve relevant chunks per turn. |
| Backend | Python 3.11 + FastAPI on Google Cloud Run. Docker-built, GitHub-deployed. Secrets in Google Secret Manager. |
| Data + storage | BigQuery as the data warehouse, Cloud Storage for documents. |
The four APIs it relies on.
Each integration points at something the household already uses: the family calendar, the family WhatsApp chat, and Picnic, which delivers the household's groceries.
- Google Calendar API — Family calendar read/write. The source of truth for what's already booked.
- WhatsApp Business API (via PyWa) — Asynchronous approval surface + proactive reminders.
- Spoonacular API — Recipe data for the meal-planning conversations.
- Picnic API — Grocery cart automation. The shopping list lands in the cart.
The non-obvious decisions.
- Voice in, WhatsApp out
- Voice is the right input mode for the car. It's the wrong review mode — you can't proofread a shopping list out loud. So the voice agent prepares and the WhatsApp thread approves. Calendar invites and Picnic checkouts both wait for a yes there; nothing that touches someone else's day gets committed without one.
- Made for the commute
- The system is designed for commute time, a stretch of the day that was already there, so it doesn't eat into focused work hours.
- Same stack as this site
- ElevenLabs Conversational AI + Gemini + Cloud Run is the same family the rutgertuit.nl site sits on, so the auth, the secret management and the deployment pattern were already in place.
Most family coordination is invisible labour. It lands on whoever has the bandwidth to keep track of it. AI is useful when it takes over that tracking and leaves the decisions themselves with the family: which meal to cook, which afternoon to free up. That's the line Shop Life tries to hold. Under the hood it borrows the multi-agent split that Luminary leans on hardest: the reasoning logic stays fixed, while the family's preferences come in as config.