Right now

Daily deep-work hours since 7 April 2026, from a Garmin watch via TimeBox Stats.
Deep-work hours logged since 7 April 2026
527 h
984 sessions on 121 active days
This week
0.0 h
TimeBox Stats, from the watch
Longest single session
8 h 05 min
27 April 2026
Decisions logged across systems
380
Two decision logs, counted at deploy
Last ship
Most recent production deploy

Updated 22 Sep 08:48 CEST by a scheduled job.

A governed multi-agent production system

A Swedish publishing business run by one operator and a set of AI agents. Every agent reads the same doctrine file. Each material decision gets a numbered entry in a decision log. Work is partitioned into parallel lanes by file ownership so agents do not collide. Agents plan first and halt before they write. Nothing is promoted without verification, and design sign-off happens only on a clean production build.

TODO(Hannes): two sentences on the reformatting incident that created the no-formatter rule.

Structure of the multi-agent production system The operator sets a doctrine file and a decision log. Up to four agent lanes, each owning its files, plan, halt and write in parallel. All work passes a verification gate before it reaches production. Agent lane owns its files plan halt write Operator Doctrine file and decision log read by every agent Verification gate nothing is promoted without it Production design sign-off on a clean build only
oddslogik.se, a Swedish comparison publication for the licensed gambling market.
  • 84 pages shipped between 3 June and 22 September 2026
  • 365 decision-log entries
  • Up to four parallel agent sessions, partitioned by file ownership

About the publication

This site is run the same way. Five entries from its decision log:

  • DL-001 (2026-09-21) Stack: plain HTML, CSS and one JS file, with the migration trigger "when notes exceed five".
  • DL-007 (2026-09-21) Contrast ruling: the spec value for light ink-3 rejected at 3.36:1, #66707A at 4.57:1 instead.
  • DL-012 (2026-09-22) Centered column: eight of ten reference sites center the column and left-align the text. Reverses ruling 3.
  • DL-013 (2026-09-22) No count-up: the animation read as a stat banner in the audit. Values render immediately.
  • DL-015 (2026-09-22) The record is the record: the heatmap runs from the first logged day and shows the September gap.

An adversarial audit of an agent-built CRM

A prospecting CRM built with agents for a services company, then audited in four sessions by a separate model instance acting as red team. About forty defects were found. Roughly a dozen of them were errors in the building agent's own rulings that had been accepted as correct, which is the class of error that is invisible in its own output. The audit summary covers the method, the defect taxonomy and what changed afterward. No client details.

The adversarial audit loop A builder agent builds the CRM. A separate model instance audits it as red team in four passes and sends findings back. Defects are sorted into two buckets: the builder's own rulings, accepted as correct, and everything else. The result is the fixed system. Builder agent builds the CRM build findings Red team: a separate model instance pass 1 pass 2 pass 3 pass 4 four audit sessions Defect taxonomy the builder's own rulings, accepted as correct everything else Fixed system
Four audit passes by a separate model instance. Defects are sorted into a taxonomy before anything is fixed.
Sessions4
Defects foundabout 40
Errors in the builder's own rulingsabout 12
Rows in the database4 230
Taxonomy, bucket onethe builder's own rulings, accepted as correct
Taxonomy, bucket twoeverything else

TODO(Hannes): URL of the sanitized audit summary PDF.

How I work

Notes

Short pieces, one every week or two.

TODO(Hannes): first note title and text.

Now

What this quarter actually contains.

This term: second-year courses in Engineering Mathematics at KTH. oddslogik.se is live and in its first months of organic traffic. I am looking for 20 hours a week inside a small AI-native team, starting with a scoped build. Six training sessions a week, thirteen years and counting.

Updated September 2026

The offer

I want 20 focused hours a week inside a small AI-native team. The way I propose to start: one 8-12 week scoped build of an internal system you already know you need, at a day rate, with an option to continue at 50 percent if it works.

Scope a build

Sales 2014-2017. First company at 21. A quantitative promotions operation across Sweden and Norway. International business development at a digital loan broker 2021-2023. KTH Engineering Mathematics since 2025. Stockholm.