← Back to Blog Posts

Taking On Client Websites Again — and Not Charging Agency Prices

Taking On Client Websites Again — and Not Charging Agency Prices

I'm building websites for businesses again, alongside my own apps. Two honest reasons: the work funds the products, and small businesses are getting priced out of a decent website by everyone selling to them. Here's what I found when I measured it, and the actual numbers.

I'm taking on website work for businesses again. Not instead of building my own apps — alongside them. And since the reasons are the interesting part, I'll put both of them up front rather than dress one up as the other.

The first is money. I'm a solo developer with no investors and no runway but my own. The products I'm building get funded by me, which means they get funded by work. The second is that there's a particular kind of business getting badly served by everyone currently selling to them, and I'm in an unusually good position to do something about it.

What I found when I actually measured it

I had a hunch that small businesses without a working web presence were more common than people assume, so I stopped assuming and counted. I built a tool that pulls every business listing in an area and checks what's actually on the other end of each one. Not "is the site nice." Something much more basic: is there a site at all? Does the domain still resolve, or has it lapsed? Is that a real website, or a social page doing a website's job?

First pass: one small metro area — Lewiston–Auburn, Maine — 291 businesses. Seven came out hand-verified as genuinely stranded. Real businesses, open, taking money, doing good work, with nothing you could point a customer at.

A dark lead workspace listing businesses with dead websites. Every business name, address and domain is blurred out; what's readable is the evidence — 'is not a working site — the server is showing a bare directory listing', 'cannot be opened securely — the HTTPS handshake fails', 'returns an HTTP 500 error instead of a website' — with trade tags like veterinary, motel and bicycle.

That's the workspace, with every identifying detail switched off. I take my clients' privacy seriously — and I share my screen a lot, on calls and publicly online — so hiding it isn't something I have to remember to do. One switch, and every business name, address and domain is blurred out server-side before the page is ever drawn. These businesses aren't mine to name.

What's left is the part that matters: the evidence line under each one. The server is showing a bare directory listing. The HTTPS handshake fails, so browsers block the page. Returns an HTTP 500 instead of a website. Each of those is a customer who went looking for a business, found a broken door, and went to a competitor instead. The owner usually has no idea.

Seven out of 291 sounds small right up until you notice it's the strictest possible test, applied once. So I widened the net: 736 business listings across the same area. Only 270 of them carried a website worth checking — for the other 466 there was no website recorded on the listing at all, which usually means nobody ever typed one in rather than that the business has none. Fifty-five of those 270 belong to a business that is open, trading, and standing behind a front door that doesn't open. One in five.

Then I ran exactly the same sweep somewhere as unlike a Maine mill city as I could think of: Chandler, Arizona — a large, prosperous Phoenix suburb, an order of magnitude bigger and several thousand miles away. 2,589 listings. 248 of them carried a website worth checking. Fifty-six were broken.

One in five in Lewiston. Slightly worse in Chandler. Whatever this is, it isn't a rust-belt problem, and it isn't a small-town problem.

One in five broken — and almost all of them still open Lewiston–Auburn, Maine and Chandler, Arizona · 518 businesses checked All 518 checked 111 in trouble 111 broken 381 working 26 couldn't be checked Those 111 105 still trading 105 no sign they closed 4 a headline says closed 2 sold or renamed “Still trading” means no local-news headline says otherwise — keyword matches on headlines, so a lead to read rather than a verdict. Seven further sweeps of neighbouring towns added only four businesses these two metros had not already found.

The second circle is the one that decided this whole thing. A closed business with a dead website is just tidy — sad, but nobody's problem. Of the 111, only four turned up a local headline saying they'd shut, and two more had been sold or renamed. The rest show no sign of having gone anywhere: open, trading, paying rent, and quietly losing every customer who went looking for them and found a broken door.

111 open businesses with a broken front door Two metros, 3,325 listings, 518 of them with a website to check Lewiston–Auburn, Maine Chandler, Arizona Dead domain — nothing loads at all 27 32 Broken link on their map listing 16 11 A social page or a rented subdomain 12 13 Both metros swept and checked identically. A further 26 sites sat behind bot filters and could not be judged either way; seven sweeps of neighboring Maine towns added only four businesses these two had not already found.

"Broken" is doing a lot of work in that count, so here is exactly what it does and does not mean. These checks catch a site that won't load, a domain that has lapsed, a business renting a page it doesn't own. They cannot see the site that loads perfectly and hasn't been touched since 2016, or the one that falls apart on a phone, or the one whose hours have been wrong for two years. Every one of those passes the check and gets counted as working, because from the outside it is.

That's the group I can't put a number on, and I'd bet it's the biggest one of all. It's also the group that bothers me most, because those owners believe the problem is solved.

Why the pricing is wrong

A small business today gets shown two doors. Behind one is a drag-and-drop builder: a monthly rental, forever, where the owner does the work, doesn't own the result, and the site evaporates the day they stop paying. Behind the other is an agency quote that assumes a marketing budget — four or five figures up front, plus a retainer, and a decent chance it's the same template anyway.

Here's the part that doesn't get said out loud: for a site like this, the hosting is free. Not cheap — free. The site sits on Cloudflare's edge network, served from data centers around the world, and a local business's site fits inside the free tier with room to spare. That's the same infrastructure serving sites with millions of visitors: it's blazing fast everywhere, and it doesn't fall over the day the business gets written up in the paper. The domain costs a few dollars a month. That's the bill.

So the expensive part was always the labor.

And that number has genuinely moved. The way I work now, a lot of the mechanical build is carried by AI under my direction and my review — which means a site that used to be weeks of my time is days. Everybody in this industry knows that. The standard response has been to keep the old price and quietly pocket the difference.

