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.
- Homepage GET / · text contains "Add to cart" 182ms
- Checkout flow Recorded browser flow · 4 steps 8.4s
- Orders API POST /v1/orders · JSON assert 96ms
- Nightly export Heartbeat · expected 02:00 late
Detectly — live, ours, and on our own pager. The rest are in build, and say so. See it
- app.example/checkout iOS 18 · Universal Link · opens app pass
- app.example/checkout Android 15 · App Link · opens app pass
- app.example/offer/spring not installed · store fallback pass
- app.example/ref/partner-7 deferred attribution · 24h window pending
Diver — live, ours, and on our own pager. The rest are in build, and say so. See it
- 01 Build image cached layers · 3 of 5 41s
- 02 Run checks style · types · links 1m12s
- 03 Release health gate before cutover 18s
- 04 Rollback path rehearsed on every release ready
Deploy — in build, and it says so — this is the interface it is getting. See it
- Order reaches warehouse end to end · last 15m pass
- Webhooks delivered 1,204 of 1,204 pass
- Invoice totals reconcile ledger vs orders pass
- Stale carts cleared scheduled job · 03:00 check
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
We run what we recommend.
Codense builds and operates its own SaaS on European infrastructure. Real customers, real uptime obligations — which is why the advice comes with opinions rather than options.
Monitoring
Detectly
Six monitoring tools in one, hosted entirely in the EU.
Read moreDeep links
Diver
Every deep link, tested where it actually opens.
Read moreAutomation
Deploy
Ship on merge, roll back on regret.
Read moreTrust
Sentry
The watch that stands when nobody is looking.
Read more6 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
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.
Every engagement leaves behind a pipeline that runs the full suite in under ten minutes.
No optimisation merged without a before and after figure attached.
No migration plan with an irreversible step in it leaves our hands.
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.
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
- app.example/checkout iOS 18 · Universal Link · opens app pass
- app.example/checkout Android 15 · App Link · opens app pass
- app.example/offer/spring not installed · store fallback pass
- app.example/ref/partner-7 deferred attribution · 24h window pending
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
$ deploy main --to production
✓Build image 41s
✓Run checks 1m12s
▸Release 18s
✓Rollback path ready
·released · rollback path rehearsed on this release
Numbers, not adjectives.
Client names are withheld where the contract requires it. The figures are not.
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.
What clients say when the invoice is paid.
Named where the client has approved it, described by role where they have not.
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.
-
01
Conversation
One hour, freeYou 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
-
02
Diagnosis
One to four weeks, fixed priceWe 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
-
03
Agreement
A few daysA 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
-
04
Delivery
Two-week cyclesWe 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
-
05
Handover
Built in from week oneThe 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
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