Projects and experiments
Things I build on my own time, including the ones I stopped, and smaller experiments from work.
Varden
Live
A news reader where an LLM does the first read. Every hour, a pipeline fetches RSS feeds, and Claude scores each story for how urgent, how big and how new it is, groups the coverage of one story across sources, and summarises it. The app ranks the feed by those scores and by what I've shown interest in. Mutes hide topics I never want, and spoiler veils blur sports results I haven't seen yet.
Quality is measured against a hand-checked eval corpus, part of it graded against live model calls.
Stack. TypeScript, the Claude API, Vue as an installable web app on Vercel, and Supabase for optional sync.
Open Varden. It starts with a short setup, and the sources are mostly Norwegian.
The feed, ranked: each card is one story, its coverage grouped across sources.
Kompass
Stopped in 2026
A Norwegian-language AI assistant, private by default, running on an open Norwegian language model. Mostly integration rather than a custom build: Open WebUI in front of the model, on Azure.
It worked, and it was cheap to run. I stopped it after a research pass showed the idea underneath didn't hold:
- The local model wasn't better. On Norwegian benchmarks (EuroEval), the open Norwegian model trailed both frontier models and open general-purpose models.
- The space was closing, to states, local incumbents with distribution, and funded European privacy players.
- The economics didn't work. A free consumer tier with paid upgrades doesn't add up in a language market this small.
Lykkepromille
Parked in 2026
An offline-first app that estimates your blood alcohol over an evening, designed to help you stay at a comfortable level rather than drink more.
Apple turned it down twice under App Store guideline 1.4, which requires paired hardware for an app that reports blood alcohol. The iPhone was the channel that mattered for the people it was for, so I parked it.
Stack. Vue and TypeScript, with no backend.
An evening held inside the comfortable band, then the projected way down.
A private modelling tool
Ongoing
A tool that helps me play a sports game. It fits statistical models to historical results, turns them into a probability for every outcome, and uses optimisation to choose what to play. It isn't public, but I'm happy to talk about it.
Methods. Statistical modelling and model fitting, probability and combinatorics, optimisation.
Resolve Games
2023 to 2024
A small app for a recurring company tournament at Visma Resolve, in Mario Kart and foosball: teams, tables, matches and rules.
Stack. Flutter, on Firebase. The code is on GitHub.
Time registration suggestions
At Visma Resolve
Automated suggestions for project workers' time registrations, forecast with a convolutional neural network (CNN).
Two weeks of one worker's registrations by project, then a day's actual registrations above the prediction.
Calendar event categorisation
At Visma Resolve, a hackathon
Can a language model tell what kind of meeting a calendar event is, without being told? About 3,000 events from my own calendars were labelled by hand. I turned each into a vector with a free pretrained embedding model and clustered the vectors without the labels, to see whether the categories come out on their own, as a possible input to the time registration suggestions.
The embeddings projected to two dimensions with t-SNE, coloured by the hand labels.
Company type change
At Visma Resolve
An analysis of sole proprietorships' accounting data, to work out whether a business would be better off as a limited company.
The top of a decision tree separating sole proprietorships (SP) from limited companies (LLC) on salaries, revenue and profit.





