Everything here runs on one small Hetzner VPS I administer myself: Docker Compose, Caddy, n8n, Postgres, plus a Mission Control page that aggregates traffic across all of it. The status tags are honest. Live means you can use it; Building means it half-works.
The Lab is my training ground: I learn tools here on my own time, so the team I work in gets them on day one.
Nova Hub
LIVE
A study site for my Nova MiM group: mock exams, theory, formula sheets, and a library that files itself.
It started as an Investments mock exam I built for the midterm. Now it is one site with a lab per course. Statistical Analysis got 9 Moodle mocks rebuilt with verified answer keys and worked solutions, a 70-question quiz bank and an 11-chapter theory reader. Site
The Library lets anyone in the group upload a file: an n8n job renames it, sorts it by course, week and type, and files it in Google Drive. Personal documents and duplicates are held back for me to check. It holds 74 documents across 6 courses. catalogue.json
Fixed in October: every Moodle printout carries "moodle@NovaSBE" in its name, and the filer read that as Statistics. Course words now only count when nobody picked a course, and old files re-file themselves when a rule changes: 10 of 74 moved on the first run. catalogue.json
Made for my study group, so there is no public link. It carries course material, so search engines are kept out. Everyone in the group should only use material they're allowed to share, and check the course rules before using AI for graded work. Designed and run by me, built with Claude.
Vanilla JS · n8n · Google Drive API · Caddy · Playwright · Hetzner
Course brain
BUILDING
Course labs that write themselves from the Library while the course runs.
One engine renders any course from a single content file: theory chapters, a formula or keyword sheet, an exam toolkit and practice quizzes, each answer linked to the slide it came from.
The first lab is Strategy: 10 chapters, 64 practice questions, and a keyword sheet that prints on exactly two A4 pages, the cheat sheet the exam allows. Print test
Next: a Sunday job that checks whether every slide of the week is in the Library, then drafts additions for me to approve. It never publishes answers to graded work before the deadline.
Python · Claude API · n8n · JSON · Playwright
LIVE
Balderdash
Lyric videos for a whole roster, made in production instead of in editing. Upload a track; the engine transcribes it, syncs the lyrics word by word and renders vertical 9:16 videos with mood-matched visuals, ready for TikTok, Reels and Shorts. Built for labels, managers and distributors.
Built with Alex Bonzano. I'll call myself founder once the first invoices clear.
balderdash.it ↗ Live
Python · Flask · Supabase · n8n · FFmpeg · Hetzner
The Ledger
LIVE
My habit tracker, turned into a dataset. A sheet in, a nightly n8n job at 23:55, a JSON out, a static dashboard on top. Untracked days are flagged and excluded, never zero-filled.
Public slice below ↓
Google Sheets · Apps Script · n8n · Caddy
Job Radar
RUNNING
The system I'm using to find my next role. Every two hours it polls the public job boards of 117 companies I chose, through 24 adapters (Greenhouse, Lever, Ashby, Workday and twenty more), keeps the early-career roles, scores each one against my profile with an LLM and pings me on Telegram.
Recruiter reading this? Your company may already be on the list. The code is on GitHub ↗ Live
Python · Postgres 16 · Docker · Gemini
Portfolio P&L engine
BUILDING
Rebuilding my investment tracker with Fede, from a Python script into a React + Supabase app: Revolut and Crypto.com parsers, live prices through an edge function, realized vs unrealized P&L.
Fixed in November: my BTC average cost came out at more than double the real figure. I had blamed staking rewards. The cause was simpler: an exchange is one row with two legs, and the parser dropped the coin received. Work in progress on GitHub ↗ Live
Python · React (Lovable) · Supabase · Edge Functions
Catalyst Core
RUNNING
An n8n and Gemini workflow that writes me an executive briefing every morning: markets, crypto, the FT, and my own task list.
n8n · Gemini · VPS
Revolut reconciliation
TOOL
A Python pipeline that pairs transfers, categorises spending with a 16-rule regex engine and outputs a pivot-ready workbook. Version 1.2 fixed a greedy-pairing bug that was deleting real transfers.
Python · pandas · Colab