I built and ran the software a stock-trading desk runs on, and I traded on that desk. That means a live screener, alerts, a trade journal and a desktop client, used by about 20 traders every day, on a self-hosted server that I deployed, backed up and fixed when it broke.
Outside the desk I build LLM tools where the model structures text and deterministic code makes the decisions, and I write my kill criteria down before I look at results. Each page below covers the problem, the constraints, the architecture and dated outcomes, with incidents included.
Live screener, alerts, broker-CSV trade journal and an Electron client for a stock-trading desk.
The LLM structures Latvian tender text. Deterministic code decides compliance, criterion by criterion.
13 years of Latvian procurement awards tested against kill criteria written in advance. Verdict: stop.
Telegram, Whisper and a vision model feed LLM passes that write notes AI tools read through MCP.
Probes every 30 s with up to five signals per service. The analytics count active screen time only.
One login with per-app entitlements. Caddy forward_auth gates each tool, and every tool runs as its own service.
A Go terminal UI that flags NEW / SPIKE / PUMP / SETUP on the top-gainers list in real time.
An EN/LV site plus an admin CMS for non-technical editors, with one runtime dependency.
Sorts residents' messages in Latvian and Russian by category, urgency and route, and drafts a reply in the sender's language. 120 synthetic messages, a blind label audit, three models against a keyword baseline. Every model escalated all 24 emergencies; the keyword baseline caught 15.
160 items on declension, formal register, legal reading and agreement. Scoring rules and hypotheses were committed before any model ran; every raw answer is published. Declension is the only task that separates the models.
Voice note to vault note, step by step: Telegram, transcription, extraction, a generated markdown note. Re-enacted on synthetic data, with the design trade-offs and an honest status.