What it does?
Momager is a voice-powered assistant with two core agents:
Nourish (meal planning + nutrition): Generates meal plans from preferences, creates recipe blueprints, builds a grocery list, and can tailor suggestions for postpartum/low-energy moments. It also supports extracting a structured “family nutrition profile” from a spoken onboarding-style prompt and saving that profile to MongoDB. Sage (scheduling + tasks): Creates and summarizes daily routines, adds appointments, tracks tasks, schedules self-care blocks, and can turn a natural-language “automation/workflow” description into structured steps (designed to bridge into Apple Shortcuts/AppIntents). The backend exposes a single main endpoint (/api/voice/process) that accepts either text or base64 audio. If configured, it uses ElevenLabs to transcribe voice (STT) and generate a spoken response (TTS). There’s also a profile API for Nourish (/api/nourish/profile) that persists family nutrition settings in MongoDB.
How we built it?
Backend: Python 3.11 + FastAPI A central router detects an activation phrase (“Hey Nourish”, “Hey Sage”, etc.) and dispatches the request to the correct agent. Agents are implemented as lightweight, deterministic classes with context objects that the client can read back. Voice layer: ElevenLabs STT: optional audio transcription if audio_base64 is provided. TTS: optional generation of base64 MP3 audio returned directly to the client as a data URL. Database: MongoDB (Motor async driver) Currently used to store and retrieve Nourish family profiles keyed by user_id. Client direction: iOS-first (Swift/SwiftUI) with wake-phrase-based UX; Flutter exists as a legacy prototype.
Challenges we ran into
Reliable routing from voice: Voice commands are messy—activation words, filler phrases (“hey”, “okay”), and partial utterances needed cleaning so the agent receives a usable command. Keeping responses structured but simple: We wanted the agents to return human-friendly text while also returning machine-readable context the app can render (meal plans, tasks, extracted profile fields). Optional voice features: The API needed to work even without ElevenLabs keys configured, while still enabling STT/TTS when available. Persistence boundaries: Some features naturally want storage (tasks, routines, baby logs), but the current implementation keeps most agent state in memory, which resets on server restart.
Accomplishments that we’re proud of
A working end-to-end voice command pipeline: audio → transcription → agent routing → text response → optional TTS audio back to the app. Clear separation into branded agents (Nourish and Sage) with distinct responsibilities and activation phrases. A real persisted data model for Nourish: family nutrition profiles stored in MongoDB with clean CRUD routes. A practical “onboarding by voice” step: extracting structured profile fields from a natural spoken description.
What we learned
Voice-first UX benefits from strict conventions (wake phrases + intent keywords) so users get predictable behavior. Returning both a natural-language response and structured “context data” is a powerful pattern for mobile apps. Making third-party voice dependencies optional keeps local development fast and reduces fragility. Persistence design matters early: deciding what belongs in DB vs in-memory changes how “real” the assistant feels across sessions.
What’s next for Momager
- Persist Sage + Baby state (tasks, appointments, routines, logs) in MongoDB per user_id so the assistant survives restarts and works across devices.
- Unify profiles with planning: have Nourish generate meal plans using the saved family profile (restrictions, cuisine prefs, budget, prep days) instead of only ad-hoc voice preferences.
- Real automation execution: take Sage’s parsed workflow steps and generate actionable Apple Shortcuts/AppIntents templates (not just a structured description).
- Have a robust memory layer, for truly personalised experience. Better NLU & safety checks: improve date/time parsing (“tomorrow at 2”) and add guardrails for nutrition/scheduling guidance.
- Explore on-device LLM usage, for a privacy-first approach.

Log in or sign up for Devpost to join the conversation.