CASE STUDY · SINGLE-BRAND ONLINE RETAILER WITH A LARGE CATALOG
916 catalog pages, scored and rewritten
A 900-page catalog nobody could edit by hand. Every page is now scored against clear rules, rewritten by AI, and approved by a person before it goes live.
THE PROBLEM
Somebody exported the catalog to a spreadsheet, hand-wrote descriptions one product at a time, and gave up around item eighty. Image alt text never got written at all.
- 916catalog pages scored
- 100/100Lighthouse SEO score
- 97%less layout shift
- 20issue types tracked
The problem
Nine hundred and sixteen pages. Seven hundred and eighteen products, a hundred and ninety-two collections, and a handful of pages and articles.
The old job was a spreadsheet or an agency retainer. Export the catalog, look for blank descriptions, sort by title length to find the ones that’ll get cut off in search results, hand-write a description, paste it back into the admin one product at a time, and stop somewhere around item eighty. Duplicate page titles were invisible unless somebody built a pivot table — and the worst duplicates, the ones caused by a blank title quietly falling back to the product name, were invisible even then. Image alt text never got written. The keyword data sat in one browser tab and the Google data in another, and nobody put the two together.
Meanwhile the store itself was loading the same analytics script twice on every page, and a reviews widget on pages that had no reviews.
What we built
A system that scores the catalog, ranks what’s wrong, fixes it with AI, and pushes the result to the store — with a person approving every published change.
Scoring is spelled out rather than mysterious. Products are scored on four content checks — title length, description length, enough words on the page, and how many images have alt text — plus thirteen keyword checks covering where keywords appear, how often, how the headings are structured, and the web address. Every threshold is a setting you can change, not a number buried in the code, and checks that don’t apply are dropped from the total rather than scored as zero, so a product with no images isn’t punished for missing alt text.
Twenty named problems are ranked by how much they matter, and each carries two separate limits: which fields the AI is allowed to write, and which failing checks it’s allowed to see. Those limits exist because five different problems all rewrite the description, and one shared limit made “fix all” quietly rewrite everything.
The AI works against the store’s own verified data, with a list of keywords it must keep so an existing ranking survives the rewrite, and a final check that strips out any quote it couldn’t have taken word for word from what it was given. The specification table can only contain facts that were provided. Nothing invented gets published.
Two supporting pieces earn their place. Duplicate detection compares the title as it actually appears, falling back to the product name when the SEO title is blank, which is the only way to catch the duplicates that matter. And content-gap discovery joins keyword data against thirty days of Google Search Console figures, then checks that it isn’t recommending an article that would compete with a page the store already ranks for.
The result
All 916 pages are scored and re-scored, and the moment an item changes its old score is thrown away, so a re-check never measures against a stale page.
On the store itself, an independent audit showed real, checkable movement. The product page’s layout shift dropped from 0.221 to 0.006 — a 97% improvement — taking its performance score from 77 to 86 in a single verified fix. The Lighthouse SEO score is 100 out of 100 on every page type. Overall speed across product, collection and home pages moved from the high seventies into the mid eighties, against a platform minimum of 60.
Google Search Console tells the slower story: 923 of 1,187 submitted pages indexed, average position improved by nearly two places, and the AI-written blog section growing 41% in clicks — the only section growing at all.
Why it holds up
- API limits are handled properly. Throttling arrives dressed up as a success with an error tucked inside it. The system spots that, works out how long to wait from the platform’s own numbers, and respects the wait it’s told to take, with a thirty-second cap.
- Only one process runs the scheduled jobs, decided through the database, so publishing, data pulls and snapshots can’t fire twice no matter how many copies are running.
- Nothing hangs forever. A job that dies is marked failed rather than left running, stale jobs are swept up, and a failed analysis stops before the paid AI call whose output would be thrown away anyway.
- 69 tests on the core logic — link classification, media specs, mention linking and candidate selection — deliberately kept free of database and network.
INSIDE THE SYSTEM
What it actually looks like
We had four hundred products with no meta description and no realistic way to write them. What sold me was that it shows you the score and the reason before it changes anything, and I still press the button.
NEXT
Related work
Stop overselling across every storefront
Two customers bought the last one within an hour of each other, on two different stores, because neither store knew the other had already sold it. Somebody had to phone one of them and apologize.
Read the case studyAdd a product once, everywhere
To add one new product, somebody typed the same fifty-eight details into every back office and every storefront, with different category codes in each, and a calculator open for the price ladder.
Read the case study