Eight kinds of thing
Most builds are two or three of these at once — a platform with a store bolted to it, an app sharing a brain with the website, an integration nobody wants to own. They are listed apart because they are scoped apart, not because they get built apart.
The AI and data work has a page of its own, because that line has more to explain than a card holds — every price, and an honest list of what I won’t build. It’s over here.
Custom builds
The software between off-the-shelf and overkill: platforms, portals, member sites, client dashboards. Scoped in writing, shipped in increments you can see working.
- Drupal
- WordPress
- React
- Astro
Ecommerce
Carts, subscriptions, checkout flows — and the unglamorous parts where stores actually fail: tax, shipping, the ERP feed, the promotion stack, the abandoned-order edge cases.
- Drupal Commerce
- WooCommerce
- Headless
Mobile apps
Native and cross-platform, shipped to real app stores since the GPS-in-a-blizzard days. Standalone when standalone is honest, or sharing a brain with your platform so content lives once and ships everywhere.
- React Native
- Flutter
- Native iOS/Android
APIs & webhooks
Building the API your data deserves, or taming the one somebody else shipped: REST and GraphQL design, versioning that won't strand your integrators, webhook plumbing, and middleware for the services that refuse to speak to each other.
- REST
- GraphQL
- Webhooks
ERP & CRM integration
The enterprise plumbing nobody sees until it leaks: order feeds into the ERP, customer sync out to the CRM, SSO, inventory pipelines. We've moved a lot of water through these pipes — including the 2 a.m. kind.
- ERP feeds
- CRM sync
- SSO
Custom .NET applications
Line-of-business apps in C#/.NET — new builds on modern .NET, and honest stewardship of the Web Forms fleet still running half the Midwest. Yes, we read the 2012 codebase. Yes, without judgment.
- C#/.NET
- Azure
- Modernization
AI integration
The useful kind: search that understands your catalog, drafts that start from your data, support that has read your docs. If a cron job would do it better, we'll say so.
- Claude
- RAG
- Automation
Testing & CI
Untested work is a rumor. Behat suites that outlive the project, unit coverage where the money math lives, browser tests for the flows that page you, and pipelines that gate every deploy on all of it.
- Behat
- PHPUnit
- Playwright
- CI/CD
A written scope, a number, a date
Every build opens the same way: what we’re making, written down; what it costs, as a number rather than a range; and when it lands. That page is the whole agreement, and it’s the page you hand to whoever signs the cheque.
Then it ships in increments you can see working — a real URL with a real thing on it, not a status meeting. When something we scoped turns out to be wrong once it’s real, we talk about it first. Changes are conversations, not surprises on an invoice.
How it bills
| Milestone | Share | When it invoices |
|---|---|---|
| Deposit | 40% | Before any work starts — it reserves the calendar |
| Midpoint | 30% | At the agreed halfway milestone, demoed and working |
| Delivery | 30% | On acceptance, against the written scope |
Net-15, every invoice
Forty percent lands before work starts. That isn’t a trust exercise — it’s what reserves the calendar, and a reserved calendar is most of what makes a date real. Everything after it is net-15, and there is never a line on an invoice you haven’t already seen a number for.
The concentration rule
No more than half of any month is committed to one build. Two reasons, both plain: the maintenance clients who pay for a patch window get their patch window, and a build that swallows a whole month swallows a whole month of risk with it. So a big build spans months rather than pretending otherwise, and the real calendar — increments, dated — is in the scope before you sign it.
Start with the map, not the paddle
Plenty of people arrive knowing something has to get built and not knowing what. Nobody should be quoting you a number in that spot — including me. Buy the thinking first, on its own, at a published price.
Build Roadmap
$3,500 – $7,500Paid discovery for the thing that does not exist yet. A roadmap runs about 8% of the build it scopes, which is where the range comes from — and the fee credits in full toward the build when it starts within 60 days.
What that buys is platform selection with the reasoning shown, an architecture recommendation, and a costed, phased plan. A roadmap that is yours to take to any builder, including not me — take it to another shop, hand it to your own team, or put it in a drawer until the budget year turns. A roadmap you can only spend in one place isn’t a roadmap, it’s a sales document.
- Best when
- The thing does not exist yet and you need to know what to build
- What it opens
- Platform selection with the reasoning shown, architecture, and a costed phased plan
- Back in
- 2–3 weeks
- Credits toward
- The build, 60 days — in full
Where the water is deep
A logo wall tells you what somebody has installed. It doesn’t tell you what they’d stake a deadline on. Here is the same list with the depth written next to it, which is the part that would have been useful to you anyway.
Drupal
Deepest water
Versions 5 through 11, since 2013 — commerce, multisite, and migrations at scale, including a monolithic Drupal 7 with millions of nodes rebuilt as Drupal 10 without losing a record. Two contrib modules maintained on drupal.org. If you hire me for one thing, hire me for this one.
WordPress & WooCommerce
Fluent
Builds, rescues, and stores. This is not where thirteen years went, and it’s genuinely good water to be in when WordPress is the right answer — which it often is, and I’ll tell you when it is.
C# / .NET
Deep, and unfashionable
Line-of-business apps on modern .NET, plus honest stewardship of the Web Forms fleet still running half the Midwest. Yes, I’ll read the 2012 codebase. No, not with a face.
React & Astro
Fluent, daily
TypeScript front ends, headless front doors, and static sites that stay fast on the third year rather than the first week. This site is Astro, and its carbon rating is public and re-runnable.
React Native & Flutter
Shipped, not specialist
Cross-platform apps in real app stores, back to the GPS-in-a-blizzard days. I’ll build you one. I’ll also tell you when a good mobile web experience gets you there for a third of the money.
AWS & Azure
Certified on AWS
Solutions Architect (Associate) and Cloud Practitioner, with Azure alongside it: containers, pipelines, and migrations off monolithic legacy. Certified means examined, not infallible — I still read the bill.
AI integration
Newest, and used in anger
The part an AI feature actually runs on: retrieval over your own catalog and your own documents, an agent surface that can reach your orders without reaching everything, permissions that hold when it does, and an eval set so you can tell whether it got better or just got different. Every price for it is published. If a cron job would do the job better, I’ll say so.
The full record — thirteen years of it, with the certifications and the drupal.org history — is on the about page. And whatever isn’t on this list: bring it anyway. Half of a good answer is knowing which shop should get the work, and sometimes that’s not this one.
What’s the smallest project you’ll take?
About $15,000 for custom work, and that number is a shape more than a size. The one named exception is a fixed four-page site for a qualifying independent small band: $1,500 through Dead North’s standing give-back program. It is a productized launch, not a cheaper custom build.
Why does a floor exist at all?
Because a build too small to carry its own paperwork fails in a predictable way: the scope comes out thin, the first surprise blows the schedule, and somebody eats the difference. Publishing the floor means you learn that from a web page instead of six weeks in. Nothing under it gets turned away — it gets routed.
What if my budget is under it?
Then you probably don’t need a custom build, and I’d rather say so. For qualifying independent small bands, there is one deliberately narrow option: the $1,500 give-back program. Everyone else has two honest answers below the floor: a fixed-price diagnostic or hours inside a maintenance plan at $250 an hour.
Do you take over a half-finished build?
Yes, more often than you’d guess — and it starts with a look, not a quote. A half-finished build is an unknown until somebody reads it: what works, what was never wired up, what the last team was going for. That’s a Rescue Assessment, and it comes back as a written picture of what you actually have and what finishing costs. If finishing is the wrong call, that’s in the memo too. Sometimes the honest number is smaller than the rebuild everyone assumed.
Where those routes go —Diagnostics ·Air Time ·Rescue ·Every price, one table
Three sentences is plenty · a real answer from Dane inside one business day