SystemAdvisoryEngineeringWorkPricing
Engineering

Fixed scope. Staged releases. Nothing you didn't approve.

When advisory isn't enough, we build. Work is cut into tasks no larger than ten hours, each against a written acceptance criterion, each through the same five gates as everything else we ship. You approve every stage on staging before the next one starts.

See the Starter
ceero · scope
signed
Scopesearch & filters · stage 2
Taskcap 10h
  • T-01Typed search API + validation8h
  • T-02Facet UI with shareable URL state6h
  • T-03End-to-end coverage for the result set4h
  • T-04Perf budget + accessibility pass9h
Acceptance criteria
  • Every filter combination reachable from a shared link
  • No accessibility violations on the results page
  • Deployed to staging and approved by you

Fixed price · agreed before kickoff

The rule

If a task can't be described in one sentence and capped at ten hours, it isn't scoped yet — and we say so before you sign, not in week four.

Engagement modes

Three ways to put us on the build.

The same delivery model sits behind all three. What differs is how much you already know, and how much of it is currently on fire.

Best when
You get
Timeline
01

Fixed-scope sprint

Best when

You know what needs building, and you want one price, one timeline and one person accountable for it.

You get
  • ›Written scope
  • ›Daily progress in plain text
  • ›Working software, staged
Timeline

2–8 weeks

02

Foundation install

Best when

You're starting a Next.js and Contentful build and would rather not spend five months on plumbing first.

You get
  • ›Live staging
  • ›Production-ready repo
  • ›Contentful space provisioned
  • ›30 days office hours
Timeline

One engagement

03

Audit + fix sprint

Best when

You inherited a system nobody can explain, and something inside it is already going wrong.

You get
  • ›Architecture map
  • ›Risk register
  • ›Top-three fixes shipped
Timeline

2 weeks

How a build runs

No stage starts until you've signed off the one before it.

A fixed price only means something if the scope stays visible. Work reaches a staging URL in stages, and a stage you don't approve goes back to the fleet — at our cost, not as a change order.

ceero · release
checkout-rebuild
  1. 01Scopepending

    Tasks cut to ten hours or less, each with a written acceptance criterion. That list is the contract.

    12 tasks · 10h ceiling
    01Scoperunning

    Tasks cut to ten hours or less, each with a written acceptance criterion. That list is the contract.

    12 tasks · 10h ceiling
    01Scopedone

    Tasks cut to ten hours or less, each with a written acceptance criterion. That list is the contract.

    12 tasks · 10h ceiling
    your approvallocked
    your approvalapproved
  2. 02Buildpending

    The fleet works the tasks in parallel from one senior engineer's spec, behind the same five gates as everything else we ship.

    5 gates
    02Buildrunning

    The fleet works the tasks in parallel from one senior engineer's spec, behind the same five gates as everything else we ship.

    5 gates
    02Builddone

    The fleet works the tasks in parallel from one senior engineer's spec, behind the same five gates as everything else we ship.

    5 gates
    your approvallocked
    your approvalapproved
  3. 03Stagingpending

    The stage lands on a URL you can click, with its acceptance criteria ticked off beside it.

    staging.ceero.eu/checkout3/3 acceptance criteria
    03Stagingrunning

    The stage lands on a URL you can click, with its acceptance criteria ticked off beside it.

    staging.ceero.eu/checkout3/3 acceptance criteria
    03Stagingdone

    The stage lands on a URL you can click, with its acceptance criteria ticked off beside it.

    staging.ceero.eu/checkout3/3 acceptance criteria
    your approvallocked
    your approvalapproved
  4. 04Your sign-offpending

    You approve the stage, or you don't. Rework inside the agreed scope is our cost — and the next stage waits either way.

    ApproveRequest changes
    04Your sign-offawaiting you

    You approve the stage, or you don't. Rework inside the agreed scope is our cost — and the next stage waits either way.

    ApproveRequest changes
handover
handover

Scope changes get priced before we continue. Never after.

Defaults

A boring stack, and why we don't move off it.

Not a list of everything we've ever touched. These are the four defaults we start from, and what it takes to talk us out of each one.

Next.js App Router + React 19
Server components make the fast path the default one instead of something a developer has to remember. It's what our starter, the Maersk work and this site all run on.
TypeScript, strict, no escape hatches
A fleet of agents writes a lot of code quickly. The type checker is the cheapest reviewer we have, and the only one that never gets tired.
PostgreSQL, with validation at the boundary
Every external input is parsed before it reaches your data, and typed all the way in. We reach for something else only when the shape genuinely isn't relational.
Vercel + GitHub Actions
A preview deploy per pull request is what makes staged approval work at all. The gates run here, and a red gate blocks the merge rather than filing a ticket for later.

Microservices, GraphQL and a bespoke design system are all available on request — after you've heard the argument against them. Read the argument

Bring a problem. We'll bring a fixed price.

If it can be scoped, it can be priced. If it can't be scoped yet, that's the audit — and the audit is priced too.

How we price

Independent technology advisory and engineering. København, Denmark.

Njalsgade 21F, 2. sal, København

CVR 45 44 13 93

nicklas@ceero.eu

WhatsApp +45 31 33 25 99

Work

  • Enterprise Starter
  • Advisory
  • Engineering
  • Work
  • Contact

Resources

  • Writing
  • Guides
  • Free tools
  • About

Elsewhere

  • Sparro
  • Invigilo
  • e-sign
  • Privacy

© 2026 Ceero ApS · CVR DK45441393. All rights reserved.

Built in København with Next.js, Contentful, and zero consultancy bullshit.