Beckett is my personal AI engineer. It runs on a $5/mo VPS, answers my Telegram messages (text and voice), picks up the phone when I call (or calls me when something matters), and remembers every conversation we've ever had. It also ships code. Last month I asked it on a phone call to change my landing page copy. It pushed the commit before I hung up. The stack - Brain: Claude (Opus 4.7, with Sonnet fallback). Runs as the Claude Code CLI on the VPS. - Voice: Vapi for phone calls (custom assistant, ElevenLabs voice). Telegram bot for text and voice memos. - Memory: Supabase Postgres + pgvector. Hybrid search (dense embeddings + BM25 + RRF + cross-encoder reranker). Three chunking strategies routed by data type: Q/A pairs for conversations, agentic chunking for sessions, single-entry for facts. - Today: 476 chunks across 51 sessions, growing every day. - All-in cost: ~$2-5/month. Why this stack Most personal AI projects fail at memory. They use one embedding strategy across everything and pretend that's good enough. I tried that first and watched Beckett confidently "remember" things that never happened. The fix wasn't a better embedding model. It was three different chunking strategies routed by what type of data we're storing, and a reranker on top of hybrid search to catch the cases where dense embeddings get fooled by surface similarity. Most recent upgrade: adding a cross-encoder reranker on top of hybrid search. Cost: +200ms per query. Gain: +3.6% MRR, +7.3% NDCG@10 on a labeled benchmark built from real conversations. Worth it. What's next The current build is an idea vetting board: three agents (Research, IP, Critic) that run in parallel when I float a new project idea, and feed Beckett a synthesis before I commit time to anything. The whole point is making me less likely to start things that won't ship. After that: voice mode improvements and the multi-agent orchestration that lets Beckett decide what's worth doing on its own. Your turn