AI Catalogue Content: Translations, Descriptions and SEO Texts Written From the Product’s Own Facts

A catalogue of thousands of technical products arrives in one language, with uneven descriptions and no SEO texts. The hub behind the Ezeden store fills the gaps with AI - but only from facts the catalogue already holds, at a price a manager has seen, and with a person approving what matters.

The Challenge

The Ezeden store sells in three languages, but almost everything reaches its master catalog in one. Product names, descriptions, characteristics and their values, category and brand texts - each needs two more versions. Many descriptions are weak or describe the brand rather than the model, most pages have no SEO title or meta description of their own, and a lot of technical data sits in manufacturers’ PDFs instead of in the product card.

By hand this is months of copywriting; with a careless AI model it is invented dimensions, broken model codes and an unexpected bill. The goal was an AI layer that does the volume inside firm rules: it writes only from the facts it was given, never overwrites a person’s work, and every run has a price before it starts.

Catalogue Translation Into Three Languages

The hub keeps a register of what is written in one language and missing in another - products, categories, brands, characteristics, values and content pages - and the translator works through it.

The shop’s own glossary travels with every request, so a technical word is translated the same way across the whole catalogue. A phrase such as “stainless steel” appears under dozens of characteristics; translation memory means it is translated once and reused, and a translation a manager accepted always outranks a machine one. A text made only of codes, numbers and units, such as “33.5 mm”, is copied as it is, without a call where none is needed.

Every answer is checked: model codes, numbers and the HTML tags of a description must all survive the translation, and an answer identical to its source is flagged. A translation that fails goes to review instead of to the shop.

A person reviews where it matters. Russian always waits for a manager. English is written automatically, marked as machine translation and never sent to marketplaces. In each category the first translation is reviewed, and the rest of that category waits behind it, so one decision covers many products.

The translator fills empty fields and never overwrites: a field that already has text at the moment of writing is left alone, so a run is safe while a manager edits the same products.

Every bulk job is a run with a price. Before it starts, the manager sees how many texts it covers, how many the memory already knows, the approximate cost and how much will wait for review. A run above a set amount waits for confirmation. The manager can choose Translate immediately at full price or Slower but cheaper: the run goes to the AI vendor’s batch service at half price and the answers arrive within 24 hours.

A nightly sweep fills what is still missing, and an import that brings new products starts its own run, so the backlog does not build up again.

Descriptions From the Card’s Facts

A manager asks for a new short and full description - on one product or over a selection. There is no automatic rewrite on import, because at that moment a card’s characteristics and documents are still arriving.

The hub collects a fact sheet: article, EAN, brand, category path, name, and every characteristic with its value and unit. A product with too few facts is skipped with a reason rather than padded with invented text. The model writes from that sheet, and the same sheet is then used to check the answer in code:

  • a number the sheet never contained - a width, a capacity - is flagged;
  • a model code or technology name that is not on the sheet is flagged;
  • an answer in the wrong language, a text that is too long or too short, and disallowed markup are flagged.

A flag is a warning for the reviewer, not a silent deletion: every description waits for a manager. An accepted text is marked as written by AI, the history records the model and the prompt version, and the field becomes local, so the next import cannot undo it. The text is written in the main language and then translated through the same path, glossary and memory included. Prices and stock levels cannot reach the AI at all: the code of the AI layer is not allowed to use the pricing or stock modules, and a test enforces it.

SEO Titles and Meta Descriptions for Thousands of Pages

The same rule - facts only - applies to the two texts a search engine and an AI assistant read first. Products, categories, brands and filtered landing pages each have their own fact list: a category knows its subcategories, its main brands and the characteristics people filter by; a brand knows its country and categories. Counts are never used, because “120 sinks” is wrong tomorrow.

Each title and description is checked: codes and numbers must come from the facts, the language must be right, the length must fit (30–60 characters for a title, 70–160 for a description by default), and a title already used by another page of the same kind is flagged as a duplicate.

Automation only fills empty fields; a text a manager wrote or locked is never replaced. Runs are priced and confirmed like translations and can go in batch at half price. On a single page, one button writes both texts in every language at once, with the price shown first.

Specifications From Manufacturer PDFs

Data sheets and manuals already sit on products as documents. On demand - from a product’s Media tab or as a bulk action - the hub reads a document’s text and proposes values for the characteristics the product’s category allows, and only those.

  • Every proposal comes with the page and the quote it was read from, so a manager can check it in seconds.
  • Values are converted into the characteristic’s own unit; a unit the hub does not know is flagged, not guessed.
  • A value must match the characteristic’s list of allowed values; the model cannot add new ones.

Nothing is written without a manager. Reading every PDF automatically on arrival is available as a setting, but it is off by default: a long manual costs more than translating a name, so it is a budget decision. A scanned document without a text layer is reported as such.

Accuracy and Cost Under Control

Each AI function - translation, descriptions, SEO, parameter extraction - can use its own model and is measured on its own control set; for translation it is built from texts people wrote in both languages. A manager compares models side by side by accuracy and cost per sample, or blind, without their names, and sees how often the first translation in a category is rejected.

Spending has fixed limits. Without a monthly budget there is no AI, and there is no unlimited mode: when the month’s budget is spent, translation runs pause and continue later from where they stopped. Usage is broken down by feature, model and origin, so it is clear which run or which manager made the calls. Alerts go out when a day’s spend jumps well above the usual level, when the month approaches its budget, and when the AI provider’s account runs out of credit.

Tech Stack

- Hub: Laravel 13 + Inertia + React 19 + Ant Design
- AI: Anthropic Claude, a model per feature; batch API for half-price runs
- PDF text: smalot/pdfparser (text layer, no OCR)
- Background work: Laravel Horizon queues on Redis 7
- Data: MySQL 8.4

Result

The catalogue gets its missing languages, better descriptions, SEO texts and specifications without a team of copywriters - and without giving up control. The AI writes only from facts the catalogue already holds, checks in code catch invented numbers and broken codes, a person approves what reaches customers, and every run shows its price before it starts.