Kjetil Dyrland

I build scalable, robust data platforms, AI solutions and machine learning in production.

I'm Kjetil Dyrland, a data engineer at Tet Digital in Oslo. Before that I moved Lerøy Seafood's data onto Databricks and built models for salmon prices and shipping documents. Through my own company, Dyrland Data & AI, I take on data and AI projects, like invoice control for Entro.

See the appsRead my CVSend an email

Apps

Eight apps on the App Store, seven of my own and one for a client. Built from scratch in Swift. Tap an app to take a look.

Data and AI

My day job: getting data out of old systems, through tested and documented pipelines, and into the models and reports people use. Read the CV

Experience with

Data
Snowflake, dbt, Databricks, PySpark, Delta Lake, Delta Live Tables, Unity Catalog, PostgreSQL, Supabase
Machine learning
Decision theory, Bayesian methods, classifier evaluation, XGBoost, CNNs, MLflow, LLMs
Cloud
AWS, Azure, Cloudflare, Vercel, Docker, GitHub Actions
Languages
Python, SQL, TypeScript, Swift, Rust, Java
Apps and web
SwiftUI, SwiftData, React, Next.js, FastAPI, Xcode Cloud

With Entro

Entro AS helps Norwegian businesses use less energy. I'm building part of the portal their customers use.

Entro:Pi is where Entro's customers follow their buildings, energy use and ESG reporting. I'm building its new invoice control, which replaces an old desktop system.

Every electricity, grid-rent and district-heating invoice is checked line by line against hourly meter readings, spot prices and grid tariffs. When something doesn't add up, it gets flagged. The next phase turns checked invoices into what each tenant owes.

Read more about Entro at entro.no.

  • Reads e-invoices (EHF and PEPPOL) directly
  • Compares against hourly meter data from Elhub
  • Built with Next.js, TypeScript and Postgres
An invoice arrives as EHF / PEPPOL Checked line by line against meter readings, spot price and tariffs doesn't add up? flagged Split between tenants next phase in Entro:Pi

Research

Two papers I co-wrote during my master's, on how to judge and use a classifier when different mistakes cost different amounts.

arXiv, February 2023

Does the evaluation stand up to evaluation? A first-principle approach to the evaluation of classifiers

Kjetil Dyrland, Alexander S. Lundervold and P.G.L. Porta Mana

Accuracy, F1 and MCC can recommend a classifier that loses money. We show that the only consistent way to compare classifiers is to weigh each outcome by what it's worth, and that even a rough guess at those values ranks classifiers better than the usual metrics.

What the usual metrics say

MetricAB
Accuracy0.620.75
F10.590.77
MCC0.240.51
Precision0.640.70

What each one earns per component

Confusion matrices and gains from the paper's prologue. Classifier A is right more often about short-life parts, and those are the mistakes that cost the most.

arXiv, February 2023

Don't guess what's true: choose what's optimal. A probability transducer for machine-learning classifiers

Kjetil Dyrland, Alexander S. Lundervold and P.G.L. Porta Mana

A classifier's score is not a probability. We turn scores into real probabilities with a Bayesian model fitted once on held-out data, then pick the action with the best expected outcome. On drug-discovery data this beat the usual 0.5 cut-off in every cost setting we tried.

Standard (score above 0.5)–
With the transducer–
Computed in your browser from the paper's published random-forest transducer and 3,589 calibration molecules. The paper's headline numbers come from a separate test set, so they differ a little.

If you're interested, send me an email.

kjetil@dyrland.ai
Kjetil Dyrland
Oslo, 2026

Glimt

On the App Store

A disposable camera for weddings and parties, where every guest shoots from their own phone's browser.

The host creates an event and puts up a QR poster. Guests scan it and get a limited roll of film in the browser, with no app and no account. Photos get a film look and a date stamp, and can't be deleted.

The host watches the shots come in live, then develops the roll after the party so the whole gallery opens to everyone at once. It started as the camera for a friend's wedding in July 2026.

  • Guests only need the QR code
  • A live darkroom for the host, then develop the roll afterwards
  • Optional RSVPs with a private guest list
  • A calm, chronological gallery with no algorithm

