Inspiration
When I started using to-do list apps. I faced a major problem. Tasks started getting accumulated and felt like a burden to choose what to do. It turned from a helping checklist to what felt like infinite choices. Which is when i started brainstorming solution. How do i make an app that helps reduce this infinite choices.Which is when i thought of changing the way to-do apps work. Rather than just adding tasks. How about an app that helps you decide what task to do as well.
What it does
IntentOS transforms task management from a passive list into an active commitment engine:
- Combats Choice Fatigue: Instead of presenting a long, overwhelming list of tasks, the app evaluates your current time budget and active energy state (LOW, MID, HIGH) to recommend a single, optimal task to focus on right now.
- Matrix Matchmaking Engine: Employs a tiered matching algorithm to find task candidates. If an urgent deadline is approaching within 24 hours, the engine automatically boosts its priority and overrides default energy constraints to ensure high-impact tasks are done first.
- Survives App and Device Reboots: Active countdown sessions are serialized to local storage every 10 seconds. If the application is closed or the phone reboots mid-focus, the active session automatically restores and resumes on launch.
- Sleep-Resistant Wakeups: Runs countdown sessions inside a persistent Android Foreground Service. When the timer expires, the app triggers precise alarms that bypass system battery-saving modes, firing distinct ringtones and haptic vibration patterns even if the device is locked or in deep sleep (Doze mode).
- Recurring Task Automation: Supports repeating cycles (None, Daily, Weekly, Monthly). Once a recurring task is completed, a new clone is automatically generated and scheduled for the next interval (e.g., +1 day for daily, +7 days for weekly).
- First-Launch Auto-Seeding: Instantly populates three default tasks on first launch to guide the user on how the engine works, and inserts a "Daily Alignment" reflection task once per calendar day.
- Gamified Pilot Stats: Tracks user accomplishments in a "Pilot Profile" tab, displaying velocity points, daily focus streaks, and rank progression (Rookie → Pilot → Lead Driver → Champion) via a custom-drawn, animated RPM-style tachometer gauge.
How we built it
IntentOS is engineered as a native, offline-first Android productivity application built with Kotlin and Java using Clean Architecture patterns:
- Jetpack Compose & Mintlify Styling: Developed with a light-mode, documentation-first aesthetic inspired by the Mintlify design system. We customized the theme layer (
Theme.kt,Color.kt, andType.kt) using clean brand-green accents (#00d4a4/#7cebcb/#00b48a), a white-canvas background, custom rounded geometry (8.dp for input fields, 12.dp for card surfaces), and premium typography (Inter for primary UI elements, and Geist Mono for metadata tags). - Dual-Language Local Storage: We combined Java for the Room Database (handling structured schema entities, DAOs, and data relationships for task items) and Kotlin for Proto DataStore (which serializes lightweight, fast-changing session states like active streaks, points, and remaining timer seconds).
- Matrix Matchmaking Engine: We developed a local matching algorithm in Kotlin that filters tasks based on the user's available time and active energy state (LOW, MID, HIGH). It uses a continuous linear priority boost (escalating from
+2to+15as a 24-hour deadline approaches) and a tiered fallback system (Tier 1: Strict Match → Tier 2: Relax Time → Tier 3: Relax Both) to ensure the app always recommends a task if the database is not empty. - Foreground Service Countdown (
FocusTimerService): To prevent the OS from terminating active countdowns, we encapsulated the timer in a started and bound Android Foreground Service that runs a persistent, live-updating notification drawer ticker. - Precision Alarms & Sleep Wakeups: Integrated the Android
AlarmManagerwithsetExactAndAllowWhileIdlepaired with a customTimerExpiredReceiver(BroadcastReceiver) to guarantee critical timer alerts fire haptics and play ringtones even if the phone goes into deep sleep (Doze Mode). - Gamified Tachometer Gauge: Inside the Pilot Profile tab, we built a custom Canvas-drawn 270° sweep RPM-style tachometer. It features animated needle deflection and redlining indicators at 80%+ progress to track Velocity Points and Pilot Rank progression (Rookie → Pilot → Lead Driver → Champion).
Challenges we ran into
- Surviving Background Execution Caps: Modern Android releases (API 34/35/36) impose highly restrictive background limits. Designing a background timer that remains highly reliable required structuring a dedicated Foreground Service with
FOREGROUND_SERVICEand special-use runtime configurations. - Doze Mode Ticker Freezes: During deep sleep (Doze mode), the system suspends standard handlers and coroutine timers. To guarantee alerts fire, we had to rely on the
AlarmManagerAPI to wake up the system and route the trigger through aBroadcastReceiverto handle audio and haptic feedback. - Session State Restoration: If the app is force-closed or the device reboots during a focus session, the active timer state could easily be lost. We resolved this by implementing a snapshot persistence routine, saving the remaining seconds to the Proto DataStore every 10 seconds to allow seamless reconstruction upon relaunch.
- Room Database Upgrades: Introducing recurring task variables (
repeatInterval) and custom media assets (imageUrl) required upgrading the database schema. We successfully implemented database schema version upgrades with destructive fallback migrations to support development iterations.
Accomplishments that we're proud of
- System-Level Ticker Reliability: By pairing foreground services, precise AlarmManager wakelocks, and periodic Proto DataStore snapshots, the countdown timer behaves like a core system tool that never drops a tick.
- Frictionless Productivity Engine: The Matrix Matchmaking Engine completely solves choice fatigue. By always providing the single best task—and gracefully falling back to relaxed constraints when necessary—it keeps the user in a flow state.
- Jetpack Compose Canvas Graphics: The animated RPM tachometer gauge, drawn natively on a Compose Canvas, brings a satisfying, tactile feel to pilot stats and velocity progression.
- Zero-Friction Cold Start: On fresh installs, the app automatically seeds three default tasks and schedules a daily featured goal so that the user can start focusing immediately without manual configuration.
What we learned
- Android Battery & Background Restraints: Acquired deep familiarity with managing background runtime restrictions and notification/alarm permissions across APIs 34 to 36.
- Theme Tokens & Scalability: Learned the value of mapping custom styling parameters directly to Material 3 theme variables, which enabled a major aesthetic overhaul (motorsport-to-Mintlify) without breaking component layouts.
- Dual-Language Interoperability: Successfully managed a hybrid codebase, leveraging Kotlin's modern features for UI and asynchronous flows alongside Java's stability for Room entities and relational DAO patterns.
What's next for IntentOS
- Ambient Distraction Detection: Track device movement and app-switching logs during active sessions to detect when a user drifts off-task, sending gentle alerts to bring them back.
- Companion Wear OS App: Build a companion app for smartwatches to let users start/pause sessions, control the task vault, and receive physical haptic vibration pulses directly on their wrist.
- On-Device AI (Gemini Nano): Utilize local, on-device AI to parse user task notes, analyze daily productivity patterns, and suggest custom task-scheduling intervals.
- Peer-to-Peer Focus Rooms: Allow local co-working synchronization using secure peer-to-peer local network socket connections, enabling users to focus together and share streaks without relying on a central database server.
Log in or sign up for Devpost to join the conversation.