Connor Shields · Full-Stack Engineer

Backend developer teaching myself the front half.

Years of server-side work, now building the whole thing. Everything on this site is live and actually used — by me, my wife, my mates, and one AI that trades shares without asking me first.

AI Trading Agent screenshot

AI Trading Agent

LIVE · AUTONOMOUS

I wanted to know whether an AI trading bot would just chase trends and always arrive late, or whether it could actually anticipate anything — so I built a panel of ten AI agents with different personalities (value investors, momentum chasers, contrarians) that read the news, argue about stocks, score each other's picks, and trade the surviving consensus on a paper account. Every trade comes with its full reasoning, so I can see exactly why it did something daft. Its finest hour: the week before last month's crash, it quietly sold all its tech and bought arms manufacturers. Then the market recovered, and it's back to losing to every index fund on Earth. (I wanted a mix of Claude and ChatGPT agents, but Anthropic's payment system won't take my money — so it's ChatGPT only for now.)

Under the bonnet: plain Java 17, no framework. Every weekday it runs a two-phase debate — ten agents each pitch fifteen stocks, then score each other's picks, and the weakest are eliminated round by round until fifteen survive. An AI reads the morning's news first and scores each sector, so “rates rise” counts against finance picks. The survivors get rebalanced onto an Alpaca paper account, and a snapshot lands in Redis — this page just reads the latest one.

  • ATR-based trailing stops on every position — the stop follows the price up, locking in gains as a stock climbs
  • Agents with a track record earn louder votes — elimination scoring is weighted by each agent's actual win rate
  • After-hours orders get back-filled with real execution prices next run, so the P&L never lies
  • Staggers agents 35 seconds apart to duck OpenAI's rate limits — a full debate takes six minutes instead of one
Biggest WinCSCO +40.1%

Picked by Ray

Biggest LossTSLA -22.8%

Picked by Marcus

Alpha vs S&P 500-10.3%
Portfolio Return+2.1%
Trades428
Sharpe Ratio0.28
Win Rate+44.6%
Open Positions14
View Live Dashboard
Route Selector screenshot
Route Selector icon

Route Selector

OPEN SOURCE · ~1,000 USERS

Route Selector — a Cities: Skylines 2 mod fixing an annoyance the game shipped with: there's no way to directly select a transit line to edit it. Once your network gets busy, five bus routes share the same road, and clicking it is a coin toss. This adds a panel listing every line in your city, grouped by type — pick one and it isolates it on the map, hiding everything else, so your next click edits exactly the line you meant. About 1,000 people use it, which is 1,000 more than I expected. Open source, on Paradox Mods.

  • C# for the game side, TypeScript/React for the panel — CS2's UI is genuinely a webpage running inside the engine
  • When a bug report said train lines listed in reverse order, I decompiled the vanilla game's own line list to check — turns out the base game has the same quirk, so it matches vanilla rather than “fixing” it
  • The modding toolchain silently wipes your UI bundle during publish, which shipped one broken version before I found it — publishing is now a carefully-ordered ritual documented so nobody repeats it
  • Getting the toolbar icon to render took four separate fixes — the game masks icons to silhouettes, renders SVGs at declared size, and caches assets forever. The changelog tells the whole saga
Active Users~1,000
PlatformParadox Mods
View on Paradox Mods
The Candidate screenshot

The Candidate

A browser-based political strategy game modelled on the UK electoral system — rise from local councillor to Prime Minister by reading documents, building a platform, and out-manoeuvring rival parties. Every promise is logged: an integrity tracker and a dossier system mean broken commitments and shifting positions become ammunition opponents can use against you.

  • Council elections playable in London, Manchester, Birmingham, Edinburgh and the North East
  • Document-reading and highlighting system that rewards cross-referencing sources for hidden signals
  • Three fully-specified AI opposition parties with deterministic, ideology-driven behaviour
In active development — council stage playablePlay The Candidate
Nutrient Tracker screenshot

Nutrient Tracker

MyFitnessPal wanted money for the detailed breakdowns, so I built my own. Photograph your food and it works out what's in it, then tracks 23 vitamins and minerals against your RDA and tells you what you're actually short on — not just calories. Exports to CSV if you ever want to leave, which is more than most apps offer.

  • Snap a photo and GPT-4o-mini identifies the food — entries process in an async queue so you can keep logging while it thinks
  • Tracks 23 micronutrients — vitamins A through K, the full B-complex, and minerals — not just the macros everyone else stops at
  • Daily insights sort everything into Well Covered, Nearly There, or Needs Attention, so you know what to fix at a glance
  • Drag and drop entries between meals, edit or delete with instant feedback — logging mistakes shouldn't be a chore to fix
  • Set goals based on your actual activity level, then watch the analytics — with a full micronutrient breakdown toggle when you want to nerd out
Open Nutrient Tracker

Built with Modern Technologies

The stack behind every feature on this site

Next.js 15·React Framework
TypeScript·Type Safety
PostgreSQL·Neon + Prisma
Tailwind CSS v4·Styling
NextAuth v5·Auth
OpenAI & Claude·AI
Upstash Redis·Caching
Vercel·Hosting & CI/CD