Finnbot: An AI Financial Advisor for Personalized Portfolio Digests and Alerts
I designed Finnbot as a multi-user investment tool that does the daily research for each person it serves. Twice every trading day it sends each user a personalized HTML email digest: it pulls their live holdings through the SnapTrade brokerage API, has Claude review each position against a pre-defined rubric programmatically (based on trend, RSI, volatility, earnings dates, news), and labels it ‘Hold’, ‘Buy More’, ‘Sell for Profit’, ‘Risky’, or ‘Sell Urgently’. Alongside each portfolio, it screens about 7,000 US listings through Yahoo Finance, Finnhub, and Twelve Data down to a few dozen candidates, has an LLM score them on deterministic rubrics, and picks long-term and swing-trade recommendations. Between digests, an hourly Telegram watchdog re-checks only the stocks that have moved, and a price tripwire catches sudden swings. New users are onboarded from a sign-up form, and every setting can be tuned per user or from a shared spreadsheet, so the system is built to scale beyond its first users.
Most of the engineering went into making it dependable and affordable enough to run every day. It runs unattended on a VM, with scheduled cron jobs, healthcheck monitoring, a maintenance mode for safe updates, nightly backups, and more than 400 automated tests. The digest is a hand-built HTML and AMP email, rendered from Jinja templates, designed to read well on a phone in dark or light mode and to fit under Gmail’s 102 KB clipping limit by dropping content in a set priority order. I designed the overall architecture and pipeline framework in Python, and used Claude Code to implement individual components within that design.