Inspiration We've all been there — you open a maps app for directions, a weather app for conditions, a calendar app for your schedule, and a separate app for local events, and by the time you've pieced together a plan for your evening, half the evening is gone. Modern assistants promised to fix this but most of them are either glorified chatbots with no real context about your life, or complex dashboards that take too long to use when you just need a quick answer. We wanted to build something different. An assistant that actually knows you — your mood, your schedule, your conflicts, your city — and can respond to a single voice command with a complete, intelligent, real-world plan. Donna was built around that idea: one assistant, one interface, zero switching between apps.

What it does Donna is a voice-first personal city assistant and real-time command center. You speak to Donna naturally and she responds with a complete plan tailored to your current conditions. She handles navigation — give her a destination and she pulls up a live embedded map with your route, ETA, and traffic-aware strategy hints without leaving the page. She manages your personal workspace — add todos, schedule calendar events, and Donna will detect conflicts automatically and ask whether to move, replace, or cancel overlapping appointments. She reads your mood — tell her you're feeling calm or adventurous and she adjusts her recommendations accordingly. She knows your city — live Tampa events, movie listings, restaurant recommendations, and neighborhood context are all surfaced in real time. And she gives business intelligence — opportunity scoring and location-aware recommendations for anyone thinking about where to open or grow a business. Everything happens in one interface. Voice in, voice out, with cards, a live map, and a personal workspace all on the same page.

How we built it The backend is FastAPI with a multi-agent orchestrator at its core. When a user sends a voice or text request, an intent extraction layer decides which agents are needed to handle it. Those agents run in parallel and the orchestrator merges their structured outputs into a single typed API response that the frontend renders. The agents each own a specific domain. The Traffic Agent handles route calculation, ETA, and strategy hints. The Weather Agent provides live atmospheric context. The City Context Agent supplies place density and neighborhood signals. The Restaurant and Recommendation Agent returns contextual place suggestions. The Business Advisor Agent scores opportunities and generates location-aware recommendations. The Events Agent surfaces live Tampa events and movie listings. The Personal Assistant Agent manages mood input, todos, calendar entries, and conflict detection logic. A RAG Retriever grounds all responses in local city knowledge pulled from a curated document store. The frontend is React with Vite and Framer Motion for smooth, premium animations. Google Maps APIs handle geocoding, directions, and the live embedded map. OpenAI handles voice synthesis and response generation. Personal state is persisted across sessions so Donna remembers your calendar, todos, and preferences between conversations.

Challenges we ran into Orchestrating multiple agents in parallel and merging their outputs into a single coherent response was the hardest technical problem. Each agent returns structured data in its own schema, and the orchestrator has to reconcile those into one response that feels natural and complete — not a list of disconnected answers. Getting the timing, error handling, and fallback logic right across all agents took significant iteration. Calendar conflict detection was surprisingly complex. Detecting an overlap is straightforward, but deciding how to surface it — asking the user whether to move, replace, or cancel — required building a full conflict resolution flow that felt conversational rather than mechanical. Keeping the entire experience on one page without it feeling cluttered was a UI challenge. A live map, voice input, a todo and calendar dock, event cards, and an assistant response panel all coexist in the same interface. Getting the layout to feel premium and usable under time pressure required a lot of design decisions made quickly. Mood-aware planning also required more thought than expected. Translating a subjective input like "I'm feeling calm" into concrete filtering and ranking logic across events, restaurants, and route suggestions meant building a mood-to-preference mapping layer that could influence multiple agents simultaneously.

Accomplishments that we're proud of We built a genuinely multi-agent system where agents run in parallel and their outputs are merged in real time — not a single LLM call dressed up as an orchestrator. The architecture is real and the separation of concerns between agents is clean. The calendar conflict detection flow is something we're particularly proud of. Donna doesn't just flag a conflict — she asks a follow-up question and resolves it based on your response, which makes her feel like an actual assistant rather than a scheduling tool. The interface holds together. A live map, voice interaction, a personal workspace, and a real-time events feed all in one page, with smooth animations and a layout that feels intentional. Building that under hackathon time constraints and making it feel premium rather than rushed is an accomplishment we're genuinely proud of.

What we learned Parallel agent orchestration is powerful but coordination is everything. The individual agents were relatively straightforward to build — the hard work was in the orchestrator layer that decides which agents to invoke, runs them concurrently, handles failures gracefully, and stitches the results into something coherent. We also learned that voice-first design forces you to be much more deliberate about response structure. A wall of text that looks fine on screen sounds terrible when spoken. Every response Donna generates had to be written to be heard, not just read. And the biggest lesson: users don't want to manage complexity, they want complexity managed for them. The more invisible the orchestration, the better the experience. Every piece of intelligence Donna applies should feel effortless from the user's side, even when the backend is doing significant work.

What's next for Donna The most immediate priority is expanding Donna's city coverage beyond Tampa so the local knowledge base and events feed can work in any city. After that, we want to deepen the personal memory layer — right now Donna remembers your calendar and todos, but we want her to learn your preferences over time, recognizing patterns in what you like, where you go, and how you plan your days. We also want to add proactive suggestions — Donna reaching out to you rather than waiting for a command. If your calendar shows a meeting across town in an hour and traffic is bad, she should tell you before you ask. On the business intelligence side, we want to expand the opportunity scoring model with richer data sources. And longer term, we're exploring integrations with third-party calendar providers, ride-sharing APIs, and ticketing platforms so Donna can not just suggest a plan but actually execute it.

Built With

Share this project:

Updates