Skip to content
Anton GoncharovAI systems developer

Web app · marketplaces · moderation check · unit economics

Product listings for WB and Ozon

Suppliers send descriptions any old way: “1000 gr”, “BESTSELLER!!!”, a barcode with a typo, square photos saying “SALE”. A content manager rewrites every listing twice — Wildberries and Ozon have different limits, reference lists and photo requirements — and errors only surface after moderation rejects them. Here the agent builds both listings at once and shows everything that won’t pass before upload.

Scenario: Zerno coffee roastery — fictional: six products from whole-bean coffee to a mug, four of them with problems. You can add your own product.

Demo screenshot: Product listings for WB and Ozon

Open the demo

Best on a computer: the editor, checks and preview are side by side. On a phone you see the product list and the listing one after another.

The app runs in your browser: nothing is sent to a server.

What the demo shows

  • Parsing the supplier’s text: category, country, weight, roast, grind, taste, material, color, box dimensions and barcode

  • Titles follow each marketplace’s formula: up to 60 characters and no brand on WB, brand and attributes on Ozon, no repeated words

  • A description with search keywords and their frequency; keywords can be toggled, and reach is recalculated instantly

  • The agent cuts harmful keywords itself: someone else’s trademark, “for espresso machines” on a light roast, “for cezve” on a medium grind

  • Attributes are mapped to marketplace reference lists: “graphite” becomes “gray”, spelling is normalized for WB

  • Evaluative words — “bestseller”, “the best”, “sale” — are removed from the text with an explanation

  • Moderation check: required fields, the EAN-13 check digit, photo proportions and size, text on the main photo

  • “Prepare photos” — a 3:4 900×1200 canvas on a white background, and the text leaves the main photo

  • Unit economics: commission, logistics by box volume, acquiring and tax, a recommended price for the target margin

  • JSON for the Wildberries Content API and Ozon Seller API, plus a summary of all products in Excel

How to try it

  1. Open the “Ethiopia” coffee

    Both listings are ready to upload: the agent read “1000 gr” as 1 kg, split the taste into attributes and wrote a description with keywords.

  2. Look at the mug

    Square 800×800 photos and “30% OFF” on the main one — WB won’t accept it. Press “Prepare photos”, then “Set price” — the margin reaches 25%.

  3. Fix the dripper

    The agent removed “BESTSELLER!!!” itself and turned off the “hario v60” keyword because it’s someone else’s trademark. A barcode typo remains: change the last digit to 1 — WB will accept the listing, and Ozon will ask for a white background on the main photo.

  4. Fill in the grinder

    WB is missing the required “Package contents”, while Ozon doesn’t require it — switch tabs and compare.

  5. Edit the text

    Change the title or description by hand — the checks are recalculated, and a button restores the agent’s version.

  6. Add your own product

    “Add product” — ready examples or your own text. For a product without a category, the agent asks you to pick one manually.

  7. Export

    At the bottom of the listing there’s JSON in the marketplace API format; in the header, a summary of all products in Excel.

No paid neural networks

Listings are built by rules: parsing the supplier’s text, title and description templates for each marketplace, value reference lists and moderation checks. In a production project the text is written by a language model, while limits, reference lists, barcodes and economics stay in code — the model doesn’t decide whether a listing passes.

The demo runs without OpenAI, YandexGPT or GigaChat API keys. Wherever a production system calls a model, there’s a local stub with the same interface — so the demo is free, always available and never makes things up.

What a production project adds

  • Texts are written by a language model (GPT, Claude, YandexGPT or GigaChat) from the parsed facts and marketplace rules
  • Category and attribute reference lists from the Wildberries Content API and Ozon Seller API, updated on a schedule
  • Search keywords and frequencies from marketplace analytics or services like MPStats
  • Listings and prices uploaded via API, with moderation statuses returned to the content manager’s spreadsheet
  • Products from 1C, MoySklad or supplier price lists; photos processed on the server

Stack

  • React 19
  • TypeScript
  • Zustand
  • Vite
  • Tailwind CSS

Developer’s comment

Anton Goncharov

AI systems developer · Python

For business

  • One supplier export becomes listings for both marketplaces in minutes rather than a content manager’s day of work.
  • Moderation rejections are caught before upload: the barcode, photos, required fields and forbidden words are checked immediately.
  • The price isn’t set by eye: you see how much commission and logistics will eat and how much is left from each sale.

For developers

  • A listing is a pure function of the product, the marketplace and manual edits: editing a field recalculates checks, economics and JSON without side effects.
  • Marketplace rules are data, not code: limits, reference lists, color synonyms and tariffs live in one schema and are covered by tests.
  • Only the text is entrusted to the model: the barcode is checked by its check digit, values against the reference list, length against the marketplace limit.

Tips

  • Tip 01

    Pull attribute reference lists from the marketplace API rather than typing them by hand: they change, and a listing silently gets rejected.

  • Tip 02

    Store product facts separately from texts: then a listing for a new marketplace can be rebuilt without rewriting the description.

