Vera
Thesis
Voice-first daily planner for iOS. Plan your day in under 5 minutes, hands-free. Vera greets with a health briefing (recovery, sleep, HRV), asks smart follow-ups as you talk through your day, outputs a prioritized schedule, writes it to Google Calendar. Internal codename: PlanIt (bundle ID com.planit.app).
Status
active. Pinned. Created 2026-04-02, last push 2026-04-06. Swift / iOS.
Stack
- Platform: iOS 17+, Xcode 15+, Swift, XcodeGen.
- Speech I/O: on-device STT and TTS — no internet needed for either.
- AI: Groq (primary,
llama-3.3-70b) with OpenRouter fallback. - Health: Apple HealthKit (HRV, RHR, sleep) and Whoop (recovery, strain, HRV, sleep performance via Whoop V2 API OAuth 2.0).
- Calendar: Google Calendar OAuth 2.0 — reads today's events for conflict detection, writes the finalized plan.
- Siri:
StartPlanningIntentshortcut — "Hey Siri, start planning." - Architecture: service classes per integration (
AIService,WhoopService,GoogleCalendarService,HealthKitService, etc.),VoiceSessionManageras the core state machine.APIKeys.swiftgitignored; each dev supplies their own.
Key decisions
- Multi-provider AI with fallback: Groq primary for speed/cost, OpenRouter fallback when rate-limited.
- On-device STT/TTS: latency-critical voice UX can't eat a network round-trip per utterance. Same principle as wispr-flow.
- Optional integrations: Whoop and Google Calendar are both optional — app still works without them but loses health context and auto-write. Good onboarding: don't block first-use on OAuth.
- Bundled state machine (
VoiceSessionManager): conversational flow is inherently stateful; centralizing state keeps it debuggable.
Learnings
- For voice products, the first 500ms from tap is the entire UX. On-device STT + a snappy Groq call gets you under that bar.
- Optional OAuth integrations with graceful fallback are the right pattern for apps that benefit from health/calendar data but shouldn't require it to demo.
Outcomes
- Product exists, pinned on profile, actively developed. No public metrics yet.
Open questions
- What's the "smart follow-up" logic? Prompt-engineered or a more structured planning model?
- How does Vera reconcile conflicts when Whoop says "recovery is 40, go easy" but the calendar already has a full day?
- Distribution: TestFlight, App Store, or private?
Links
- Source summaries: github-vera-source
- Shared patterns: local-first-architecture, ai-model-choice (multi-provider fallback), compress-mechanical-labor (voice → structured plan)
- Kinship: wispr-flow (same local-first stance on voice)