Software products,
shipped end to end.

A stock-scoring engine and an atlas of European electricity — both live, both built with Claude and gated by humans.

scroll ↓ 01 stockscore · 02 wattlas · 03 how it ships
01StockScore score the business · read the market 02Wattlas european electricity, explained 03How It Ships the operating model behind both
01 · Live product

StockScore

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. Every score shows its working — the numbers behind it, and how complete the data is. Nothing here is a black box, and every card is live data.

StockScore scorecard for NVDA
stockscore.app/score/NVDA — one score, fully shown
StockScore scorecard on a phone
the same score, on a phone
StockScore landing page
stockscore.app — search any company or ETF
Sentiment Radar
sentiment radar — seven signals, never a number
Three pillars, one number

Fundamentals 45 · Valuation 30 · Moat 25. Code scores the numbers; AI helps grade only the moat.

A parallel ETF engine

ETFs get their own score, ranked by percentile against funds in the same category.

Context, without a score

Sentiment Radar, IPO Radar and Event Briefs — deliberately score-free, on their own blue↔violet axis.

Deeper than the score

Compare companies side by side, and read an AI breakdown of the latest earnings.

Score a stock →
02 · Open data

Wattlas

European electricity, explained.

26
views, grouped as five questions
6
bidding zones compared at once
daily
rebuilt at 05:17 UTC · no backend

Five plain questions about European power: when does the price move, what generates it, why do prices split, what happens when supply runs tight, and who pays. Twenty-six views answer them — pre-computed from open data, rebuilt every morning, no backend to keep alive.

Wattlas Pulse view — the duck curve
pulse — the duck curve, −€18 midday to €142 evening
Wattlas comparing four bidding zones
zone compare — Germany against France, NL and Austria
Germany North-South grid story map
germany north–south — ~400 Landkreise mapped
Carbon intensity view
carbon intensity — 30 → 550 gCO₂/kWh, FR vs PL
01
The Daily Rhythm

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

02
What's on the Grid

Generation mix, carbon intensity, residual load, and when gas sets the price.

03
Geography of Price

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

04
When the Grid is Tested

Dunkelflaute, storage economics, adequacy — and a sourced replay of the Iberian blackout.

05
The Bill

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

Explore where your electricity comes from →
03 · How it ships

Built with Claude, gated by humans

The model did the typing; the gates, tests and review kept it honest.

2
human gates: the plan & the release
0
JSON keys in CI · WIF + Secret Manager
130
offline tests, no network needed

Both products ship the same way. Claude writes the tickets, the mockups, the code and the tests; a human makes the two decisions that matter — the plan and the release. Work moves in small vertical slices, each one gated, each one readable in a diff.

From intent to production
1 · INTAKE
Jira & Notion — where work is raised
2 · IN PARALLEL
Claude Cowork writes the ticket; Claude Design supplies mockups & specs
3 · ISSUE
GitHub issue links ticket and design together
4 · CLAUDE CODE ⚑
One issue · one branch · one worktree. You approve the plan.
5 · RELEASE ⚑
develop → staging → main, protected branches. You approve the release.
De-risked before any code
01
Propose the approach
02
Challenge it with a second model — two rounds
03 ⚑
Human decision, weighing the trade-offs
04
Crystallize into a brief, then implement

Behind it, a testing gate on every session: failing-first tests, pre-commit hooks, detect-secrets. Wattlas alone carries 130 offline tests across 20 files — pure metric functions on inline fixtures, no network needed.

Two CI/CD shapes, same discipline
StockScore — secured by default

Cloud Run front and back, Cloud SQL behind a VPC, every secret in Secret Manager. The pipeline authenticates with Workload Identity Federation — no JSON keys stored anywhere. PR checks and a Gemini-call guard gate every deploy.

PR checks → gemini guard → deploy → Cloud Run
Wattlas — a cron, a commit, a redeploy

A scheduled job reruns the Python pipeline daily at 05:17 UTC, commits only the JSON that changed, and the static site redeploys. Seven open data feeds, each isolated and fail-open. No backend, no database.

open APIs → pipeline → data/*.json → redeploy
Get in touch →