I build AI assistants that do real work: Claude agents, RAG over your own data, automation with n8n and Telegram. I learn in public and show what broke and how I fixed it.
Claude API, tool use, prompt caching, pgvector, self-hosted embeddings, hybrid search
n8n: AI Agent, sub-workflows, schedules, Telegram Bot API 10.x (rich messages, drafts, Mini Apps)
Linux, Docker, Coolify, Traefik, Postgres 17, monitoring and alerts without heavy dependencies
One feature at a time, measure before optimising, honest limitations in the docs, audit before shipping
Notes, expenses and budgets, tasks and reminders, a morning digest, memory about the owner, server health. One agent, 23 tools, self-hosted embeddings, monitoring with alerts and a Mini App with charts.
Demo with made-up data: replies are typed out exactly like in the bot.
Claude signs its thinking blocks, while n8n re-evaluated the timestamp in the prompt on every step — the signature stopped matching and a fallback model silently answered. Fix: the time is frozen once per run and reasoning is stripped by a database trigger.
Telegram rich markup can embed media by URL — a hidden instruction could exfiltrate data with zero clicks. Fix: my own gateway to the Bot API with a method allow-list and a markup filter.
It silently replaced the main model and got the delete tools. Removed after a multi-agent audit; the bot now honestly says "no answer".
If the orchestrator dies, the alert must still arrive. A systemd collector writes to the Bot API directly: hysteresis, "resolved" messages, quiet nights.