Projects.

Things I've built, mostly because a problem annoyed me enough.

Ad analytics & automation

Adwise

Advertising analytics, automation and optimization for Meta Ads and Google Ads. A Go API and a background worker pull campaigns and metrics every hour, with organisations, role-based access and an audit log built in from the start.

  • Go
  • PostgreSQL
  • Redis
  • sqlc
  • Next.js
  • Docker

site ↗

Agent workspace

AW

A local-first runtime around AI coding agents. Move between Claude Code, Codex and local models without losing project state, memory or decisions, because the project owns the knowledge, not the chat session. Ships as a single binary.

  • TypeScript
  • Bun
  • SQLite
  • CLI
  • Git
APPSwebNext.jssiteNext.jsapiNestJSmcpMCP serverPACKAGESfinance-coreno I/OimportsCSV·XLSX·PDFaiagent loopfinance-toolsshared toolsdatabaseTypeORMPostgreSQLpnpm + turborepo · your own db

Personal finance OS

Arvo

Turns bank, card and broker statements into one exact ledger that you, and your AI over MCP, can explore. The maths is deterministic; AI only explains it. Your data stays in your own Postgres.

  • TypeScript
  • Next.js
  • NestJS
  • PostgreSQL
  • MCP

live ↗

Postgres performance

QueryPilot

Tells you why Postgres got slow at 14:32: it spots plan flips, lock pile-ups and missing indexes, suggests the fix, then checks it worked. Self-hosted and read-only.

  • PostgreSQL
  • pg_stat_statements
  • EXPLAIN
  • Docker

site ↗

Post-quantum crypto

PHOENIX

A lattice-based encryption scheme inspired by NTRU. Polynomial ring arithmetic, key generation and encrypt/decrypt built from first principles, then profiled with cProfile and hyperfine.

  • Python
  • SciPy
  • Abstract algebra
  • cProfile
  • hyperfine

repo ↗demo ↗

Marketplace

Harvest Hive

A bidding marketplace where farmers sell crops to vendors at a fair market price. Next.js monorepo in TypeScript, MongoDB for data, S3 for media, deployed on Vercel.

  • TypeScript
  • Next.js
  • MongoDB
  • AWS S3
  • Vercel

repo ↗live ↗

News aggregator

Newspulse

Aggregates trending headlines across categories using the GNews API, with a responsive frontend and CI/CD to Vercel.

  • Node.js
  • React
  • REST
  • Vercel

repo ↗live ↗

NLP

POS Tagger

Part-of-speech tagging with a Decision Tree classifier trained on a tagged NLTK corpus, labelling each word in a sentence with its grammatical role.

  • Python
  • NLTK
  • scikit-learn
  • NLP

repo ↗