Skip to content
D · 02 · TECHNICAL WRITE-UP

Shop Life.

A voice-first family assistant, designed for the car.

The commute is unproductive on purpose — work-grade tools can't be used in the car. Shop Life claims that slot for family coordination and personal learning instead. Talk to it. It handles calendar, meals, and research. WhatsApp keeps you in the loop on anything irreversible.

01 · THREE USE CASES

Three jobs, one voice interface.

Each use case lives behind the same voice agent. Intent detection routes the conversation, the relevant subsystem handles it, and WhatsApp surfaces the receipt.

CapabilityWhat it doesWhereFlow
Family calendarNatural-language event creation, conflict detection, and proactive WhatsApp reminders against a shared family calendar.While drivingVoice → parser → Google Calendar API → conflict check → WhatsApp confirm + reminder.
Meal planning + groceryRecipe brainstorming over voice; shopping list generated from the chosen plan; Picnic cart populated automatically; final approval via WhatsApp before checkout.Commute homeVoice → Spoonacular for recipes → list generation → Picnic API cart add → WhatsApp approval gate → checkout.
Research + debateDeep research on any topic over voice, with WhatsApp notification when ready. Once it's in the knowledge base, the assistant can hold a real debate with you about it — RAG-backed against the research it just did.Long drives, personal learning timeVoice → research orchestrator → Vertex AI embeddings → KB → debate agent (RAG over the same KB) → voice reply.
02 · STACK

What runs underneath.

LayerDetail
Voice interfaceElevenLabs Conversational AI — inbound + outbound voice. Designed for hands-free use while driving.
Parsing + classificationGoogle Gemini 2.5 Flash — fast intent + entity extraction from the conversation transcript.
Research + reasoningGoogle Gemini 2.5 Pro — the heavier-lift layer for the research subsystem and debate responses.
Embeddings + RAGVertex AI text-embedding-004 — vectorises the research output so the debate agent can retrieve relevant chunks per turn.
BackendPython 3.11 + FastAPI on Google Cloud Run. Docker-built, GitHub-deployed. Secrets in Google Secret Manager.
Data + storageBigQuery as the data warehouse, Cloud Storage for documents.
03 · INTEGRATIONS

The four load-bearing APIs.

Each external API is doing real work, not abstract demo work — the calendar is the family calendar, the WhatsApp thread is the actual family chat, the Picnic cart is the one that actually checks out at the door.

  • Google Calendar APIFamily calendar read/write. The source of truth for what's already booked.
  • WhatsApp Business API (via PyWa)Asynchronous approval surface + proactive reminders. Critical for the car use case — voice for input, WhatsApp for review.
  • Spoonacular APIRecipe data for the meal-planning conversations.
  • Picnic APIGrocery cart automation. The shopping list lands in the cart, the WhatsApp gate keeps the human in the loop before checkout.
04 · NOTABLE DESIGN CHOICES

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. WhatsApp closes the loop asynchronously: the voice agent acts; the WhatsApp thread reviews and approves before any irreversible action (cart checkout, calendar invite).
Approval gate before any irreversible action
Calendar inserts and Picnic checkouts both pause at a confirm step. The agent does not commit to anything that touches another human's day without a yes on the WhatsApp thread.
Car-time productivity, not work-time displacement
The system is explicitly designed for commute time — the part of the day where work-grade AI tools can't be used due to security constraints. It reclaims a slot that was already there, instead of fragmenting focused work hours.
Same lineage as the rest of the stack
ElevenLabs Conversational AI + Gemini + Cloud Run is the same family the rutgertuit.nl site and Luminary both sit on. Cross-project know-how compounds — the auth, the secret management, and the deployment pattern were already paid for.
Dutch-market focus
Picnic isn't a stand-in for an abstract grocery API — it's the actual delivery service the household uses, so the integration is genuinely useful, not a demo.
WHY THIS EXISTS

The honest version: most family coordination is invisible labour that ends up on whoever has the bandwidth to track it. AI is genuinely useful when it absorbs the tracking — not when it tries to replace the actual decision about which meal to cook or 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 real preferences ride in as config — applied here to the part of the day work tools can't reach.

Read the source on GitHub →