You quote 100 hours at $10,000, which puts you at $100 an hour on paper, so you send the proposal feeling pretty smart about it. Then the project hits the review phase, and three months later it still isn’t live.
Your team is buried in 80-odd emails across four threads, handwritten notes scrawled on an exported PDF, and six status calls nobody billed for, and half of it gets rebuilt anyway because what shipped wasn’t what the client pictured.
By the time the final invoice clears you’re closer to 250 hours, so that $100 an hour was really $40, and that’s the good version of this story.
I’ve been that guy. Throughout my time running an agency, the projects that hurt me most were almost never the ones where the design was hard, they were the ones where the work had been finished weeks ago and we were still going back and forth about which button the client meant.
It has nothing to do with your skill, because you are an amazing designer, and everything to do with broken feedback loops, revision cycles nobody’s tracking, and one conversation happening in six places at once.
The trap is an operations problem wearing a pricing costume
We’ve been running weekly calls with our community members so we can understand their businesses and their struggles, and honestly because it’s just great to see them, and I’ve been asking all of them the same question.
How much are you making per hour?
A lot of them didn’t know, which is fair enough because most of us don’t charge per hour, but you still need to know what margin you’re working with.
So I did the math with them live on the call and some of them came out at $7 to $13 an hour, and not one of them was a bad designer. These are people I’ve known for years.
When owners run into this, the instinct is almost always to fix it in the contract, so they charge more per hour, write a tighter scope clause, or ask for a bigger retainer before anyone touches the work.
That’s fair, and I’d never tell you to loosen a contract, but it doesn’t touch the place the margin actually leaks, because your margin never leaves in one dramatic chunk, it leaves in fifteen-minute pieces.
The thing eating those pieces is context switching. When feedback lands in email, WhatsApp voice notes, Slack, and a slide deck someone made on a plane, your team spends more of the day collecting and decoding requests than doing the work, and decoding isn’t billable, it just quietly eats the hours you already sold.
Here’s what that looks like on the ground. The client emails to ask whether you can move the button on the homepage over a bit and make the text pop.
Make it pop. We make fun of this all the time and it’s still the worst thing anyone can say, because it means something different to every person on the team. So your account lead spends fifteen minutes working out which button and what copy the client actually meant, your developer rebuilds it without knowing their screen size or their browser, and then the client checks it on a cached mobile view, sees the old version, and reopens the request. Two minutes of CSS turned into over an hour of coordination, and you’re paying that tax on every element of every page.
Fix one: stop being the translator
Here’s what I learned building Atarim, and it’s the thing I’d tattoo on a new agency owner’s arm if they’d let me.
Nobody gives feedback in paragraphs, because in real life people point at things and say make this bigger, move this up, change this color, three to five words every time. You can send the nicest bug-report template in the world and the client will still reply with one line.
So we stopped fighting it and took the open text box out of the process entirely, letting people click the thing they’re actually talking about. The client clicks the button, types four words, and the browser, the OS, the screen resolution and the exact element all come along for free, so nobody has to ask and nobody has to guess.
That was the fix for years and it worked, but look closely at what it actually did, because it produced a really well-briefed task and then handed it to a human. Your developer still has to do it and your account lead still has to schedule it, which means the translation tax got smaller rather than disappearing.
The real version is that the client never files the task with you at all. I’m so happy we have been able to do this with Atarim V5.
The client is in a workspace under your brand talking to Claro, our project manager, and when they say the headline reads generic, Lexi rewrites it, shows them the new one, and explains why it works: who it speaks to, why the voice is active, and what it does for the goal you set. They approve it and it ships, and because every action stores the original, one click puts it back if they change their mind.
Nobody on your team touched any of that, not the fifteen minutes of decoding, not the two minutes of CSS, and not the follow-up when the client checks it on their phone.
Fix two: stop being visible, start being early
Here’s the uncomfortable truth about “just checking in” emails, which is that clients don’t send them because they’re difficult, they send them because they can’t see anything. Silence makes people nervous, and nervous people call.
The obvious answer is to give them a window into the work, a dashboard with live task statuses, something to look at, and that genuinely helps. I’d take it over silence any day.
But a window into a reactive agency is still a reactive agency, and all the client is really watching is you waiting for them to ask.
The version that changes the relationship is the one where the work has already happened before the client gets there, so the monthly report lands before they think about it, four plugins were updated overnight with a backup taken first, a blog post is sitting in approvals drafted in their voice, and the contact form that’s losing mobile visitors already has a fix proposed with a screenshot attached.
That’s the difference between a supplier and an advisor, and it has never been about how hard your team works, it’s about whether anything moves when nobody logs in.
Fix three: don’t stop scope creep, price it
Hot take: I don’t think scope creep is a problem at all, it just means your client got inspired.
I had one come to us wanting a plain contact form, and halfway through the build the client got excited watching it come to life and asked what if this wasn’t just a form, what if it walked people through step by step?
I could have told them that was out of scope, but instead I said great idea, let’s launch phase one and build that as phase two, because it’s not a no, it’s just not now. Inspiration is revenue in disguise.
So the goal was never to shut the request down, it’s to catch it the moment it arrives, tell the client what it costs, and let them decide. Karl Sakas shared the seven magic words for this at last year’s Web Agency Summit and I’ve not found better since: “Would you like an estimate for that?” It acknowledges that every extra request has a price without ever telling anyone no.
The problem is that you have to be in the room to say it, and half these requests arrive on a Thursday afternoon while you’re heads-down on something else, so by the time you surface the work is already half done for free.
That’s why we taught the system your seven words. You tell Atarim what your agency sells and what you charge, and when the client asks for something outside the plan it gets flagged, scoped and priced at your rate, then waits for your approval with a brief laying out the request, why it matters to their business, and the number. You read it and you send it.
This is the one that shows up on the invoice, because everything above stops hours leaking and this one adds them back at your rate.
“Okay, but what happens when it breaks my client’s site?”
Good, that’s the right question, and if you weren’t asking it I’d be worried.
Ask a generic chatbot to update your plugins and it will cheerfully tell you all fourteen are done, while there’s a fatal error sitting in the forms plugin, the site is down, and nobody has been alerted. That isn’t an AI problem, it’s what happens when there’s no procedure behind the answer.
So we built the procedure first, and the same request now runs the SOP a good agency would run. It takes a full restore point before anything moves, sorts the high-risk stuff like page builders, forms, WooCommerce and custom post types away from the safe stuff, then updates the safe ones one at a time rather than in bulk.
For the risky ones it reads the changelogs and version diffs and judges each plugin on its own, and anything that isn’t safe doesn’t get updated, it gets escalated with a drafted message and a task for your team. Then it verifies the live site page by page with screenshots and sends the client a plain-language report under your brand.
You’re also the one who decides what runs alone, per client. Plugin and security updates can just happen on a schedule, page copy drafts but never publishes itself, design changes wait for your approval with a preview attached, and anything touching checkout or payments escalates every single time with the console log included.
Everything becomes a task with a screenshot, a status and an owner, anything can be undone, and nothing happens invisibly. That’s the part I care about most, because you’re not handing over your tooling here, you’re handing over the thing your client’s business runs on.
What you’re actually protecting
Margin is the part you can measure and it’s worth measuring, but the reason it moves is worth saying out loud.
What clients pay for was never the hours, it’s the outcome, the judgment, and someone answerable for both, and every hour you spend playing telephone between four inboxes is invisible to the client, which means it’s an hour they’ll never see the value in paying for.
We didn’t invent any of this, and I’ve always thought about it as digitizing human experiences. We watched what people already do when they’re standing next to each other looking at a screen, then taught the machine to do it at a scale no human team could reach, because a great project manager might hold fifteen projects in their head and Claro can hold a thousand.
That’s the whole reason V5 exists. It’s an AI web agency plugged into yours, so your client talks to it directly, it sorts out the vague requests before they ever reach your team, and it does the work on the site, while anything it shouldn’t decide alone comes to you first. And when the client asks for something outside the plan, it’s the one asking whether they’d like an estimate.
Go and add up your last three projects and work out what the real hourly rate was, not the one on the proposal but the one you actually earned.
What number did you get? I’d genuinely like to know, because I don’t think anyone’s number is as high as they think it is, and mine certainly never was.