I'd rather pass it on. That's the whole pricing philosophy, and it isn't charity — it's just what the work costs me now. The cheaper price comes from the build being faster, not from the work being thinner: same test discipline, same accessibility, same performance standards I hold my own products to. I've written before about why speed without discipline is a trap, and I'm not about to sell that trap to a restaurant.

The actual numbers

No "contact us for a quote." Here is the whole thing.

  • The site: pay-what-you-think-it's-worth. One payment, any amount — including nothing. A business that's barely hanging on can answer $0, and that's a real answer; it's what I built the free door for. The site belongs to them either way.

  • Looking after it: $9 a month, or $90 a year. Optional — and it isn't a hosting bill. Hosting is on an account in the client's name and at this size it costs nothing: not free for a year, just free. What the $9 buys is the caretaking that actually stops if I stop: security updates applied as they land, dependencies kept current so the site doesn't quietly rot, backups, and someone noticing if it goes down.

  • Small edits: free while subscribed. Opening hours, a phone number, prices, swapping a photo, fixing a typo. That's not a project, and it's not something to send an invoice for.

  • Real content: usually $15–40. A new page written and built to match, a staff section, a gallery of their work.

  • Something that does a job: usually $40–200. Online booking, a quote calculator, a contact form that routes itself, online ordering.

  • A whole application: $2,000 and up. A customer portal with logins and accounts, stock and orders that talk to each other, scheduling across several staff — anything with its own database and its own rules.

Every one of those change prices is a rough guide from work already done, and the real number for any one job is quoted and agreed before it starts — not a rate card waiting to trap the first job that lands outside the band. Which is the whole point of it: the fairest pricing you'll ever see, and that's on purpose — not an introductory offer waiting to be corrected later.

Asking for a change is just… asking

There's no ticket system, no client portal, no "please log in and file a request." There are two doors, and they both go to the same place.

The first is the site itself. There's a button on it: the owner says what they'd like different, in their own words, the way they'd say it across a counter. The Tuesday hours are wrong. Can the phone number be bigger. Use this photo instead — and the photo can come with it, or a PDF of the new menu. The second door is email. A reply written like a person writes gets picked up and filed against the right project automatically. Nothing sits in an inbox waiting for me to notice it.

Either way, an AI agent working on that site picks it up. The straightforward things it simply does: hours, a phone number, a price, swapping an image, fixing a typo, rewording a paragraph. Then it rebuilds the site and the change is live. No back-and-forth, no waiting until I've got a free evening.

And it knows when to stop. If an ask needs a fact only the owner has, or it's a real judgment call — a new page, a change that makes a claim about the business, something where the obvious cheap answer is probably the wrong one — it doesn't guess. It does the part it can and hands the rest to me, and I come back with an actual question. The hard rule it works under is this: what they published, it may republish; what it invented, it has to mark as invented. It is not allowed to make things up about someone's business, and that rule is written into the project itself rather than into my good intentions.

I want to be precise about what's automated here, because "AI does it" is doing a lot of work in most people's marketing. The queueing is automatic and the small changes are automatic. I'm still in the loop, I see everything that comes in, and I review the work. What the automation removes is the waiting — not the person.

The client owns it. All of it.

This is the part I care about most, because it's where the industry's worst habit lives.

The site gets built on accounts in the client's name — Cloudflare and everything else — with full access, nothing gatekept, no admin panel where I hold the only key. If they stop paying me, the site stays online. They just take over the caretaking, or hand it to whoever they like. The fee buys management, never custody.

No hostage sites. Ever. If the only thing keeping a client is that leaving would take their website down, that's not a business relationship, it's a hostage situation with an invoice attached.

Who I'm doing this for

Small businesses that do real work and got told their only options were a rental or a project. Restaurants, shops, trades, one-person practices, the nonprofit running on somebody's evenings. The ones where the owner is also the bookkeeper and the closer and the person who fixes the sign.

It's explicitly not for companies with a marketing department — they have agencies, and the agencies are fine. And it's not for anyone who wants a growth funnel with sixteen tracking pixels. I'm here to make a business look as good online as it is in person, and to make that fact findable.

How this might start

Possibly with a site nobody asked for.

When I find a business that's stranded, my instinct isn't to pitch — it's to build. It's faster to show someone what their business could look like online than to describe it, and I'd rather spend a day building than an hour selling. So if a message from me turns up with a link to a working site that already carries the right name, the right hours and the business's own words: that's what that is. No invoice attached, no obligation, and "no thanks" is a completely fine answer.

If you'd rather come to me — that works too. There's a form here, and I read everything that comes through it.

And no, this isn't a pivot

The products are still the plan. The e-commerce platform still launches September 11 alongside the album; the rest of the stack keeps getting built. Client work is what pays for all of it, and I'd genuinely rather be funded by businesses I've helped than by a term sheet.

There's a selfish upside, too, and it's the reason I think this arrangement is honest rather than a side hustle bolted onto a product company. Every one of these sites is built on NebulaKit — my own SvelteKit and Cloudflare starter, the same foundation the blog you're reading runs on. So this is dogfooding in the most literal sense available to me: a client's site is my platform, in someone else's hands, with real customers hitting it on real phones.

Every rough edge a client finds gets fixed in the template, and every one of those fixes lands back in my own products. That's a much harsher test than anything I'd run on myself — and if I'm going to ask a business to depend on this thing, I'd better be depending on it too.

So: if you run a small business, or you know someone who does, and the website situation is either "there isn't one" or "we don't talk about it" — that's the conversation I'm looking for.

© 2026 davis9001.dev | All rights reserved.