Localize your store's catalogue, at catalogue scale

A catalogue is not one piece of text. It is thousands of titles, descriptions and attribute values that each have to read naturally in the target market, use the same brand terms every time, and match whatever a person has already approved. Quravin treats the catalogue as bulk work: batch runs that carry thousands of items at a time, a glossary that goes into every run with your text, and approved translations that stay put.

Why catalogue translation stalls

Translating one product page takes a few minutes. Translating eight thousand of them is a different job. The work arrives in bulk, the same brand terms appear on nearly every item, and next month's re-run has to agree with what shipped this month or the listings drift apart. Most teams end up managing it in a spreadsheet, with no record of which strings a person already signed off.

  • Thousands of short strings, not a handful of long documents
  • Brand and category terms that repeat across items and must not vary
  • Re-runs and edits that have to agree with what is already live
  • No single place recording which wording a person approved

Send the catalogue in batches, not one item at a time

Send a list of items in one call instead of firing one call per product. Quravin fans that call out into per-chunk child tickets that run in parallel, and returns one result per input item, in the order you submitted them, so writing results into your store is a walk down two lists rather than a merge on text. One batch takes up to 5,000 items, so a large catalogue goes as several batches. Batch is an API capability that is turned on per application. Chunking, billing and what happens when a chunk fails are covered on the batch translation page at /features/batch-translation.

Your wording goes into every run

Load a glossary of the terms you care about: product line names, material names, the words your category pages are built around. Every glossary term that appears in the source text is matched and handed to the run along with it, so the model works from your wording instead of picking its own. That is guidance given to the run, not a check applied to the output afterwards. Where you need the wording settled rather than guided, approve it once — an approved translation is returned outright, with no model call.

An approved translation never reverts

When someone corrects a translation and approves it, that wording is stored as an override. Later runs on the same source text return the approved text outright, with no model call at all. The correction holds through re-runs, catalogue re-imports and prompt changes, so review effort accumulates instead of being spent again.

What a run costs

Billing is per item, and an item is one string translated into one target language — not one product. A catalogue of 3,000 products with two translatable fields each, going into five markets, is 30,000 items, which is several batches rather than one. Nothing about that is opaque: you can count the bill before you send it. Items answered by an approved override are refunded, so the wording your team signs off on lowers the bill on every later run. Caching works underneath that: when the same source text comes round again, the result is served without a fresh model call, and that saving is priced into the per-item rate. Current rates are on the pricing page.

FAQ

How large a catalogue can I send at once?

A batch takes up to 5,000 items, where an item is one string in one target language. Larger catalogues go as several batches; each batch is independent, so you can run them in sequence or side by side.

Do I pay again when I re-run a catalogue I have already translated?

Every run is billed per item, including the items the cache can answer. What does come back is the approved overrides: an item answered by one is refunded, so the strings your team has signed off on stop costing you. The cache saving is already reflected in the per-item rate.

Can I stop the model from renaming my products?

Put the product and brand names in the glossary: whenever one appears in the source text, it is handed to the run with your wording attached, which is what keeps names consistent across a catalogue. For a name that must never move at all, approve the translation once — from then on that string is returned as approved, without a model call.

How do the results get back into my store?

A batch returns one result per input item, in the order you submitted them, so your importer walks its own list and the result list together and never has to match on text. Keep your own mapping from list position back to the product and field the string came from.

See pricing