A personal AI agent with a face, and the face grows itself: new skills declare their own dashboard tabs.
/ About
It runs briefings, macro tracking, shopping lists, but everything lived in Telegram, and chat is a terrible place to read state: yesterday's list is forty messages up. So I gave it a web face. Commands arrive by chat; state lives on a screen built for reading.
What it explores
Chat writes, dashboard reads: a Telegram command lands in the DB; the dashboard renders from the same source of truth, with direct CRUD on the web side.
Deterministic core: skills compute in plain code. The LLM parses intent, it never does the math.
Skills declare their own UI: each skill maps onto a fixed set of panel types; its tab renders from that definition. The LLM parses intent, it designs nothing.
Next: chat inside the dashboard, one surface for command and state.