Frontend Chapter Lead · Senior Full Stack · Since 1998
I build products end to end, and lead the people who build them.
More than two decades in: I co-founded a software company and shipped a CMS used on 1,500+ sites over its life, then led the rewrite of DFDS’s B2B freight platform onto a modern microservice stack. Today I run the Frontend Chapter for the Ferry tribe at DFDS, setting direction across teams while staying in the code.
What is different now is how I build. Most of my work runs through an AI-assisted, agentic workflow that takes an idea to a shipped result in a fraction of the usual time. I build the harness the agents run in, not just the code, and I still own the architecture and everything that ships.

Newest article
Most AI tools want to be your assistant. I wanted a team: an architect that plans, specialist devs that write the code, reviewers that nag, a test writer that keeps everyone honest. Running on my rules, my prompts, my guardrails. Nobody sold that, so I built it.
Smelt is that team in an app, built on evenings on top of the GitHub Copilot CLI SDK. Feed it a backlog item, pick your crew, hit Start, and watch it grind its way to a draft PR. The video is a real run at 15x.
Smelt: my agents, my harness, my rules
An architect reads the PBI, snoops around the codebase, and writes the plan. You review it: approve, scribble a note, or send it back. Two minutes reading a plan beats twenty reading a surprise diff. Then the sub-agents swarm: backend dev, frontend dev, test writer, each with its own prompt and model, working in parallel waves while reviewer agents nag them until the issue count drops. Quality gates are robots, not oracles: type-check, lint, tests, pass or fail. Finally the architect returns as the critic, blocked from touching code, checks every acceptance criterion with file and line receipts, and opens a draft PR.
Every prompt lives in the UI: rewrite a persona, swap its model, tune its reviewers. That is the whole point of owning the harness. And the agents never touch git. They get safe replacement tools and a Rust layer that physically cannot commit to main.
Smelt: my agents, my harness, my rules
The bottleneck moves. A pipeline like this is only as good as the ticket you feed it. A sharp PBI gets a plan like a senior wrote it. A vague one-liner gets a confident plan for the wrong thing. In an organisation the size of DFDS, automating the coding just moves the queue to whoever writes the work items. The sharpest engineering skill in the room becomes writing a good ticket.
AI is an amplifier. It amplifies your codebase, your tickets, and your judgement, good or bad. And the jury is still out on the real impact: is the extra token cost of a full fleet worth it, or does a commercial harness like Claude Code or opencode in plan mode get you just as far? Honest answer: I do not know yet.
But what a ride. Agents built most of Smelt itself: 23,000 lines of TypeScript, 3,300 of Rust, 100 releases in three months, desktop app and VS Code extension from one codebase. Zero SLA, sharp edges included, and worth every evening. Once you have run your own fleet, autocomplete feels very quiet.
The Lab
Most developers use AI to write code. I build the systems that do it: agents, pipelines and harnesses, mostly solo and fast.
A game for coders, made for events. React + Convex on Vercel, promo built in Remotion. blind-code.vlx.dk
A multi-agent PR-drafting pipeline: a Tauri app over the Copilot CLI SDK, with architect, reviewer and test-writer agents behind quality gates. The clip is a 15x speed-run.
The story
As the hiring manager, I made every campaign in this deck myself with AI. I was building out a frontend team (a few mid-levels, a senior, two leads), and the ads got noticed: candidates brought them up in interviews. Keep scrolling to flip through them, from a single generated image to full multi-scene productions.
Stills, then short videos, then mini campaigns.
Phase 1 · Stills
Job ads built from AI stills riffing on Pixar and Disney, made with whatever image model was best at the time (nano banana). A few tries, an afternoon each.


Phase 2 · Motion
The stills started moving. Short AI videos, an afternoon of work, riding each new best model as it landed (Sora, then Veo 3).
Phase 3 · Productions
Full mini campaigns: multi-scene video from Seedance 2.0 with music from ElevenLabs. Still one afternoon, still solo.
Idea to result
I made this 30-second promo for blind-code in about 20 minutes, with three prompts. Remotion reused the real components from the site, so the time went into direction, not keyframes: what to show, the pacing, the music. The model fills a blank. It does not take a seat.

At DFDS I run the Frontend Chapter for the Ferry tribe, setting frontend direction and standards across teams while staying hands-on. I led the rewrite of the Freight B2B platform onto a microservice stack: a Next.js multi-zone monorepo (Control Tower) with a Nest.js BFF, plus AI document ingestion in MyFreight that turns unstructured shipping documents into structured data.
We run a Serverless setup with a DevOps flow in GitHub Actions, with automated tests in Jest and Playwright. As Chapter Lead I also set frontend direction and standards across teams, and increasingly build with an AI-assisted, agentic workflow.

Four of us founded SiteWorks in 2002, buying out the product we had started building inside Telia Internet. For the next 16 years I was the lead developer behind two custom CMS platforms that were used on more than 1,500 sites over their lifetime, by names like IBM, Deloitte, Dong Energy and Vækstfonden.
Both were built on SQL Server: the original in Classic ASP, the rewrite in .NET MVC and C#. Sites built on them are still live today, including Aidsfondet.dk and Artisten.dk, plus an event-registration system used by large organisations. See more cases here.
When our larger SiteWorks clients needed custom software, I built it. Dansk Artist Forbund needed a way for members to create binding contracts between artists and venues, so I built one: a guided multi-step form that adapts to the user's input, runs through an approval flow, and ends in a generated PDF contract.
This was my first React project, in 2016, with a .NET Core backend. A deliberate early bet on a stack that has defined the rest of my career.
Danske Fodterapeuter had a harder problem: clinic owners had to follow a 50-page guide to build a valid tenancy contract. I turned that guide into software, with a guided workflow, helper functions that did the heavy lifting, and authenticated access for logged-in members.
Same modern stack, React, Redux and .NET Core, applied to a genuinely gnarly domain. The kind of work where the value is in making something complex feel obvious.
The whole arc
1998 to present, the short version.
Built Sitebuilder, a CMS, for the sister company Netmaster, and a city portal system for Esbjerg and a few other cities.
Joined through Telia's buy of Netmaster. Built Siteworks, a SaaS reseller platform for registering domains and spinning up sites.
Telia closed its Danish internet projects, so my partners and I bought the product. Incorporated 4 December 2002.
E-commerce, ERP, inventory and RMA by day, with Siteworks running part-time. Also export and display work at Designvision.
Grew it into a 15 to 18 person agency on our own in-house CMS. Clients included IBM, Deloitte, Dong Energy and Advodan.
Led the MyFreight2 rewrite (React, Nest.js BFF, Redis, Kafka) and started the Frontend Community.
Own frontend standards across teams. Authored the Control Tower POC, built AI document ingestion in MyFreight, and mentor the chapter.