Work that shipped
What I built, for whom, and on what terms. Every client engagement ran as a B2B contract through Corco Labs; the label under each title says what my role actually was.
FinTech · May 2024 - March 2026
MarketAlerts (wound down)
AI-powered investment intelligence
Founding engineer, later CTO, on a B2B contract
I was the founding engineer for ZeroSigma Capital, the company behind MarketAlerts, from taking over the agency build to the wind-down.
MarketAlerts turned financial news, filings, earnings transcripts and market data into typed signals that investors could follow through watchlists, screeners and alerts. An agency had built the first version. I joined as founding engineer to take it over and make it hold up in production, and later became its hands-on CTO.
That covered the Next.js web app, the iOS and Android apps, the Express API serving all of them, and the alerting engine: a BullMQ worker across 20+ background queues handling evaluation, combination logic and delivery by email, Telegram and push, with idempotent handling so a repeated upstream signal never fanned out twice.
On the data side, a Python classification system used hierarchical GPT models to sort financial signals such as M&A, guidance changes and auditor risks, and I moved the infrastructure from Docker Swarm on AWS to GCP Cloud Run. The company wound down in March 2026 when its capital ran out.
The challenge
Financial data is noisy and time-sensitive. The product had to separate signals from noise quickly enough to act on and accurately enough to trust, on a codebase inherited from an agency.
My approach
I audited the inherited code first, then decided what to keep and what to rebuild: the Express API stayed, the React front end was rebuilt in Next.js alongside the old one, and alert delivery moved onto queues after an early spike of duplicate emails.
Tech Stack
EdTech · November 2015 - December 2023
ClassCharts
From hundreds of thousands to more than ten million users
B2B contractor in Edukey's team, 2015-2023
A full-time B2B contract with Edukey Education, and with TES Global directly from 2021 after it acquired Edukey. Never a Corco Labs project; I was one engineer in their team.
ClassCharts is a behaviour management and seating plan platform used across thousands of UK schools. I joined Edukey as the first developer alongside the CTO, when the products served hundreds of thousands of users, and stayed eight years while the platform grew to more than ten million pupils, parents and teachers and Edukey was acquired by TES Global.
The work covered the full stack: the web app teachers and school staff use every day, three mobile apps for teachers, pupils and parents built from one React Native codebase, the data behind tens of millions of behaviour events a year, and the infrastructure, which grew from three servers to roughly a hundred instances and around 1,000 requests a second.
Along the way I rebuilt the jQuery front end in React in place, as separate micro apps, brought Docker into the company and later moved the platform onto Kubernetes, helped take it from Rackspace to GCP to AWS, led the migration of 40+ TB of assets between clouds with the platform up, and mentored the developers who joined as the team grew past a dozen engineers.
The challenge
School software gets its load in sharp peaks, at morning registration and the end of the day, and schools notice any downtime at once. The platform had to keep up with growth while new features kept shipping.
My approach
I worked as part of Edukey's engineering team, not as an outside vendor: standups, roadmap input and architecture decisions, and one of four code owners on the main repository by the end.
Tech Stack
Smart City / IoT · August 2024 - February 2025
Smart city IoT platform
Backend for a multi-vendor programme
Backend engineer inside a multi-vendor programme
I was one backend engineer among several vendor teams, on a B2B contract. The client is under NDA.
Several vendor teams were building the domains of a smart-city programme at once. I worked as a senior backend engineer on the architecture they built against and on the platform services every domain needed.
The city domains included smart parking, smart lighting, a marketplace, site management and support, each a service with its own database and API, on shared platform services for users, onboarding, notifications, certification and mail, written in NestJS and TypeScript.
Device telemetry streams through Kafka into Cassandra as time series, APISIX sits at the edge with Keycloak for identity, and everything runs on Kubernetes. I translated an external consultancy's written specifications into C4 architecture models, which became the reference the vendor teams built against.
The challenge
Several vendors were contracted to build different domains at once, and none of them could be allowed to block another. Each team needed a contract it could build against without waiting for a meeting.
My approach
Domain-driven design from the start. Each city domain got its own bounded context with an API contract, so the service boundaries matched the vendor boundaries and the teams could build in parallel.
Tech Stack
EdTech · November 2015 - December 2023
ProvisionMap
Provision mapping and safeguarding for schools
Lead engineer, within the same Edukey contract
Part of the same eight-year B2B contract with Edukey Education.
ProvisionMap helps schools plan and track the extra support pupils get, from one-to-one tutoring to group interventions. Alongside it sat School Robins and Safeguard my School. I was lead engineer across the three, reusing the ClassCharts architecture, tenancy and permission model on a smaller codebase.
I built the IDP workflow engine that carries Wales' statutory Additional Learning Needs process, from the first migration through to a template builder, so a school or local authority could change a workflow without waiting for a release. Local authority users could follow every pupil in their area through a workflow.
Safeguarding records carry an access log of who opened a child's record and when, and admin permission edits are audited. I also worked on the country-level customisation for a separate instance run for one country, which was later merged into the main product.
The challenge
Schools and local authorities run statutory processes through this software, and safeguarding records are some of the most sensitive data a school holds. Access and changes had to be traceable.
My approach
Reuse what already worked in ClassCharts rather than build a second architecture, and make workflows configurable data so a process change did not need a release.
Tech Stack
FinTech · 2021 - present
Metis
Financial news intelligence at scale
My own platform
My own product, which I build and run.
Metis is my own financial news platform. It takes in around 100,000 articles a day from 5,000+ feeds, newsletters and archives and lines them up against real-time market prices. I build and run it myself, which is why I can show the architecture in full.
Each article goes through separate processors for language, sentiment, named entities, assets, topics, duplicates and embeddings. The models behind them are self-hosted and served from Python and FastAPI services, and summaries go through OpenAI, Anthropic or Ollama.
Embeddings are stored in Qdrant, so natural-language search finds related articles by meaning, and an LLM agent pulls related news before it makes a call. PostgreSQL, ClickHouse and Meilisearch handle relational data, analytics and full-text search, with BullMQ and RabbitMQ moving work through the pipeline.
The challenge
Financial news moves fast and comes from everywhere. The system has to take in a high volume, classify it across many categories, and keep it searchable close to real time.
My approach
I started with ingestion reliability, then added processing one step at a time, each as its own service, so a step can be rerun when the data or the model changes. Thresholds for topic tagging and asset matching are evaluated on samples of real articles.
Tech Stack
Energy / Technology · 2013 - 2017
Enterprise energy platforms
Philips, RWE and Innogy digital products
Subcontractor via Cuibono Media Network
I built these for Philips, RWE, Axxerion and Innogy as a subcontractor through Cuibono Media Network, the agency that held the accounts.
For several years I built digital products for European brands as a subcontractor to Cuibono Media Network GmbH, the agency that held the accounts. For Philips, the Metronomis LED configurator, a B2B tool that lets customers design and visualize custom LED lighting poles before purchase.
For Axxerion, MyENMS: an energy management platform for connecting several energy sources and monitoring them in real time, with virtual and physical meters, alerting and reports. For RWE, the Mint Music Awards app, a campaign platform for voting and browsing nominees. For Innogy, the Hausmeister app: building and room data with a 2D editor for recording doors, windows and technical equipment.
Each project ran inside the brand's own constraints: brand guidelines, a fixed launch date, and backend systems owned by someone else.
The challenge
Brand work comes with fixed launch dates, strict guidelines and other people's systems to integrate with, and the end user still expects the tool to be simple and fast.
My approach
Interactive prototypes early to agree on the interaction with the agency and the brand, then production code to the client's requirements.
Tech Stack
Have something similar?
Tell me what you're building. I'll say honestly whether I'm the right fit and what I would ship first.