Plug a $15 OBD-II reader into your car. The app reads the fault codes, explains what's going on like a friend would, then walks you through fixing it. Entirely on your phone, in airplane mode, for free.
Those barriers stack hardest on the drivers with the fewest options: a teenager with a first used Corolla, a single parent an hour from the nearest dealer, a driver in a country where the median car is twenty years old. CAR·COPILOT is built for them.
Each screen answers one question — is it safe to drive? what's wrong? how do I fix it? what should I tell my mechanic? has it happened before? — and the answer is written for you, on your phone, while you wait.
A trip-readiness verdict and the day's issues, severity-coded. One look tells you whether to drive, fix, or call a tow.
A two-paragraph diagnosis, plus the evidence drawer of DTC codes and live readings behind the answer.
Torque, gap, and pressure values pin next to each step. Those numbers can't drift — they don't come from the AI.
Codes, evidence, plain English. Paste it into a text. The shop knows what they're looking at before you arrive.
"Two coil failures in seven months on a Corolla, that's a valve cover gasket leak." The kind of thing a friend who knows your car would notice.
The Home screen is the same shape every morning, color-coded so a single glance tells you what kind of day it's going to be. Green when everything's fine. Indigo when there's something worth looking at. Red when you shouldn't drive.
When the diagnosis says you can do it yourself, Gemma writes a step-by-step plan for your car — phase by phase, in plain English. The torque values, plug gaps, and pressures stay pinned exactly as the procedure says them, because those numbers don't come from the AI.
Tap one button and the app writes a message your mechanic can act on — the codes, the live readings, the plain-English summary. Paste it into a text. Most shops won't charge a diagnostic fee if you walk in with this.
The load-bearing engineering choice is what Gemma is not allowed to do.
A rules engine computes the answer from named live readings against DTC-specific thresholds. Gemma never sees these. The deterministic side is testable, auditable, and never wrong because of a tokenizer.
data/RulesEngine.ktdata/DTCTable.ktdata/RagStore.ktOnly then does Gemma narrate. Per-surface prompts, per-surface samplers, per-surface stateful extractors. Every surface has a canned-text fallback path. If LiteRT-LM throws, the user still sees text.
inference/GemmaService.ktinference/PromptBuilder.ktui/<Surface>State.kt
The big surprise: prefill, not decode, eats the clock. Every prompt token shaved is roughly as valuable as the entire speculative-decoding speed-up. Once BenchmarkInfo told us that, we rebuilt the prompt assembly around it.
ExperimentalFlags.enableSpeculativeDecoding only flips on when Capabilities(modelPath).hasSpeculativeDecodingSupport() returns true. Safe for E2B fallback.
PromptBuilder.splitProcedureIntoPhases ships intro plus one indexed phase per step instead of the full curated procedure. ~30s saved across a 6-step walkthrough.
Parallel coroutine at process start pays the system-prompt prefill while the user reads the Home screen. Cancels at the first emitted token. Issue page feels instant.
LiteRT-LM 0.11.0 allows one Conversation per Engine. convoMutex plus a 250 ms NATIVE_SETTLE_MS floor between close and create.
Gemma 4 E4B inserts decimals into simple integer+unit patterns ("10mm" → "10.10mm"). Canonical values pin beside the streamed body. Drift becomes visible, not hidden.
WalkthroughPlanState.balanceJsonTail walks the buffer with string-aware brace tracking and closes unclosed structures at the tail. Pre-fix, this was silently firing 100% of the time.
Measured live via BenchmarkInfo on the GPU backend with Gemma 4 E4B. The pattern is consistent across surfaces — and it's why prefill, not decode, is the thing we optimize.
| Surface | Decode TPS | Prefill tokens | TTFT |
|---|---|---|---|
| Synthesis |
6.15 – 7.05
|
1,449 | 10.2s |
| Mechanic draft |
8.08
|
~1,200 | ~7s |
| Walkthrough plan |
9.02 – 11.02
|
2,247 | 15.9s |
| Walkthrough step |
6.84 – 10.22
|
~2,100 | ~11.7s |
Built for the Gemma 4 Good Hackathon. Open source under Apache 2.0. One APK, one model file. After you install it, the app works anywhere, for anyone — even after the hackathon's long over.