A private, 100% on-device assistant that reads your messages and turns them into action items —
without anything leaving your phone.
🔒 Understanding runs on-device by default. A cloud model is strictly opt-in, data is encrypted at rest (SQLCipher), the app sits behind a biometric lock, and every byte that leaves the phone is auditable in Settings → Data Egress — which reads "No data has left this device" out of the box.
Your phone already knows what you need to do — it's buried in your SMS, notifications, call log, email, recordings, and screenshots. TaskMind watches the sources you choose, uses an on-device LLM to pull out the real action items, and shows each one as a card you approve, edit, or reject. Nothing is saved or scheduled until you say so.
It's built on one stubborn principle: your data stays on your phone. The whole understanding pipeline runs locally; the cloud is an explicit, logged opt-in you never have to touch.
| 📥 Capture | Collected live, on a background scan, or on demand — a + quick-capture sheet (type or speak), a share-sheet target (text and images), a Quick Settings tile, a home-screen widget, and manual entry. Screenshots are read with on-device OCR; new voice/call recordings are transcribed the moment they land. |
| ✅ Review | Each suggestion is a concise Inbox card: approve, edit, reject, or snooze; swipe to triage; undo the last action; filter by kind or source. Approving a dated item schedules a reminder + calendar event (prompting for a time if none was found). Rejecting a sender repeatedly down-ranks its future suggestions. |
| 📞 Act | One tap to Call — resolving a named contact ("call Amma") to a number via your Contacts — or Get directions to a place named in the message. Missed calls (cellular and WhatsApp/Telegram) become "Call back" suggestions. Both actions also live on the widget and the review notification. |
| 🗂️ Keep | Approved items live in Notes — Active/Completed split, completion checkboxes, tickable checklists, tappable deep links (phone/URL/email/address), kind filters, and full-text search. |
| ⏰ Schedule | Reminders can recur (daily/weekly/monthly — pulled from "every Monday" or set by hand) or fire by location (a geofence when you arrive at a saved place). |
| Guarantee | How |
|---|---|
| On-device understanding | The extraction LLM (MediaPipe Gemma) runs locally; the cloud model (Gemini) is opt-in only. |
| Encrypted at rest | The database is SQLCipher (AES-256); secrets live in EncryptedSharedPreferences. |
| Locked | Biometric lock on launch and on every return to the app. |
| Auditable | Every network egress is logged, metadata-only, in Data Egress — content never is. |
| Portable | Move to a new phone with an encrypted, passphrase-sealed backup (AES-256-GCM, PBKDF2). |
Every source is off by default and asks for its own permission when you turn it on.
| 💬 SMS | 🔔 Notifications | ☎️ Call log |
| 👥 Contacts (for the Call button) | 📅 Calendar | 📊 App-usage digest |
| 🎙️ Voice / call recordings (Vosk) | 🖼️ Screenshots — OCR (Tesseract) | 📧 Gmail (OAuth, read-only) |
From your phone (over-the-air): open Releases,
grab the latest taskmind-debug.apk, and open it to install (allow "install unknown apps"). A rolling
debug-latest pre-release is kept current on every push to main.
Build from source:
# Build + install to a connected device in one step
.\gradlew.bat :apps:taskmind:installDebug
# …or build the APK and install it yourself
.\gradlew.bat :apps:taskmind:assembleDebug
adb install -r apps\taskmind\build\outputs\apk\debug\taskmind-debug.apkFull setup — permissions, the on-device model files, and the optional MAPS_API_KEY — is in the
TaskMind README.
Kotlin · Jetpack Compose (Material 3) · Hilt · Room + SQLCipher · WorkManager · DataStore · MediaPipe Gemma (on-device LLM) · Vosk (speech) · Tesseract (OCR) · Gemini 2.5 Flash (opt-in cloud) · biometric + geofencing + calendar.
- Automated tests — DAO & Room migrations, the extraction pipeline, approval + rejection learning,
every ViewModel, receivers & workers, and JVM/Robolectric Compose UI tests for the redesigned
screens. Unit tests +
assembleDebugrun on every PR. - Extraction eval —
tools/prompt_eval/replays a 166-case, web-grounded golden set through the live prompt and reports a per-type confusion matrix, recall/precision, and field accuracy toEVAL_REPORT.md. Hardening the prompt against notification noise took cloud-model accuracy from 85% → 98% and noise rejection from 82% → 99%. - Manual QA — a 27-suite / 325-case functional test plan backs each release.
- Execute the full 325-case manual functional pass (device QA) and log defects.
- Lift on-device (1B) model quality toward the cloud numbers.
- Widen the eval's non-
nonecoverage and add a fast smoke subset.
A monorepo — each app is a self-contained Gradle module under apps/; shared code (when a second app
needs it) goes under core/.
Android_apps/
├─ apps/taskmind/ # TaskMind — the app (see its README)
├─ tools/prompt_eval/ # extraction-accuracy harness + golden set
├─ gradle/libs.versions.toml # one version catalog for every module
└─ core/ # shared library modules, added on demand
| Workflow | Runs on | Trigger | What it does |
|---|---|---|---|
Android CI (android.yml) |
ubuntu-latest |
push / PR to main |
unit tests + assembleDebug, uploads the APK artifact |
Publish debug APK (release-apk.yml) |
ubuntu-latest |
push to main + manual |
builds and publishes to the rolling debug-latest pre-release for over-the-air install |
Install to phone (install-to-phone.yml) |
self-hosted | manual | installDebug over adb to a phone plugged into that runner |
main is protected — changes land via PR. Secrets (keystores, API keys) and on-device model files
(*.task / *.litertlm) are git-ignored and never committed.
© 2026 SMK1705. All Rights Reserved. This software is published for viewing and reference only; no
use, copying, modification, or distribution is permitted without prior written permission. See
LICENSE.