Software products,
shipped end to end.

Twenty years putting AR and planning software on factory floors, now in two products built with Claude.

Wattlas

A field guide to European power markets.

41
views, each with the assistant beside it
9
questions, from the hourly price to AI's load
2×
rebuilds a month · 1st & 15th, 05:17 UTC

Nine plain questions about European power, answered by 41 views computed in advance from open data on a fixed schedule. An assistant on every view answers questions about its charts.

Wattlas Pulse view: the duck curve
pulse · the duck curve, 66€/MWh at 13:00 to 178€/MWh at 19:00
The Wattlas assistant answering a question on a view
the assistant · a suggested question, answered from the view's own figures
The Daily Rhythm

When does power move? The duck curve, the daily spread, negative prices, capture price, volatility.

What's on the Grid

Generation mix, carbon intensity, residual load, the midday ramp-down, and when gas sets the price.

Geography of Price

Where power flows and why prices split, in Germany, France, the Nordics and the UK.

When the Grid is Tested

Dunkelflaute, batteries large and commercial, adequacy, and how far the day-ahead forecasts miss.

The Bill

What flexibility is worth, and how a megawatt-hour becomes your monthly bill.

The Charge

Where Europe's cars and first electric trucks plug in, what a charge costs, and how much of the network is built.

The Load

Data centres, a flat line for a decade until AI: what they draw, what a token costs in energy, and who gets connected.

The Build-out

What gets built, and how fast: solar and wind capacity, how much of the year it runs, and how much energy arrives as electricity.

Country by Country

Fourteen power systems, each with its own fuels, price zones and answer to the same problem.

StockScore

Retired for now

Score the business. Read the market.

100
point score, fully shown
2
scoring engines · stocks & ETFs
3
score-free surfaces: sentiment, IPO, events

One number for the business: 100 points across quality, value and moat. Around it, a score-free read on sentiment, IPOs and events. Each score shows its working: the figures behind every pillar, and how complete the data is. It is retired for now; the screenshots show it as it last ran.

StockScore scorecard for NVDA
the full scorecard for NVDA
StockScore scorecard on a phone
the same score, on a phone

Built by agents, gated by an expert

Claude writes the code. I approve the spec and the release.

2
words from me per build: the spec & the release
5
roles, one of them a script with no model in it
1
role allowed to merge

I describe what I want and answer the questions that sharpen it. Claude writes the spec, and when I say go, a crew of agents builds it issue by issue. A second model reviews every pull request and merges what passes. I say go once more to release it.

From intent to production
Spec
Claude questions me, then writes the spec and issues. I say go.
Dispatch
A script with no model starts workers as issues unblock
Build
Sonnet workers in parallel, one worktree each, tests first
Review
A fresh Opus session merges or sends the work back
Release
CI tags, deploys and checks the live site. I say go.
One kit, one server

A shared kit puts the same skills, hooks and release workflow into every repo, and a drift check catches local edits. Every session runs on one home server, and I steer them from a laptop, a tablet or my phone. Opus writes the spec, reviews and judges; Sonnet workers write the code.

A task manager watches every run, and what it can't settle gets parked with a reason. An LLM council of four models checks the spec and risky merges. Progress lives on GitHub: each milestone closes when it's done, and a live board shows every issue.

Behind it, a testing gate on every session: failing-first tests, pre-commit hooks, detect-secrets. Wattlas alone carries over 5,600 tests.

Two pipelines
Releases: one word, five jobs

My go opens a release PR. Its merge starts one workflow that tags the commit, publishes the notes, deploys, smoke-checks the live site and closes the milestone. No session pushes a tag.

go → tag → release → deploy → smoke check → milestone
Wattlas: a cron, a commit, a redeploy

A scheduled job reruns the Python pipeline on the 1st and 15th at 05:17 UTC, commits only the JSON that changed, and the static site redeploys. Each open data feed is isolated and fails open.

open APIs → pipeline → data/*.json → redeploy

My Story

Twenty years of getting industrial software onto the floor.

20
years, research bench to production line
−18%
off client production time, best case
300%
revenue growth as Managing Director