Built with Swift and SwiftUI for the host, a web camera with an offline upload queue for guests. Next.js, Cloudflare D1 and R2.

Glimt, App Store screenshot 1Glimt, App Store screenshot 2Glimt, App Store screenshot 3

Mosvold

On the App Store, built for a client

The tenant app for Mosvold & Co. AS: property information, messages to the manager and tenant benefits.

Tenants in Mosvold's buildings use it to find information about their property, message the property manager and use the benefits programme.

I built it for Mosvold & Co. as an iPhone app, a web app and an admin panel, and later moved it from React Native to native Swift.

  • Secure login with role-based access
  • Messages to the property manager
  • A benefits programme with offers for tenants
  • Norwegian and English, light and dark

Built with Swift and SwiftUI, a Next.js web app and admin panel, Supabase.

Mosvold, App Store screenshot 1Mosvold, App Store screenshot 2Mosvold, App Store screenshot 3

Hyttefred

On the App Store

A shared calendar, cost ledger and cabin book for families who own a cabin together.

One person creates the cabin and invites the rest of the family with a code or QR. Easter, Christmas, winter break and the summer weeks rotate between the owners by a rule everyone can see, so nobody has to negotiate them each year.

Shared costs are split equally or by ownership share and settled with Vipps. It works offline at the cabin and syncs when you're back in range.

  • Holiday rotation with first choice until an opening date
  • Expenses split by ownership share, settled with Vipps
  • Opening and closing checklists, starting with “turn off the water main”
  • A cabin book for wifi, fuse box, water main and house rules

Built with Swift and SwiftUI, plus an offline-first web app. Next.js API, Cloudflare D1 and R2.

Hyttefred, App Store screenshot 1Hyttefred, App Store screenshot 2Hyttefred, App Store screenshot 3

Zebra

On the App Store

A party game for four to ten players about a secret number rule and one liar.

Each round has a secret rule, like “prime numbers”. Players take turns putting numbers on the board, and the app stamps each one as following the rule or not.

The hidden Zebra has to fake one stamp, and the app quietly flips one innocent player's stamp as well. So there are always two lies on the board, from two different people. Then everyone votes.

  • Online rooms with a code or QR, no account
  • Pass one phone around, no internet needed
  • Twelve secret rules, and the roles rotate
  • Free, with no ads and no purchases

Built with Swift and SwiftUI, with Supabase Realtime for online rooms.

Zebra, App Store screenshot 1Zebra, App Store screenshot 2Zebra, App Store screenshot 3

Taleark

On the App Store

Talk for two minutes after a site visit and get an inspection report and a priced quote.

Made for Norwegian electricians and other tradespeople. You describe the job room by room, and each photo you take lands in the section you were talking about.

The app writes a structured report and a quote in one go, with your hourly rate, estimated materials, VAT and a total. Send it as a PDF with your logo, or as a link with a PIN.

  • Final inspection and compliance appendix following NEK 400
  • Works without coverage; speech recognition runs on the phone
  • Trade vocabulary built in, plus your own word list
  • Anything uncertain is listed at the top, never buried

Built with Swift and SwiftUI with Apple's on-device speech recognition and an LLM for structure. Next.js, Cloudflare D1 and R2.

Taleark, App Store screenshot 1Taleark, App Store screenshot 2Taleark, App Store screenshot 3

Ubrutt

On the App Store

A screen-time coach that puts a pause, not a lock, in front of the apps you choose.

Pick the apps that eat your time and write down why, in your own words. When you open one, you get a breath, your own reason, and today's count: opened seven times, turned back four. Then you decide.

Nothing is ever blocked. Instead you get an honest record with real numbers, and no streaks or points.

  • Start focus sessions from Control Center, the Action button or Siri
  • Separate rules for work hours and time off
  • Three unlocks a day, each one making the next pause longer
  • A letter every Sunday with one concrete suggestion

Built with Swift, SwiftUI and App Intents wired to Shortcuts automations, which also gives per-app counts Screen Time won't share. No analytics.

Ubrutt, App Store screenshot 1Ubrutt, App Store screenshot 2Ubrutt, App Store screenshot 3