Skip to content
Codense
Products & engineering Copenhagen & Odense

Software that holds up.

We build and operate our own SaaS, and we build systems for teams that cannot afford to rebuild again. Senior engineers only, measured before and after, and a written exit plan from week one.

Detectly — live, ours, and on our own pager. The rest are in build, and say so. See it

Diver — live, ours, and on our own pager. The rest are in build, and say so. See it

Deploy — in build, and it says so — this is the interface it is getting. See it

Sentry — in build, and it says so — this is the interface it is getting. See it

Products we run
4
built, shipped, on our own pager
Practising since
2019
and still holding the same line
Consultants
2
no bench, no juniors at senior rates
Cities
2
two places of work, not a branch
PHP Laravel Flutter Dart PostgreSQL Docker Hetzner JavaScript TypeScript Go Kotlin Swift SQL Node.js Livewire Inertia NativePHP Vue React Next.js React Native Jetpack Compose SwiftUI Blade Tailwind CSS Alpine.js Vite MySQL Redis
MongoDB pgvector Pinecone Qdrant Neo4j Elasticsearch Kibana Kubernetes AWS Azure DigitalOcean GitHub Actions GitLab CI nginx Cloudflare LLM integration RAG & vector search Machine learning GPU workloads PHPUnit Pest Playwright k6 PHPStan Laravel Pint Rector ESLint Prettier Chromium
The stack
What it replaces

6 subscriptions that do not agree. Or one that does.

This is the shape of every product we build: the tools a small team is told to assemble separately, behind one dashboard, one alert engine and one bill.

  • Uptime monitoring
  • API checks
  • Browser testing
  • Visual regression
  • Sitemap scanning
  • Cron heartbeats

Detectly

Monitoring

One dashboard, one alert engine, one bill. 6 subscriptions become one, and the alerts finally agree with each other.

Was
6
Now
1
Why we exist

Most systems do not fail. They stiffen.

Almost nothing we are called into is broken. It works, it makes money, and every change costs a little more than the last one — until someone proposes a rewrite and eighteen months disappear.

We do the unglamorous alternative. Measure first. Fix the handful of things that actually carry the load. Put tests around the parts nobody dares touch, and move the system seam by seam while the business keeps running. Roughly a third of the time our first honest answer is that you do not need us — and we say so before an invoice exists.

Quality

Every engagement leaves behind a pipeline that runs the full suite in under ten minutes.

Scalability

No optimisation merged without a before and after figure attached.

Flexibility

No migration plan with an irreversible step in it leaves our hands.

One layer

Know it works. Before your customers tell you.

Control, predictability, observability, automation, trust and risk reduction. Six words that describe the operational products we run, the bridge we are building between them, and every engagement we take.

Control

Reach into the system and change what it is doing, without waiting for a deploy or a person.

Predictability

Know what happens next, and get told before a trend becomes an incident.

Observability

Not just status, but why — logs, metrics and events that answer the question being asked.

Automation

Jobs, workflows and triggers that run whether or not anyone remembered.

Trust

Checkout completes, jobs finish, data stays correct. The business logic, not just the uptime.

Risk reduction

Less downtime, less lost revenue, fewer broken flows found by customers first.

What we build

The platform, the app on top of it, and the pipeline underneath.

Two senior engineers who between them cover the whole stack: web platforms and SaaS, native and cross-platform mobile, and the infrastructure that keeps both running. Below is what that looks like — built in this page, not screenshotted.

Web platforms & SaaS

Software your customers pay for.

Schema, API, interface, billing, onboarding, alerting and the on-call rota — the parts of a SaaS that only become visible once someone is paying for it. We build all of them, and we run four of our own on the same stack.

Laravel and PHP 8.4 · PostgreSQL · Multi-tenant by schema · Subscription billing · Deploy on merge

diver.mthy.dev

Mobile apps

Native when it matters. One codebase when it does not.

The software people actually hold, designed before it is built. Swift and Kotlin when a product needs the platform; Flutter or React Native when a shared codebase is the better trade — decided in writing, not by habit.

Swift & SwiftUI · Kotlin & Compose · Flutter · React Native · Both app stores

Infrastructure & pipelines

Deploy on merge. Roll back on regret.

Docker, CI, deployment, backups, monitoring and a recovery path that has actually been rehearsed. We host our own products on European infrastructure and carry the pager ourselves, so this is not advice from the sidelines.

Docker · GitHub Actions · Hetzner & Kubernetes · PostgreSQL ops · Rehearsed rollback

Who you get

No bench. No handover to a junior.

Two senior engineers. The people in the first call are the people who write the code, and there is nobody behind us to escalate to.

Mathias Villadsen

Mathias Villadsen

Co-Founder · Senior Fullstack Engineer

Odense LinkedIn

  • Laravel
  • PHP
  • Docker
  • PostgreSQL
  • LLM integration
Mikkel Thygesen

Mikkel Thygesen

Co-Founder · Senior App Developer & Front-end Designer

Copenhagen LinkedIn

  • Kotlin
  • Swift
  • Flutter
  • React Native
  • Vue
In their words

What clients say when the invoice is paid.

Named where the client has approved it, described by role where they have not.

“They spent three days measuring before proposing anything. Every other firm we spoke to had a proposal ready before they had seen the code.”
VP Engineering, Nordic logistics platform
“Two consultancies told us to start again. Codense told us the boring truth: this is fixable, and you will keep shipping the entire time.”
Chief Technology Officer, Danish health-tech scale-up
“They were the first supplier who treated leaving as part of the job.”
Head of Digital, Danish public-sector agency
How it runs

Five steps, and you can stop after two.

The diagnosis is a complete deliverable in its own right. If it says the work is not worth doing, that is where we stop and say so.

  1. 01

    Conversation

    One hour, free

    You describe the problem; we ask uncomfortable questions. By the end of it we will tell you honestly whether this is work we are good at — and roughly a third of the time, we point people somewhere else.

    • A straight answer on fit
    • A rough shape and price range
    • A referral elsewhere if we are the wrong firm
  2. 02

    Diagnosis

    One to four weeks, fixed price

    We get into the code, the pipeline, the data and the incident history, and take a baseline of the numbers we intend to move. Nothing large gets proposed before this — quotes given without reading the system are guesses with an invoice attached.

    • Written assessment with ranked risks
    • Baseline metrics
    • Options priced in engineer-months
    • A recommended sequence
  3. 03

    Agreement

    A few days

    A scope, a price, a named team and an exit plan — all before the work starts. Monthly rolling, one month notice either way. If the diagnosis says the work is not worth doing, we say so and stop here.

    • Scope and success criteria
    • Named engineers, not a bench
    • Written exit plan
    • Rolling monthly terms
  4. 04

    Delivery

    Two-week cycles

    We ship to production every cycle, working inside your process and your repository. You get a demo, the current numbers against the baseline, and an honest note about anything that is going worse than planned.

    • Production releases every two weeks
    • Metrics reported against baseline
    • Decision records as we go
    • Weekly written status, no chasing required
  5. 05

    Handover

    Built in from week one

    The last stretch of every engagement inverts: your engineers write, ours review. We are finished when your team has shipped a meaningful change without us in the room.

    • Runbooks and decision records
    • Pairing and structured walkthroughs
    • A release your team shipped alone
    • A standing offer to answer the phone afterwards
Next step

Tell us what is not working.

An hour on a call, no charge and no deck. We will tell you honestly whether this is work we are good at — and if it is not, who to talk to instead.

Reply within
One working day
First call
One hour, free
Notice period
One month, either way
Based in
Odense & Copenhagen