Actum.
Share it. Find it. Do something with it. All on your phone.
Actum is an offline Android app. Whatever you share into it (text, screenshots, pictures, PDFs) is kept, read by on-device OCR, and searchable by meaning and by words. A request you type, say, or that sits inside a saved item becomes a ready action card. Nothing happens until you tap to confirm.
Code on GitHub Watch the demoThis website is documentation only. The Android app has no INTERNET permission and does not talk to any server, this site included.
Demo
Watch the demo on a real phone (opens YouTube).
How it works
- Words arrive: typed, spoken through Android's on-device recognizer, or taken from a saved item's OCR text.
- Plain, direct commands are read by deterministic rules. A rule is right or silent, never a guess.
- Everything else is read by Gemma 4 E2B, running on the phone's CPU through LiteRT-LM. It returns strict JSON, streamed card by card.
- Kotlin checks every field against your words and resolves dates, times, amounts and phone numbers. A reply not grounded in what you said is dropped.
- You see one card per action, edit any field, and confirm. Only then does it run.
What it can do
- EVENTPrefilled calendar entry
- ALARMClock app alarm
- EXPENSERow in Actum's ledger
- CONTACTPrefilled new contact
- TODOItems on a list
- DIARYSealed, encrypted entry
- EXPLAINRestates a document
- UNSUPPORTEDSays it can't, does nothing
English first. Direct commands also work in everyday slang ("tmrw", "2 mins later") and in Hinglish and Benglish written in Roman letters.
Evidence
A frozen, synthetic held-out set of 100 sentences across 21 kinds (negations, injections, OCR receipts, Hinglish, Benglish, typos...), never used for tuning. Method and raw results.
| Path | Correct | Answered | Right when answered | Median |
|---|---|---|---|---|
| Rules alone | 34 / 100 | 21 | 21 / 21 | < 1 ms |
| Gemma 4 E2B alone | 69 / 100 | 95 | 67 / 95 | 4.9 s |
| Hybrid (as shipped) | 72 / 100 | 95 | 70 / 95 | 4.4 s |
It also found real faults: prompt-injection text and negations ("don't set an alarm") can still produce cards. They never run without your tap, and they are listed openly in the results.
"Correct" counts silence as right only where no action should happen. Gemma rows: Nothing A001T, Dimensity 7300, 8 GB, CPU. Earlier figures on a 30-sentence development set (used while fixing faults, so not held out) are in the repository.
Privacy
No network permission, no analytics, no crash uploader, no ads. Models are copied onto the phone by you, never downloaded by the app. Voice uses only Android's on-device recognizer; the words are kept, never the audio. The diary is encrypted on the phone; other local records are not.
Limits
Gemma is evaluated in English; Hinglish and Benglish have only a small test slice. OCR of Bengali and Devanagari script is limited. Speed depends on the phone. You need to sideload a 2.6 GB model.
Get started
Build with Android Studio, install, then copy gemma-4-E2B-it.litertlm into Android/data/com.actum.app/files/. Full steps in the README.