Most of my work starts where someone else stopped.
Data scientist and AI engineer at one of the Nordics’ largest B2B distributors —
~50 bn SEK, 7,000+ people across Sweden, Norway, Denmark and Finland.
I tend to end up with the things that stalled — a document-parsing pilot four years deep,
a conversion problem nobody had measured properly. The modelling is rarely
the hard part. Reading the business accurately enough to know what would actually create
value is.
Now — Data Scientist at Ahlsell. LLM
document automation, a measured conversion framework, and the Azure /
Databricks machinery underneath both.
Open to senior individual-contributor and lead roles across
data science, AI engineering, analytics and solutions work — and to consulting
conversations. I care more about the problem than the job title.
Employer scale
~50 bn SEK
Nordic markets served
SE · NO · DK · FI
Commercial & leadership
10+ yrs
What I do
Three things, and the plumbing between them
Most of my week is one of these. The rest is arguing gently with a stakeholder about
what the number actually means.
Reading the problem
The part I am actually good at. Understanding a commercial process well enough to see where the value really sits — which is usually not where the brief says it is. Several projects I now own had been technically attempted and abandoned before I got them; what was missing was rarely a better model.
Building the whole thing
Terraform and Kubernetes, Azure and Databricks, dbt models, Azure ML pipelines, backend services and API endpoints, and the front end someone opens on a Monday. Not because I want to be a generalist — because a half-built system creates nothing.
Proving it worked
Holdout groups, evaluation harnesses, actual-versus-target reporting. If a thing cannot be measured against what would have happened anyway, I would rather not claim it did anything. This is also the fastest way to find out you were wrong.
Selected work
Three problems worth describing
Employer work is written up without naming internal systems, customers or figures. The
thesis and the open-source projects are entirely mine and fully open.
Customer purchase orders arrive as PDFs in every imaginable layout. The project to parse them automatically had been open for years. It now runs, and AI-parsed billed orders have grown close to exponentially over recent months.
A reusable framework for triggered commercial flows. The first one built on it — abandoned cart — produces a material, sustained lift in incremental conversion, measured against a holdout group rather than asserted.
PythonAzureHoldout testingdbt
Azure ML · Share of Wallet, Cross-Sales, Onboarding
Maintaining and modifying the ML pipelines behind several commercial scoring models — the unglamorous work of keeping models that are already load-bearing correct as the business underneath them changes.
I bought my first share at thirteen. What started as an interest in
economics turned into a habit of insisting on evidence — in my own company, in how I run
property and personal finances, on the boards I sit on, and in every commercial role I
have held. Retail management was one arena for that. It was never the point.
The point is that I have spent years being the person a model gets handed
to. I have owned a P&L, set prices, negotiated with suppliers and defended a range to
people with strong opinions. So I know which number a category manager will not believe,
why the model that wins on validation loses on Monday, and what a recommendation has to
look like before anyone changes an order because of it.
That is also why I tend to be handed things that stalled. Several of the
projects I now own had smart people on them before me and did not ship. What was missing
was almost never technical.
Azure ML pipelinesMLOpsscikit-learnClusteringForecastingHoldout & A/B measurementAzure OpenAIDocument extractionEvaluation harnesses
Product surfaces
REST API designBackend servicesReact / ViteStreamlitPower BI templates
Say hello
If any of this is useful to you, write.
Roles, collaborations, a second opinion on a modelling problem, or a question about
getting a language model to behave on messy documents — all welcome.