-
-
Onboarding/Landing Page
-
Initial Task Query
-
Generated Breakdown of Task (1)
-
Generated Breakdown of Task (2)
-
Interactive Progress Bar/Checkoff
-
User's input into interactive chatbot which can break up subtasks into more subtasks
-
Generatively creating a new task
-
Generated task from new task input
-
Recently deleted/Restoring tasks
-
Agentverse Agent Deployed
-
Whatsapp Conversation with Agent
-
Whatsapp Agent Interacts with App in Realtime
Inspiration
ADHD can make starting a task harder than the task itself. Most to-do apps make that worse by showing a big list and expecting you to organize it yourself. We wanted something that reduces the first bit of friction: give one goal, get one clear next step, and keep the flow simple enough that it still works when your energy is low.
What it does
TinyTasks helps users turn a goal into a short, actionable plan. The web app generates a first step and a small set of follow-up steps instead of a giant checklist. WhatsApp lets users interact with the same plan away from their laptop: PLAN [goal] creates a plan, STUCK gives a smaller next move, and DONE records progress. The web app reflects those updates so the task stays in sync across both surfaces.
How we built it
Frontend: React, TypeScript, Vite, Tailwind, deployed on Vercel. Backend: FastAPI deployed on Railway, with MongoDB Atlas for persistence. Planning and nudges: Gemini for plan generation, re-entry prompts, and plan adjustments. WhatsApp: Twilio webhooks for inbound/outbound messaging. Sync: a lightweight Mongo-backed event feed that the frontend polls instead of using WebSockets. Reminders: Fetch.ai uAgents triggering scheduled reminder callbacks.
Challenges we ran into
The hardest part was keeping WhatsApp and the web app truly in sync. We had to link guest users across email, phone number, and saved plan IDs without adding full auth. We also ran into duplicate plan creation when WhatsApp commands and follow-up actions created multiple versions of the same task, so we reworked the flow to keep one canonical active plan per thread. Another issue was stale or vague WhatsApp context: short replies like “keep going” could drift into unrelated territory, so we tightened the command flow and grounded continuation replies in the linked saved plan. We also dealt with Twilio sandbox constraints, retry behavior, signature validation, and the usual Railway/Vercel CORS issues.
Accomplishments that we're proud of
We got the core cross-surface experience working: create a plan on the web, continue it over WhatsApp, and keep the same task state tied together. The onboarding flow now creates a persistent guest user without requiring auth, which made plan linkage much more reliable. We also ended up with a cleaner WhatsApp lifecycle than we started with: plan creation, reminders, nudges, and completion now map to the same saved plan instead of feeling like separate demos taped together.
What we learned
For this kind of product, state management matters as much as UI. A simple-looking chat interface becomes messy fast if plans, reminders, and session state are not all pointing at the same source of truth. We also learned that vague free-form chat is risky in a task app; explicit commands and grounded replies are often more useful than trying to make every message conversational. And for hackathon speed, polling plus a small event layer was much easier to make reliable than a more complex real-time setup.
What's next for TinyTasks
Personalized reminders based on user-defined focus windows Voice input so users can speak their tasks instead of typing Progress tracking and streaks to build positive momentum over time Multi-device sync and a mobile-first PWA experience Deeper Fetch.ai agent integration for proactive, context-aware coaching throughout the day
Built With
- fastapi
- fetch.ai
- gemini
- mongodb
- railway
- react
- tailwind
- twilio
- typescript
- uagent
- vercel
- vite
Log in or sign up for Devpost to join the conversation.