About the Project
Inspiration
I wanted to build a habit app where suggestions are not "random AI vibes," but grounded in evidence. The core idea was: if we ask users to change behavior, we should be able to show why a habit is recommended and what research supports it. That led to Evida: a habit coach that can cite sources, explain tradeoffs, and turn advice into concrete actions.
What I Built
Evida combines three pieces:
- Evidence-backed habits: habit recommendations are designed to be traceable to research (papers, summaries, curated documents), so users can verify claims.
- A personalized chat agent: users can ask questions, get coaching, and receive explanations in plain language while referencing supporting sources.
- Action-oriented automation: the agent can propose Action Cards (e.g., create a habit, schedule check-ins) that users can accept/decline with one tap, plus a server-generated Daily Brief delivered to a dedicated chat session at a user-selected time.
How I Built It
- Frontend: Flutter (multi-platform) with Cubit for state management. The chat UI supports streaming assistant responses and renders Action Cards inline with messages (Accept/Decline).
- Backend: Serverpod with typed endpoints and protocol generation, plus FutureCalls for scheduling:
- Daily Brief generation and delivery
- Automated check-ins that post into chat sessions
- Auth & storage: Firebase authentication integrated with Serverpod sessions, and document/media uploads stored in Cloudflare R2-compatible storage.
- Knowledge sources:
- An admin document library that applies to all users (curated research and references)
- Per-session user uploads that remain private to that chat session
The Daily Brief scheduling uses the user’s configured delivery time plus a stored timezone offset.
Challenges I Faced
- Scheduling and server roles: making scheduled features work reliably required understanding how Serverpod executes maintenance tasks and ensuring the correct runtime mode for FutureCalls.
- Time zones and testing: scheduling “daily” events is deceptively tricky. Offsets change, users travel, and it’s easy to schedule something “tomorrow” when you want to test it now. I added mechanisms to make the feature testable without waiting a day.
- Turning AI output into safe actions: Action Cards needed a strict schema and validation so the app only executes a narrow, safe set of actions. This reduced risk and made the behavior predictable.
- Balancing privacy with usefulness: supporting both global admin documents and per-session user uploads required clear separation so private data never leaks into other contexts.
- Making evidence feel usable: it’s not enough to “have sources.” The hard part is surfacing research in a way that builds trust without overwhelming the user, while keeping the coaching experience fast and practical.
What I Learned
- Typed APIs and generated protocols make it much easier to evolve features quickly without breaking clients.
- “Butler” experiences are won by orchestration: background jobs, scheduling, realtime-ish updates, and clear UX around automation.
- In habit coaching, trust matters as much as UX polish. Being explicit about evidence and making actions opt-in (Accept/Decline) creates a safer and more credible product.
Built With
- cloudflare
- dart
- flutter
- gemini
- serverpod

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