NannaDesk: An AI Assistant for My Dad That's Not Allowed to Guess
Описание и применение
NannaDesk — локальный AI‑ассистент, который помогает отдалённому пользователю управлять лекарствами, разбирать медицинские отчёты и отправлять письма, не делая предположений и сохраняя данные офлайн.
Задача
A government employee in Telangana, India needed a personal AI assistant that could remember medication, explain blood reports and government paperwork, follow up on office emails, and perform small administrative tasks without guessing or making unverified claims.
Результат
NannaDesk delivers a safe, deterministic AI assistant that respects user privacy, operates offline, and avoids uncertain predictions by delegating all state changes to deterministic code.
Рабочий процесс
- 1. User speaks or types a query to the local LLM (Qwen3.5‑0.8B via llama.cpp).
- 2. Whisper.cpp transcribes voice input, handling mixed Telugu and English.
- 3. A keyword/regex router deterministically classifies the intent (medication confirmation, report explanation, email draft, government lookup).
- 4. For medication: the SQLite-backed state machine updates only after explicit user confirmation, sending macOS notifications via APScheduler.
- 5. For email: the LLM drafts the email; the user reviews and taps a confirm button to trigger an HTTP send endpoint.
- 6. For government lookup: Playwright scripts a headless browser to submit a form on goir.telangana.gov.in and parse the results table.
- 7. ElevenLabs TTS optionally reads the assistant’s response back to the user.
- 8. All data (medication history, reports, emails) remains in a local SQLite file, never uploaded.
- 9. The system informs the user when a network call fails (e.g., email send or government lookup).
Доказательства
NannaDesk is a personal AI assistant built for one real person: my dad.
The LLM decides how to help. Deterministic software decides what actually happened.
It runs on his laptop. A small open-weight model (Qwen3.5-0.8B) handles the conversation.
A SQLite-backed state machine for medication and meal confirmations — SCHEDULED → REMINDER_SENT → TAKEN, with explicit SNOOZED, NOT_CONFIRMED, and SKIPPED states.
A keyword/regex router instead of LLM tool-calling, on purpose.
Playwright to fill in that form and read the results table directly.
It runs on a laptop with no internet.
All of it works with Wi‑Fi off, because I built and tested it that way deliberately.
- Дата записи: 2026-10-03T14:55:46.124Z