All work
ContentOnline shops with a large catalogue2026

The copy machine that follows the SEO markup

Every text needs a brief: phrases, headings, length. Usually an in-house writer turns it into copy. Instead: a machine that keeps every text lined up with the SEO markup itself.

Outcome

  • Text for a brief is ready in minutes instead of days of waiting
  • Key phrases, heading structure and length are checked automatically
  • The result comes back in the same .docx the brief is written in, in both languages
  • The specialist just sends a file in Telegram and picks up the finished one
Role
Full cycle: spec, build, deploy
Time it took
2 weeks

The problem

In shops with a large catalogue, half the process usually already works: search specialists regularly prepare a brief for the copy on a category page and the product cards inside it, with key phrases and heading structure. What is missing is someone who sticks to that markup every single time, so shops go looking for an in-house writer.

The task is routine in shape but not mechanical: a person gets tired and occasionally shifts a heading or drops a key phrase. A machine has no way to forget the markup.

What I built

The system reads the brief in the format they already write it in and returns finished text in the shop's format. The specialist sends a brief and gets the result in minutes, instead of waiting for a person to free up.

When it fits

  • Search specialists write the brief, but there is nobody to write the final copy. Every brief waits in a queue for a copywriter to free up.
  • The same format repeats hundreds of times. A person gets tired and somewhere shifts a heading or drops a phrase.
  • Publishing needs a check, not a straight line to live. There has to be a state between "done" and "visible to shoppers".

Rules matter more than the model

There is one temptation here: ask the model to "write a good description" and take whatever comes back. That produces text which looks fine as a single specimen and falls apart across hundreds: every one with its own rhythm, its own headings, its own length.

So the rules are strict and live outside the code. The structure is fixed, the length is capped, and the list of banned phrasings matters no less than the list of required ones. Every finished text is checked before it is handed over, and if a block went missing or the length ran over, it gets rewritten. That is cheaper than proofreading the catalogue by hand after upload.

Why the last word stays with a person

Copy goes into the shop as a draft, and a person publishes it. In older shop platforms, saving a field often means "live" immediately, with no intermediate state. So the intermediate state lives on our side: generated, awaiting approval, published.

The access needed is narrow: catalogue only. Orders, payments and customer data are not touched by this work at all, and it has no business seeing them.

Common questions

Can the system write text that fails the check? It can generate a draft that fails, but it never ships one: every finished text runs through the structure, length and banned-phrasing check before it goes out.

Who publishes the final text? A person does. Copy always lands in the shop as a draft, and saving a field never means "live" by itself.

Stack

  • Python
  • LLM
  • SEO
  • Telegram

Got a similar task?

Describe it in two sentences. I'll tell you if it can be automated and roughly what it costs.

Message me on Telegram