Inspiration
We're from Argentina, where keeping track of family expenses isn't a nice-to-have — with persistent inflation, installment plans ("cuotas") everywhere and money split across pesos and dollars, it's survival. But nobody in our families actually keeps a spreadsheet updated: receipts pile up, recurring services get forgotten, and by the end of the month nobody knows where the money went. We wanted logging an expense to be as easy as sending a voice note — and let an AI team do the accounting.
## What it does
Al Día ("up to date" in Spanish) is an AI agent for family finances. You register expenses, income, recurring services and installments by chat, voice, photo or PDF — snap a receipt and it's logged. From there:
- A live dashboard with monthly summaries, category breakdowns, budgets and alerts, in ARS or USD with a live exchange rate.
- Inflation-aware analysis: an agent that contextualizes your spending against Argentine inflation.
- Installment tracking: knows what you'll owe next month before you do.
- Financial diagnosis: an agent that reviews your month and tells you what's off.
- One-message Excel exports: ask for a report, get a download card in the chat.
The UI streams the agents' reasoning steps live, so you can watch the system think.
## How we built it
A multi-agent system on Google ADK with Gemini 2.5 Flash: a root agent routes to five specialized subagents (installments, inflation, diagnosis, visualization, Excel export). The backend is FastAPI on Cloud
Run, streaming responses over SSE. Data lives in MongoDB Atlas, accessed two ways: first-party Python tools for structured CRUD, and the official MongoDB MCP server — deployed as its own Cloud Run service —
for complex ad-hoc queries via ADK's MCPToolset over streamable HTTP, with OIDC service-to-service auth. The frontend is SvelteKit 5 on Firebase App Hosting, with Apache ECharts for visualizations.
## Challenges we ran into
- MCP in production is not MCP on localhost. Running the MongoDB MCP server as a real Cloud Run service meant solving streamable HTTP transport, health-check binding and OIDC identity tokens between services — very
different from
npxon a laptop. - Gemini rejected MCP tool schemas. The MCP server emits JSON Schemas with
additionalProperties, which Gemini's function-calling API refuses. We patched ADK'sMcpToolto normalize every schema through Gemini's converter at registration time. - Agents hallucinating tool outputs. Our Excel agent kept returning a placeholder URL instead of the real signed download link. We redesigned the flow with an IPC pattern so the download card is built from the tool's actual output — the model never touches the URL.
- SSE through Firebase App Hosting ruled out static adapters; we moved to
adapter-nodeso streaming survives end-to-end.
## What we learned
Multi-agent orchestration is a tool-design problem more than a prompting problem: the biggest quality jumps came from making it impossible for the model to fake an output, not from better instructions. We also learned to treat MCP as production infrastructure — auth, transports, health checks — and a lot about schema compatibility between ecosystems that are still young.
## What's next
Multi-user support with Firebase Auth (one family, many members), budget alerts pushed proactively, and bank-statement ingestion to close the loop on automatic expense capture.
Built With
- agent-development-kit
- fastapi
- firebase
- gemini
- google-cloud
- mcp
- mongodb
- python
- svelte
- typescript
Log in or sign up for Devpost to join the conversation.