Inspiration
Asides Sam's brief , we wanted to build the assistant we wished we had: one that doesn't care if you are on a laptop or a phone (The Brief spec) , and one that doesn't force you to scroll through endless date pickers just to set a reminder for "next Tuesday." We wanted to bridge the gap between Natural Language and Native System Utilities.
What it does
Rheminda is an intelligent, cross-platform assistant that turns unstructured voice or text into organized, actionable schedules.
- ๐ฃ๏ธ Voice-to-Action: You can speak complex requests like "Remind me to take my antibiotics for 5 days, then skip 2, then repeat," and the AI handles the math, setting up the entire queue instantly.
- ๐ฑ Native & Web Sync: Start a task on the web dashboard and get the notification on your Android phone. Dismissing it on one device clears it everywhere.
- ๐ Smart Notifications: Notifications aren't just alerts; they are control centers. You can "Snooze" or "Mark Done" directly from the Android shade without opening the app.
- ๐ Timezone-Aware Intelligence: The app smartly calculates relative times (e.g., "in 20 mins") based on your device's actual location, preventing server-side timezone drift.
How we built it
We adopted a Hybrid Architecture to maximize code sharing while retaining native power:
- The Core: We built the frontend with Next.js 16 (React). This allows us to deploy the exact same codebase to the Web and to Android (wrapped via Capacitor).
- The Brain: The backend is a Python FastAPI service. When a user submits a voice note, we transcribe it and feed itโalong with the user's local time anchorโinto Google Gemini 2.0 Flash. The AI extracts structured JSON (
title,iso_date,recurrence_rule) which is stored in MongoDB. - The Experience: For the hackathon, we prioritized Frictionless Onboarding. Instead of forcing judges to sign up with email/password immediately, we implemented a persistent Device-ID Auth strategy (
user_+ random hash). This allows testers to install and start using the AI features instantly without a login wall. - Monetization: We integrated RevenueCat to manage our Freemium model, handling the complex handshake between Google Play Billing and our entitlement logic.
Challenges we ran into
- The "Timezone Drift": Our biggest technical headache was that the server (UTC) and the user (Local Time) often disagreed on what "tomorrow" meant. If a user in Nigeria said "in 10 mins" at 11 PM, the server in the US might schedule it for yesterday. We solved this by injecting the client's
ISO-8601timestamp into the Gemini System Prompt, grounding the AI in the user's reality. - Google Play's Gatekeepers: Navigating the Google Play Console for the first time was a maze. We faced issues with "Merchant Accounts" blocking our ability to test subscriptions and strict policies regarding the
RECORD_AUDIOpermission. We had to rapidly build a privacy policy and configure a hybrid "Test Store / Real Store" offering in RevenueCat to debug locally while deploying for judges.
Accomplishments that we're proud of
- "AI-Managed" Recurrence: Standard libraries (like rrule) couldn't handle "3 days on, 1 day off." We built a custom queueing logic where Gemini generates the specific future dates for these irregular patterns, something most major to-do apps can't do.
- Seamless Native Feel: Despite being a "web" app at heart, the Capacitor integration feels completely native. The bottom sheets, vibrations, and status bar coloring make it indistinguishable from a Kotlin app.
- Fixing the "Purchase Loop": We successfully debugged a critical RevenueCat configuration where the app was trying to buy a "Test" product in a "Production" environment. Fixing that handshake was a massive win.
What we learned
- Deployment is 50% of the work: Building the feature is easy; getting a Signed AAB bundle accepted by the Play Store Internal Track with valid permissions and merchant profiles is the real challenge.
- Prompt Engineering is Logic: We learned that AI models need "anchors." You can't just ask for a date; you have to tell the model what time it is right now for it to be accurate.
What's next for Rheminda
- ๐ True Cloud Auth: We will replace our current
localStorageID system with a robust solution (Clerk or Firebase Auth) to allow users to restore their data on new devices securely. - ๐ iOS Support: Since the codebase is already in Capacitor, deploying to the Apple App Store is our immediate next step to fulfill the "Cross-Platform" promise.
- ๐ Context Triggers: We plan to use Gemini to parse location-based intents (e.g., "Remind me when I leave work"), utilizing geofencing plugins.
Log in or sign up for Devpost to join the conversation.