Notes from the studio.
Short pieces on web development, pricing, and the business of a small studio.
Wix or Squarespace to a custom site without losing Google rankings
Whether to move at all, the inventory and redirect map that protect your rankings, the parts that break besides SEO (domain, email, forms), and what to watch in Search Console after launch.
A Shopify SEO checklist for small stores
Ten fixes for what Shopify leaves to you, in order of payoff: Search Console, real titles, collection copy, original descriptions, alt text, an app audit, structured data, redirects, duplicate links, and buyer FAQs.
Web design in Oklahoma City: what to ask before you hire anyone
The questions to ask any OKC web designer, agency, or freelancer before you sign: who owns what, what it costs every month, what you're actually getting, the proof to ask for, and the red flags.
How to check if ChatGPT recommends your business (and what to do if it doesn't)
A fifteen-minute test you can run yourself in ChatGPT, Perplexity, and Google's AI Overviews, the usual reasons AI engines skip a business, and the fixes that work on the site you already have.
What a small-business website should cost in 2026
Our published fixed-price ranges for marketing sites, online stores, and redesigns, what actually moves the number, the monthly costs after launch, and the questions to ask any quote.
Where AI actually helps — and where it's a liability
We added AI consulting, so here's where we actually think AI belongs: the tasks it earns its keep on, the ones where it's a liability, and the four questions we run every feature through before we build it — or tell you not to.
Why we don't do retainers
Retainers smooth agency revenue at clients' expense. Here's how we structure ongoing work without them — quarterly scoped engagements and pay-only-for-hours-used hourly support.
Fixed-price quotes are a conviction, not a marketing tactic
Hourly billing and fixed-price billing pull the studio and the client in different directions. Why we put the constraint on ourselves and what we lose by doing so.
When not to hire us
Most agency sites are written like every prospect is a fit. They aren't. Seven categories of project where we'd tell you on the kickoff call to hire someone else.
Day-one ownership: why your accounts shouldn't live in our agency dashboard
On every project, the client owns the domain, hosting, database, and third-party accounts on day one. Why this matters more than it sounds, and what it costs us operationally.
Headless Shopify on Next.js: when it's worth it
Three signals that point at headless, four signals that point at staying on a Liquid theme, and an honest accounting of what the build actually costs.
The cart-in-a-cookie pattern: less state, fewer bugs
Most headless Shopify storefronts reach for Zustand or Redux on day one. We don't — the cart is a single ID in an HTTP-only cookie, set by middleware, with the server as source of truth.
MDX is a better CMS than your CMS (for sites that change quarterly)
The default of "reach for the headless CMS first" is wrong for most small-business marketing sites. When MDX in the repo wins, when it doesn't, and the TypeScript-objects variant.
Stripe Connect for multi-tenant SaaS: why we picked Standard
Three flavors of Connect, three different regulatory profiles. Why CombatScore runs on Standard, what it costs us in onboarding polish, and the application-fee detail nobody documents clearly.
Multi-tenant subdomains on Vercel without losing your weekend
Hundreds of branded tenant subdomains from a single Next.js deployment. The four pieces that make it work, and the two mistakes we made the first time.
What "Coram Deo" looks like inside a Stripe invoice
The number on the quote is the number on the invoice — even when scope creep would let us bill more invisibly. The mechanism that makes the rule livable, and why it's a conviction rather than a policy.
Working with a Reformed Christian studio: the FAQ
Do you only work with Christians? Will you turn down work? What does "Reformed" actually mean in practical terms? Honest answers to the questions we get asked privately.