Agent Army

Production
PythonTypeScriptNode.jsTelegram APIClaude APISQLiteRailwayRaspberry Pi

One card, many agents. Agent Army is the collection of bots I build, deploy, and keep on duty — each with a single job, its own infrastructure, and a personality earned in a group chat.

Why an army

Bots are the purest form of turning an idea into a working product: a chat interface, a job to do, and no UI to build. Every recruit below runs 24/7 — some in the cloud on Railway, some on a Raspberry Pi in my house — and each one taught me something different about building agents people actually use every day.

Sam Hinkie Bot

Production

Digital commissioner and information hub for a fantasy basketball dynasty league

Fantasy League Bot welcome screen
Bot welcome screen showing available commands

What it does

Named after the legendary NBA executive known for his analytics-driven approach, @Sam_Hinkie_bot brings automation and real-time information to league management — and delivers daily Hinkie-inspired wisdom to keep the league faithful to the Process.

  • Real-time league standings and statistics on command
  • Automated transaction notifications and updates
  • Custom commands for league rules and information
  • Interactive responses to player mentions and queries
  • Scheduled reminders for important league deadlines

Built with Python and deployed on Railway for 24/7 uptime. Integrates with Telegram's Bot API for message handling, uses webhooks for real-time updates, and connects to the league database so every answer is live data.

A.I.bert E.

Production

A self-hosted, AI-native personal health data lake operated entirely through a text message

What it does

Most health apps make you do the work, then hand your most sensitive data to a company. A.I.bert is the opposite: message it in plain English — "wore red light glasses before bed," "45 min shoulder workout at gym," "took melatonin and collagen" — and it turns the mess of daily life into clean, structured, timestamped health data on hardware I own. Send a selfie and computer vision tracks facial changes over time; send a lab PDF and it extracts every biomarker with reference ranges; a smart ring feeds sleep and steps automatically.

How it works

One process runs three subsystems over a single SQLite database:

  • Ingest — a Telegram bot handles text, photos, and documents: an LLM parses free text into structured entries, a vision model scores selfies for appearance trends, and a document model turns bloodwork into a biomarker time-series
  • Wearables — automatic ingestion from an Oura ring (OAuth cloud pull) and a COLMi R02 read directly over Bluetooth — no vendor app, no cloud
  • Analysis — an on-demand correlation engine (Claude Opus with adaptive thinking) builds timelines, hunts multi-day triggers, and proposes elimination tests — always citing dates and separating correlation from causation

The core architectural rule: capture everything raw before processing. Every inbound message is stored verbatim first; the structured layer is derived and always rebuildable. TypeScript (strict), Node.js, SQLite + Drizzle ORM, self-hosted on a Raspberry Pi. Built on one principle: capture everything, lose nothing, and never give it away.

ITYSL Bot

Production

A Telegram inline meme bot for I Think You Should Leave clips — type a quote in any chat, tap the match, posted instantly

ITYSL Bot inline search in Telegram
Type @itysl_bot plus a quote — the inline grid surfaces matching clips, tap to post

Why I built it

@gif has been part of Telegram for almost a decade. Then Google shut down Tenor's search API, which suffocated ~90% of the GIFs Telegram surfaced and quietly wrecked an experience millions of people used every day. Someone needed to step up. "Yeah, I'll do it." So I rebuilt the chat feature myself — stocked with the best meme kit from the show I Think You Should Leave.

What it does

Type @itysl_bot plus a quote in any chat — group or DM, without adding the bot — and a grid of matching clips pops up. Tap one and it posts instantly as you. It fills the hole left when Telegram's GIF search stopped surfacing niche sketch content.

  • Inline search everywhere — @itysl_bot sloppy steaks → animated thumbnail grid → tap → posted. Works in any chat because inline bots ride on Telegram itself; the bot never joins your groups
  • Fuzzy, ranked matching — queries match against each clip's quotes (weighted highest, it's what people actually type), then title, then tags. Full phrases ("who did this") and loose descriptive words ("baby award rigged") both land the right clip
  • Zero-friction library growth — DM the bot a GIF or video with a caption and it's saved and searchable in seconds; no redeploys, no file editing
  • Private by design — only the admin's account (locked by Telegram user id) can DM it or add clips; everyone else can only use inline search

How it works

  • Telegram hosts all media — each clip is uploaded once and the bot stores only the returned file_id in a JSON library (~128 clips). Results are served as cached inline results: no CDN, no hosting bill, effectively instant
  • In-memory fuzzy index — on boot (and on /reload) the clip library is validated with Zod and indexed with Fuse.js. Inline queries hit only this precomputed index — no database, no LLM, nothing async in the hot path, because inline results must render as you type
  • Two media kinds — mpeg4gif (silent, looping, shows in the animated mosaic on all platforms) and video (keeps sound, previews on mobile; Telegram Desktop renders titled video results as a plain list — an API limitation)
  • Self-healing long-polling — the bot polls Telegram outbound-only (runs behind any home router: no public URL, no webhook), and if polling is ever killed it logs and reconnects after 5s instead of dying silently

TypeScript on Node 20+, deliberately small: grammY for Telegram, Fuse.js for weighted fuzzy search, Zod for a schema-checked clip library, and a flat JSON file — git is the database. Supporting ffmpeg scripts handle poster frames, thumbnails, and batch backfills. The design bias throughout: no infrastructure. One process, one JSON file, Telegram as the CDN — the whole thing runs on a Raspberry Pi.

Want something like this built?

I take on client work — sites, apps, AI systems, and devices. Tell me what you're imagining and I'll tell you how I'd build it.

Work with me →