Manifesto

Software, written deliberately.

A small company’s point of view. Read it before you brief us — if you disagree with it strongly, we are not the right team for the work.

01 Whole-stack, not full-service.

“Full-service agency” is the word for an organisation built on handoffs. The web team blames the hosting team. The hosting team blames the application team. The application team blames the AI vendor. Every joint between specialists is a place where accountability evaporates.

We don’t do handoffs because we don’t have specialists to hand off between. The same person who writes the Worker writes the AI prompt, designs the database schema, configures the firewall, and reads the production logs at 2 a.m. when something goes wrong. That isn’t a constraint we apologise for — it’s the entire premise.

02 AI is engineering, not magic.

Most AI features in 2026 are built by people who treat language models as oracles. The result is software that sometimes answers correctly, sometimes hallucinates, and is impossible to debug because no one wrote the architecture down.

We treat AI like every other unreliable distributed system: we constrain its inputs, validate its outputs, log its decisions, and write evals that fail loudly when the model regresses. The interesting parts of an AI feature aren’t the model — they’re the retrieval, the schema, the guardrails, and the observability around the model. That’s where the engineering is. That’s where we work.

03 The edge is not a future. It’s the present, mostly.

Every server-rendered page that takes 800 ms in 2026 is a deliberate choice — usually one made years ago and never re-examined. Cloudflare Workers run in 300+ cities. The same code that serves Halifax serves São Paulo. There is no reason most marketing sites, internal tools, and AI-augmented APIs shouldn’t live on the edge.

We specialise in Cloudflare not because it’s fashionable but because the alternative — “we deploy to AWS the way the team is comfortable with” — keeps producing the same architecture every time, regardless of whether it suits the workload. Specialisation forces us to choose the right primitive for each problem instead of reaching for the familiar one.

04 We’re selective — about fit.

We turn down work every week, and we tell people why in writing. Not because we’re precious about it, but because the wrong engagement helps no one: you get half our attention, and we get a project we can’t be proud of. So we’re honest, early, about whether we’re the right team for what you need.

If we’re not a fit, we’ll say so — and point you somewhere better when we can. If we are, you get a small senior team that gives your project real attention: not a junior working from a template, not a number in a backlog.

05 Words on a page before code, always.

Every engagement begins with a written brief — yours — and a written response — ours. Every architecture decision becomes a document before it becomes code. Every sprint closes with a written changelog. We do this because the written record is what survives the conversation, the reorg, the team change, and the year that passes between “we shipped this” and “we need to extend this.”

Software written without a paper trail is software the next person can’t safely change. We work to make sure the next person — your team after we hand off, or you in eighteen months — can change what we built without re-running the discovery.

06 We charge for outcomes, not hours.

The hourly contract rewards two bad instincts: ours, to take longer; yours, to micro-manage scope. So we don’t bill by the hour. We scope each project, agree a fixed price before any work begins, and own the delivery — you know what it costs and what you get before you commit. No meter running, no surprise invoice.

07 Software is for the operator, eventually.

The team that lives with the software is the team that wrote it, sometimes for years. Build choices that look elegant at week one are tested at week 104. We don’t pick libraries that have a single GitHub maintainer, configurations that only work because of a Slack message buried in someone’s DMs, or vendors with pricing models that fund a future migration project. We build for the operator that exists three years after launch — even if that operator is your team, not us.


SetKernel Digital Inc.
Halifax, Nova Scotia — globally engaged

Write a brief