Replacing a Stock Hero Photo and Rewriting Site Copy
Why I threw out my agency website copy twice in one day, swapped a stock hero photo for Nairobi, and replaced WhatsApp DMs with a proper form.
I spent most of a Sunday fighting with my own agency website copy, and I lost that argument three or four times before I got anywhere useful. It started as a quick photo swap on the homepage. It ended with me killing a positioning line I had been proud of an hour earlier, and then admitting out loud that we had drifted away from what our clients actually want.
A favour, a resume and a weekend spent filing
The day did not start with business. A friend asked me to fix his resume, so I pulled it out of my downloads folder and rebuilt it properly. Real hierarchy, his accomplishments pushed to the top instead of buried under a paragraph of job duties, something that looks designed rather than typed. I sent it to him with instructions on how to use it, copied myself quietly so there is a record, and logged the whole thing as non business activity. Because it was. You do favours for people. You just do not pretend they were billable.
Then I did the thing I had been putting off for months, which was organising my machine. Everything had drifted. Client work sitting next to installers, screenshots in three different places, a downloads folder acting as permanent storage instead of an inbox. I gave the whole home directory a real structure: business operations in one place, my own code projects in another, one folder per client with their site, their files and their backups together, paperwork split by type, media where the system expects media to live.
Boring work. But I asked one practical question before committing to it: does this actually buy me anything? The answer was tokens. Every time I ask my assistant to find something, a clean tree is cheaper to search than a messy one, and I run that search hundreds of times a week. If it saves even a little, it pays for an afternoon. So I also built a knowledge graph over the whole lot, roughly seven hundred code files and nearly four hundred documents, so a question about my own codebase returns a small slice instead of me grepping around in the dark.
The hero photo had nothing to do with Nairobi
Evening came and I looked at the DDi homepage properly for the first time in weeks. There was a man on the hero image doing nothing except modelling. No connection to the brand, no connection to East Africa, no connection to the kind of work we sell. We are a Nairobi agency talking to Kenyan business owners, and the first thing they saw was a stranger posing.
So I pulled it. I went with a street scene instead, something that looks like the places our clients actually trade in, kept inside the same palette and type system so the page still holds together. Then I said the obvious thing: if a real photograph would do better, we should go shoot one. That is on the list now. Generated imagery got us to a page that works tonight, but it is not where this ends.
Then the new image took too long to load, which is its own lesson. A hero that represents you but makes the page crawl is still a bad hero. Compressed, resized, done.
Writing agency website copy that sells without wrecking SEO
This is where the day got messy. I asked for the copy to be rewritten the way a serious sales strategist would do it: sell the outcome, not the service list. What came back was sharper, but it had a line about cloning business owners, and I hated it immediately.
Think about who reads that. A business owner lands on your site and the headline implies software is going to replace him. Nobody buys from a threat. The feeling I want is simpler: this is the person who will help me make more money tomorrow than I am making today. Same ambition, opposite emotion.
The second pass swung too far the other way. It was all "found on Google", "message us on WhatsApp", "pay with M-Pesa". Accurate, local, and completely flat. We need to rank and we need to sell, and those two pull in different directions. Keywords want plain nouns. Selling wants outcomes. The compromise is that the SEO terms have to live inside sentences that sound like a brand, not a checklist.
I also banned the pattern of "we do this, we do that, we do that". You do not declare that you are a full service creative marketing agency. You write copy good enough that the reader concludes it themselves.
By the end I was less sure than when I started, which is honest. We had optimised the page for how we want to sound, and somewhere in there we had moved away from what our clients come to us asking for. That gets revisited.
The unglamorous half of the day
Alongside all the arguing, actual work shipped:
- Approved the service catalogue and pushed it live to both the site and the invoicing system
- Kicked off the CRM campaign setup and the ad builds
- Swapped the hero image, then compressed it after it loaded slowly
- Re-rendered all three promo videos, twice, because the call to action changed mid way
- Worked out the right allow rules so the deploy had the permissions it needed
- Replaced WhatsApp DMs as the primary call to action with a form and an audit flow
That last one matters more than it sounds. Direct messages as your main entry point are chaos. Nothing is logged, nothing is qualified, nothing is followed up unless you personally remember. A form and a free audit give me a record and a reason to call back. That is the difference between a lead and a conversation you forgot about.
I also looked at why our videos get no views, and the answer is not the editing. It is that we have been posting things we find interesting rather than things a business owner would stop scrolling for.
What I would tell another founder
Your own website is the hardest client you will ever have, because nobody is paying you to be decisive about it. Set the constraint before you write a word: who reads this, and what do they need to feel? I burned hours on clever positioning that failed one simple test, which is that no buyer wants to be told they are replaceable. And fix your intake before you fix your copy, because a page that converts into an unlogged direct message is just a leak with good typography.