A reusable product-catalogue categorization workflow
A recurring catalogue job needs the same constraints each time: every product ID must return once, protected prices must stay exact, and categories must come from the approved list. These checks can catch structural errors while leaving the meaning of a category for human judgment. This guide uses deliberately constructed synthetic CSVs, not an AI product benchmark or a claim of human-reviewed output.
The worked example
Three products have IDs 0001, 0002 and 0003. Prices include a currency/comma string and a leading-zero string; neither is normalized. A supplier_note column is private to this example’s local workflow and is omitted from the AI export. The declared categories are Accessories, Home and Stationery. Product names are protected as well as prices.
Inspect original data and declared rules
product_id,name,price,category,supplier_note 0001,Cotton tote,12.50,,Internal supplier terms 0002,Ceramic mug,"€9,50",,Do not share notes 0003,"Café notebook, blue",0007.00,,Local notes only
{
"kind": "moyan-product-catalogue-rules",
"formatVersion": 1,
"jobName": "Synthetic shop categories",
"revision": 1,
"requiredColumns": [
"product_id",
"name",
"price",
"category",
"supplier_note"
],
"idColumn": "product_id",
"categoryColumn": "category",
"priceColumn": "price",
"protectedColumns": [
"price",
"name"
],
"exportColumns": [
"product_id",
"name",
"price",
"category"
],
"allowedCategories": [
"Accessories",
"Home",
"Stationery"
]
}1. Define the job before exporting
Use a meaningful job name and a positive whole-number revision. Select the required source schema, a unique product ID column, the editable category column, the price column and any other protected fields. The source must already include these columns, including an empty category column if labels have not been assigned. Exact strings are used: 0001 is different from 1, and €9,50 is different from 9.50.
Increase the revision when changing rules. Download the rules JSON for reuse, or explicitly save one rule set in the browser. That optional slot stores job names, column names and category labels, never the catalogue. Load it only by request and delete it on shared devices. Format 1 imports reject unknown properties, unsupported versions, invalid references and duplicate or empty list values.
2. Minimize, preview and manually hand off
The ID and category columns are mandatory in the export. Add only the descriptive fields needed for categorization. You may keep price local; if you do, its returned-value check is not checked, and adding an unrequested price column to the return fails the schema rule. In this worked example price is included to demonstrate exact protection.
Preview the selected columns and values before downloading. Removing supplier_note reduces what is shared but does not guarantee privacy: names and descriptions can contain sensitive data too. There is no general personal-data detector, anonymization or compliance assessment. Confirm your authority and your organization’s policy before using any external tool.
The export quotes fields and preserves their strings; it does not silently prefix formulas, reinterpret dates or convert currency. Formula-like strings are flagged and require an extra acknowledgement before exact export. Quoting alone is not spreadsheet-formula protection. Omit unnecessary risky columns or use suitable Text import settings; no formulas execute in this checker.
Take the file to your own approved AI tool manually. Ask for one row per existing ID, unchanged headers and protected values, and only allowed category labels. This website does not open or call that tool, use credentials or spend website AI credits. Any external service’s retention and pricing remain separate.
3. Verify the synthetic flawed return
Load the worked example in the checker, preview its export, then verify the preloaded flawed return. There are four returned rows instead of three. IDs 0001 and 0003 are missing; 1 and 9999 are unknown; 0002 is duplicated. “Other” is not an allowed category. The duplicate ID makes protected-value matching ambiguous, so protected checks remain not checked rather than guessing which row belongs to the original.
Inspect the deliberately flawed return
product_id,name,price,category 1,Cotton tote,12.50,Accessories 0002,Ceramic mug,9.50,Other 0002,Ceramic mug,"€9,50",Home 9999,Unexpected product,1.00,Home
These errors were deliberately constructed for demonstration. They are not a measured result from any AI model. If a returned file changes prices but retains unique correct IDs, the price protection check fails and shows exact before/after values. Missing or unexpected headers fail the schema check. Duplicate original IDs prevent export in the first place.
4. Repeat without inventing a quality score
Keep the flawed run in session memory or download its run evidence and explicitly import it later. Load the synthetic corrected return and verify again under the same source and full rule set. Structural checks pass, but category meaning remains not checked: even an allowed label can be wrong.
Inspect the structurally corrected return
product_id,name,price,category 0001,Cotton tote,12.50,Accessories 0002,Ceramic mug,"€9,50",Home 0003,"Café notebook, blue",0007.00,Stationery
Comparison displays whether the original file text, job label/revision and complete rule settings match. Different source data or settings are different contexts, even when the revision label was reused. Counts describe checks only, never model quality or improvement. Imported evidence is recomputed from the included inputs and is not authenticated provenance.
Evidence and local-data boundaries
Full findings JSON contains exact issue locations and cell differences. Run evidence JSON contains both complete CSVs—including columns omitted from the AI export—plus rules and check summaries. Keep those downloads private. The screen previews the first 50 issues per list and 500 characters per value; downloads preserve full findings. Reset clears working data and previous-run evidence. Explicitly saved rules require the separate delete action; downloaded files remain on your device.
CSV limits are 1 MiB, 5,000 logical records including the header, 100 columns and 100,000 cells per file. Column names must be at most 120 characters. Rules imports are limited to 64 KiB and run evidence to 16 MiB; each embedded CSV still has the CSV limits. The tool never updates a production catalogue or claims the original facts, category semantics or compliance are correct.
Try the product-catalogue workflow checker. For a simpler pair of files, use AI Work Check; for checking habits beyond CSV constraints, read Verify AI output.
