Inspiration
When a parent comes home from hospital, the family's care runs on a group chat and a shoebox of paper. The daughter who handles it photographs the discharge letter, retypes the new medicine times for the helper, answers her brother's "what did the doctor change?" from memory, and decides, message by message, who should see the insurance letter. One in four adults is a caregiver; Singapore became super-aged this year. The hard part isn't storing documents; it's getting the right fact to the right person, and only to them.
What it does
Kin lives in the family's Telegram group and in each member's DM.
- Private intake. The caregiver photographs a document in DM. Kin reads it, checks the draft against what it already knows (a medicine name that matches no record, a time that clashes with another letter) and asks one question at a time. Nothing is filed or scheduled until she confirms.
- The schedule follows the documents. Confirmed medicines become reminders on the helper's phone at the household's times. A replaced dose stops its old reminders; a course ends on its date; tomorrow's appointment is a reminder the evening before.
- One update for everyone. After she approves the exact text, the group gets a summary in English and Mandarin, holding only what every member may see.
- Recall with sources. "Kin, what did Dr Tan change at the last visit?" gets the answer with the doctor's own words quoted from the memo, and only from records that person may see.
- Sharing on her terms. A question about the insurance claim gets a neutral reply in the group. She gets a private request with buttons: share it, just this once, or not. The answer goes only to the asker, as the approved excerpt, never the original.
/who_sawshows who was shown what. - A reusable skill. "Every Monday at 8, remind Siti to refill the pill organiser and tell Mei Ling when it's done" runs from Kin's scheduler and survives restarts.
- Public rules, no private data. Questions about schemes such as the Home Caregiving Grant are looked up live on government sites through Tavily, with the link, without deciding eligibility and without sending a single family detail.
Kin organises; it never diagnoses, doses or triages.
How we built it
Hermes Agent is the runtime and Telegram gateway; Nemotron 3 Super on Nebius Token Factory drives every conversation and writes the Mandarin posts; MiniCPM-V 4.5, also on Token Factory, reads the photos (Nemotron Nano Omni is dedicated-only). A small Hermes plugin passes the verified sender and chat to Kin's tools, routes photos, commands and button taps to Kin before any model runs, and sends every final reply past Kin's check. The kin service holds the records in SQLite and enforces a role × category policy with field projections before anything reaches the model, then again on the way out: a reply that contains something that chat may not see is withheld, and Kin itself attaches the approved excerpts and sources. Everything runs in one Docker Compose project with no published ports.
Challenges we ran into
- Hermes gives MCP servers no caller identity, and Kin's every decision depends on who is asking, so we wrote a plugin that takes identity from the gateway session instead of tool arguments.
- On low-resolution photos of printed pages, the vision model read "Glibpizide" for "Glipizide". Kin now never trusts a medicine name that matches no record: it asks.
- Super translated medicine names (once into a different drug) and once claimed to have posted a message it had no way to post. Names are now masked during translation, and anything that has to be exact (requests for originals, old button taps) gets a fixed reply instead of a model's.
- One judge has to play both sides of a sharing request, so the demo lets one account hold every family seat, with messages labelled by recipient and a fresh conversation on every role switch.
Accomplishments that we're proud of
- Validated live with two phones: a discharge summary photographed on paper became a confirmed schedule, the old reminders stopped, the helper's phone got the new ones, and they kept their place across a full restart.
- Boundaries in code, not prompts: retrieval, field projection, the reply check and the share flow are tested with forged identities, spoofed chats and a member asking for a mixed original.
- Running a family costs well under a dollar a month at list prices.
What we learned
The model is best at the conversation and worst at being exact. Privacy, dosing times and claims about what was done belong in deterministic code around it; the model chooses tools and words.
What's next
Visit debriefs from after-visit summaries, teach-by-chat skills, a weekly digest per role, and OpenShell isolation for the gateway.
Log in or sign up for Devpost to join the conversation.