← Charles Tay Unfinished ·

Claudia, a Telegram bot with a memory

Claudia chats with my friends in a Telegram group and remembers them in a wiki on my laptop. It works when I start it. The part I haven’t built is the sealed box to run it safely.

how it works

  • 1 · a message

    A friend posts in the group. Claudia replies only if the message names her, tags her or ends with a question mark. In a private chat she answers everything.

  • 2 · her memory

    The bot reads the wiki: the sender’s page, pages for anyone named, and topics that match the message.

  • 3 · the reply

    That memory and the last 30 messages go to Claude, which writes a short, casual reply. Singlish where it fits.

  • 4 · looking it up

    If the wiki has nothing on a factual question, a smaller Claude model searches the web and files a summary as a new topic page.

  • 5 · writing back

    She adds a page for each new person in the group, notes from commands, and a log of every third reply.

  • 6 · commands

    Friends steer her memory with /save, /who, /note, /recall, /research, /remind, /forget and /correct.

the tools, and what each one did

the chat
Telegram, through the Telegraf library
the replies
Claude Sonnet 4.6
the research
Claude Haiku 4.5 with web search
the memory
an Obsidian vault of plain Markdown files
the bot
Node.js on my MacBook, about 1,000 lines over two files
the launcher
two macOS scripts that check the vault and permissions before starting

not finished yet

  • sealed box

    Run the bot in a container on the laptop, limited to one wiki folder and to people I approve. Right now it runs straight on the Mac.

  • always on

    She only answers while the laptop is awake and the bot is running.

  • forgetting

    /forget only flags a page. I still clean it up by hand.