๐ก Inspiration
Every day at SUTD, the same scene plays out โ a student stuck in a lab at 2am needs food but can't leave, someone's parcel is sitting at Building 1 reception but they're in class across campus, a freshman is drowning in Python homework and just needs 30 minutes of help.
The campus is small. The community is tight. But there's no easy way to say: "Hey, I need a hand โ and I'll pay you for it."
WhatsApp groups get chaotic. Telegram chats scroll past. We wanted something purpose-built โ a marketplace where asking for help takes 10 seconds, not 10 messages.
๐ What it does
TaskHero is a real-time campus task marketplace where SUTD students post tasks and other students (Heroes) complete them for micro-compensation.
๐ค Speak or type your task โ ๐ค AI instantly formats it with title, category, location, and fair pricing โ ๐ It goes live for Heroes to grab โ ๐ Real-time tracking shows both parties live progress โ ๐ฐ Payment released on completion
The flow:
| Step | What Happens |
|---|---|
| 1๏ธโฃ | Poster describes a task (voice or text) |
| 2๏ธโฃ | GPT-4o-mini structures it โ title, category, location, suggested compensation |
| 3๏ธโฃ | Task goes live on the marketplace |
| 4๏ธโฃ | A Hero accepts โ both see real-time progress updates |
| 5๏ธโฃ | Hero completes โ Poster confirms โ Payment released (95% to Hero) |
Key features:
- ๐๏ธ Voice-to-Task โ Speak naturally, Deepgram transcribes, AI formats
- ๐ Live Dashboard โ Real-time stats, active missions, activity charts
- ๐ Smart Browse โ Filter by category, sort by price/urgency, keyword search
- ๐ฑ Fully Responsive โ Mobile bottom-nav โ Desktop sidebar, works on any screen
- โก Instant Updates โ Firestore streams power every screen in real-time
Live demo: taskhero-sutd.web.app
๐ ๏ธ How we built it
Flutter Web (Dart) โ UI & responsive layout
ShadCN UI โ Polished component library
Firebase Auth โ One-click Google Sign-In
Cloud Firestore โ Real-time database + streams
OpenAI GPT-4o-mini โ Task formatting AI
Deepgram Nova-2 โ Speech-to-text engine
MediaRecorder API โ Browser mic capture (WebM/Opus)
Firebase Hosting โ Deployed & live
Architecture in 30 words: User speaks/types โ Deepgram transcribes โ GPT-4o-mini formats into structured JSON โ Firestore stores it โ Streams push updates to all connected clients in real-time. Zero polling.
We used Firestore transactions for task acceptance (no double-booking), FieldValue.increment for atomic counter updates, and 7 real-time streams powering the dashboard, browse screen, task detail, and profile.
Built in under 24 hours. ~3,500 lines of Dart across 14 files.
๐ง Challenges we ran into
Google Sign-In + Cross-Origin headers โ Firebase Auth popups break if
Cross-Origin-Embedder-Policyis set torequire-corp. Took us 2 hours to discovercredentiallesswas the fix. One word. Two hours.Firestore on Flutter Web โ The default gRPC transport doesn't work on web. Had to switch to long-polling, which isn't documented prominently.
Voice recording across browsers โ MediaRecorder API support varies wildly. We had to handle codec negotiation (WebM/Opus vs fallbacks) and deal with empty audio buffers on some browsers.
AI response consistency โ GPT-4o-mini occasionally returned creative field names instead of our exact schema. Solved with
response_format: json_objectand strict schema instructions.Double-posting bug โ Users tapping "Post Task" fast enough would create duplicate Firestore documents. Fixed with an
isPostingmutex guard and button disable state.
๐ Accomplishments that we're proud of
- โก < 3 second task creation โ from voice to posted task on Firestore
- ๐ค Voice-first UX โ most campus apps don't even have text input done right, we shipped speech-to-text
- ๐ True real-time โ both poster and hero see the same live-updating task detail screen, zero refresh needed
- ๐ค AI that actually helps โ not a gimmick; GPT-4o-mini genuinely saves users from writing structured posts, suggests fair SUTD-context pricing ($3โ4 for canteen runs, $10โ20 for tutoring)
- ๐ฑ Responsive from day one โ not "it works on mobile", but proper mobile-first bottom nav โ desktop sidebar transitions
- ๐ Production-grade security โ Firestore rules enforce user-level access, transactions prevent race conditions, API keys properly gitignored
๐ What we learned
- Firebase on web is a different beast โ half the Flutter+Firebase docs assume mobile. Web has its own quirks (long-polling, CORS headers, popup auth vs redirect auth).
- AI as a formatting layer, not a feature โ The best AI integrations are invisible. Users don't care that GPT-4o-mini is structuring their task โ they care that it takes 10 seconds instead of 2 minutes.
- Real-time is addictive once you have it โ Once we wired up Firestore streams, we couldn't go back to fetch-and-refresh. Every screen became a live dashboard.
- Voice UX requires patience โ Recording, transcribing, formatting is a 3-step async pipeline. Each step can fail. Error handling isn't optional โ it's the product.
๐ฎ What's next for TaskHero
- ๐ฒ Push notifications โ Alert heroes when a new task matches their preferences
- ๐ฌ In-app chat โ Let poster and hero coordinate without leaving the app
- โญ Reputation system โ Build trust scores based on completion rate, ratings, response time
- ๐ซ Multi-campus expansion โ NUS, NTU, SMU โ same compact campus model, much larger user base
- ๐ณ Real payments โ Integrate PayNow/Stripe for actual SGD transfers instead of honor-system tracking
- ๐ง Smart matching โ AI recommends tasks to heroes based on location, skills, and availability
Built with ๐งก by SUTD students, for SUTD students.
Log in or sign up for Devpost to join the conversation.