Want the same for your business?

Tell me about your task — I’ll tell you what from the demo fits, how long it will take and what I’ll need from you.

Other demos in this section

All demos
  • Web app · agent diagram

    live

    AI agent builder

    A support agent is assembled from blocks: intents, a knowledge base, API calls, checks and operator handover. Send a customer message and watch its path light up on the diagram step by step.

    • React
    • TypeScript
  • Web app · question → SQL → chart · PostgreSQL in the browser

    live

    AI data analyst

    A manager asks in plain words — “revenue by channel for Q3”, “which customers stopped ordering” — and gets SQL, a chart, a table and a conclusion. The sales database is real PostgreSQL running right in the browser.

    • React
    • TypeScript
  • Web app · risks against a standard · Word with tracked changes

    live

    Contract review

    A counterparty sent their own contract — the review compares it with the company’s standard, highlights risky clauses, explains why they’re dangerous and suggests wording. The output is a Word file with tracked changes and a disagreement protocol.

    • React
    • TypeScript
  • Web app · tasks from chat · kanban · evening digest

    live

    AI agent in a team chat

    People write in the team chat as usual — “Pete, fix the price list by Friday”. The agent creates a task on the kanban board, moves it through “On it” and “Done”, reschedules and reassigns tasks, reminds about overdue work in the morning and sends a digest in the evening.

    • React
    • TypeScript
  • Web app · shared inbox · CRM · protection against bank detail fraud

    live

    AI inbox triage

    The agent reads the sales team’s shared inbox: it understands what each email is, extracts fields, creates a deal, a ticket or a task in the CRM and drafts a reply. An invoice with new bank details or a phishing email is caught before anyone pays or clicks a link.

    • React
    • TypeScript
  • Web app · meeting transcript · minutes · kanban

    live

    Meeting minutes → kanban tasks

    The agent reads a stand-up transcript and builds the minutes: decisions, tasks with an assignee and deadline taken from live speech, risks and open questions. Tasks go to the kanban board, and at the next meeting the agent moves them through statuses itself.

    • React
    • TypeScript
  • Web app · personal data · healthcare · analytics

    live

    Anonymizing data before it reaches a neural network

    The agent finds full names in any grammatical case, phones, passports, SNILS numbers, cards, addresses and diagnoses in emails and transcripts, replaces them before sending to an external neural network, and restores its answer to the real data on your side. It anonymizes a patient table for analytics so that nobody can be identified.

    • React
    • TypeScript
  • Web app · automation · amoCRM, 1C, Telegram

    live

    An n8n-style automation pipeline

    Three working scenarios of a furniture factory on a canvas, as in n8n: website leads go to amoCRM and to managers by lead temperature, YooKassa payments go to 1C with retries and an error branch, and every morning there’s a digest for the director. Trigger an event and watch records flow from node to node; the workflow can be edited and exported to real n8n.

    • React
    • TypeScript
  • Web app · multi-agent system · content

    live

    A team of AI agents for content

    Six agents prepare a publication from a brief: the editor-in-chief plans, the researcher finds facts in the knowledge base, the writer writes, the fact-checker and editor send the draft back for revision, and the SMM agent adapts the text for Telegram, VK, a newsletter, a blog and a carousel. You see the agents’ entire conversation, every edit and what would have been published without checks.

    • React
    • TypeScript
  • Web app · HR · scoring and chatbot

    live

    CV screening and an interviewer bot

    Twenty CVs for three vacancies are analyzed in seconds: employment periods, experience, salary and city, match with the requirements and a quote from the CV for every “yes” or “no”. What’s missing from the CV is clarified by a bot: it asks only the missing questions, follows up on vague answers and books an interview. Gender, age and family are left out of the assessment.

    • React
    • TypeScript
  • Web app · RAG · neural network in the browser

    live

    Search sandbox

    How a support bot finds an answer in a knowledge base: documents are cut into fragments, search runs by keywords, by meaning or as a hybrid, and every fragment found shows why it ranks above the others.

    • React
    • TypeScript
    • In-browser neural network
  • Web app · metrics · CI thresholds

    live

    Bot quality evaluation

    Before a new bot configuration is rolled out, it’s run against control questions. Here you can see how that works: hit@1, hit@3, the share of correct refusals, a comparison with production and a red banner if CI would block the release.

    • React
    • TypeScript
    • In-browser neural network
  • Web app · AI security · vanilla JS

    live

    Prompt injection defense trainer

    Try to trick a support bot: coax out a secret promo code, extract the system prompt or get a refund without grounds. Six defense levels, direct attacks and attacks via emails, reviews and the knowledge base, and a check log based on the OWASP Top 10 for LLMs.

    • Vanilla JS
  • Web app · AI economics · vanilla JS

    live

    AI bot cost calculator

    How much a bot will cost per month on GPT, Claude, YandexGPT, GigaChat or your own model on a rented GPU. Token-based calculation, all models compared on a chart, tips on paying less, and a real o200k tokenizer right in the browser.

    • Vanilla JS