Loading
Loading
Standards
Anyone can describe how they work on a first call. This is the version that is written down before the call, applies to every engagement, and can be checked against the code while you watch. Where a standard has a real limit, the limit is on this page too.
Delivery
These are the standards our own products are built to. An engagement inherits them because it is built on the same scaffolding, not because they were written for a proposal.
A fixed scope document — deliverables, milestones, price, payment structure — agreed before any code is written. The price does not move unless the scope does, and a scope change is priced and accepted in writing before it is built.
A URL you can open and use, every week, from week one — or an installable build where the project is a mobile app. Not a status report and not a slide. It exists so a project cannot fail quietly for two months: the first chance to say 'this is not what we wanted' is week one, when changing it is still cheap.
Type checking, unit tests, linting, and an import-hygiene check are wired to run automatically on every push. A gate that has not run is treated as a gate that failed — including ours.
Stated as configuration, not as a clean record. On this repository the gates were filtered to a branch that did not exist until 1 August 2026, so they had never executed at all. They fire on every push now and still have not had a green run: the blockers we have identified are a task-ordering bug in the build graph, a missing browser install in one package's test job, and three lint scripts with no config behind them. A second workflow carrying performance and bundle budgets is gated on pull requests, so on a repository that commits straight to master it has never fired once. We would rather hand you that list than show you a badge.
Automated WCAG 2.1 A/AA checks run against every public route with zero tolerance — one violation fails the run. Where the automated tools cannot see a criterion, the gap is recorded in the test file itself so nobody mistakes green for complete.
Two limits worth stating. Automated tooling covers roughly a third of WCAG — it is a floor, not a certificate, and the suite says so itself. And on this repository the check runs on demand rather than on every push, because the workflow carrying it has no trigger that fires yet. It said "fails the build" until somebody checked which builds it had actually failed.
Largest Contentful Paint, Cumulative Layout Shift and Total Blocking Time have written thresholds that a build is measured against, rather than a promise that it will feel fast. The numbers are in the repository where you can read them and hold us to them.
Measured on demand today rather than on every commit — the workflow carrying these budgets exists but is not yet wired to a trigger that fires. We would rather say that than show you a badge.
Where a project ships to an app store, builds are scored against Apple's Guideline 4.3 and Play's uniqueness rules on a published rubric, with a numeric threshold that has to be cleared before anything is submitted. Rejection is a schedule risk, so it is handled during the build rather than discovered at review.
Conventional commits, one concern per commit, and a written rationale in the commit body for anything non-obvious. You are buying a codebase somebody else will maintain one day — the reasoning has to survive the engagement.
Ownership
Every item here is designed so that ending the engagement is a decision rather than an event.
Repositories, cloud, app-store and third-party accounts are yours from the start, not migrated at the end. You can revoke access this afternoon and keep shipping.
Build steps, deploy lanes, monitoring and alerting — and store submission where a project ships to one — are configuration in your repository: reviewable, runnable, and transferable without us. Nothing load-bearing lives in somebody's head or in a private dashboard.
Intellectual property in the work product is assigned to you at handover. No license, no hosting lock-in, no per-seat fee afterwards, and no component you have to keep paying us to use.
Three-month minimum, then month to month, with 30 days' notice on either side and no auto-escalating rate. Ending one includes a documented handover of the project and its operational history.
Security and data
The honest answers to the questions a security review asks, including the ones where the answer is no.
We work in your accounts under your identity provider, with the narrowest role that does the job, and we ask for production credentials only where the work genuinely requires them. Access is enumerated in the scope document so you know exactly what was granted.
We do not copy client source or customer data into our own infrastructure for convenience, and we do not retain either after an engagement ends beyond what a signed agreement requires us to keep.
White-label delivery under your brand stays under your brand. We do not publish, reference, or list work done under an NDA, and we will sign yours rather than ask you to accept ours.
No analytics, no advertising trackers, no tracking pixels, no marketing cookies, and no third-party scripts. Fonts are self-hosted at build time, so loading this page does not make a request to anyone else. That is why there is no cookie banner — there is nothing to consent to.
No SOC 2, no ISO 27001, no Cyber Essentials. If your procurement process requires one, we are not the right vendor for you today — and you should find that out here rather than four weeks into a review.
Said plainly because a vendor who is vague about this costs you the four weeks.
Commitments
What a company refuses to do under commercial pressure is more informative than what it says it values, so these are phrased as refusals. Every one of them costs us something, which is the only reason any of them is worth reading.
Next step
Every standard above is enforced in a repository we can put on screen. Bring the two you care about most and we will show you the configuration that enforces them, the last time each one failed, and what happened next. Rates are on pricing; the terms that govern an engagement live in the signed scope rather than on this site, and the site's own terms of use are separate from both.
We reply within one business day.