AI Product Intelligence Engine
Pricing
from $0.50 / 1,000 deterministic check units
AI Product Intelligence Engine
Pricing
from $0.50 / 1,000 deterministic check units
Rating
0.0
(0)
Developer
Peter Tomko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Security
Limited permissionsShare
CatalogSentry — Product Feed Semantic Validator
What does CatalogSentry do?
CatalogSentry scans a product feed (CSV, JSON, or Google Merchant XML) and finds the issues that field-format validators miss: a title that says "256GB" while the description says "128GB," two SKUs with the same GTIN, a product missing its brand, or two "variants" in the same item group that are actually identical. Every finding is evidence-backed — it names the exact SKU, quotes the conflicting values, and recommends a fix — never a vague "this looks off" opinion. Run it on Apify with a feed URL or a small inline product list.
Why use CatalogSentry?
Inconsistent catalogs cost merchants marketplace suspensions, confused customers, and lost conversions. Traditional feed validators check that a field exists and is the right type — they don't check that two fields agree with each other. CatalogSentry adds that layer: deterministic, explainable checks on top of your existing feed, runnable on a schedule via Apify so drift gets caught before it reaches the storefront.
How to use CatalogSentry
- Point
feedUrlat your product feed, upload a file directly viafeedFile, or pass a smallproductsarray inline for testing. If your file's own column headers don't match our field names, setcolumnMappingtoo — no need to reformat the file first. - Pick which
checksto run (default: the 8 deterministic checks; 7 more are opt-in). - Run the Actor. Findings land in the default dataset; a summary lands in the key-value store.
- Review findings, fix the source data, re-run to confirm.
Input
| Field | Description |
|---|---|
feedUrl | URL of the feed to download. |
feedFile | Upload a feed file directly instead of a URL — resolves to a URL the same way feedUrl does. |
columnMapping | Map your own column names to our schema when they don't already match, e.g. {"Product Name": "title"}. Optional — most standard headers are already auto-detected. |
feedFormat | csv | json | google_merchant_xml. |
products | Inline product records instead of feedUrl — handy for MCP tool calls. |
checks | Which checks to run: missing_attributes, title_description_contradiction, duplicate_detection, variant_consistency, image_technical_qa, gtin_checksum_validator, thin_content_description, price_outlier_detector (all 8 on by default), plus 7 opt-in checks: semantic_cannibalization (deterministic, O(n²), with an optional AI-assisted embedding pass when configured), semantic_duplicate_detection / image_description_alignment / seo_keyword_gap / visual_brand_consistency / category_voice_consistency / translation_consistency (AI-assisted — no setup needed, just enable them). |
requiredAttributes | Attribute keys required on every product (for missing_attributes). |
targetLanguages | Required for translation_consistency — ISO codes to translate into and check for number drift, e.g. ["cs", "pl", "sk", "de"]. |
categoryVoiceBriefs | Required for category_voice_consistency — maps category names to a tone/positioning brief. A category with no brief is skipped, no cost. |
searchQueries | Real search queries from your site, e.g. [{"query": "red running shoes"}], for catalog-gap analysis. Persisted across runs — a gap is flagged only after showing up repeatedly. |
minDescriptionWords | Word-count floor for thin_content_description (default 10). |
minCategorySize / priceOutlierZThreshold | Tuning for price_outlier_detector (defaults: 5 products, z-score 3.5). |
maxProducts | Safety limit on feed size per run (default 5000). |
maxVisionProducts | Separate, smaller safety limit for the opt-in vision checks (default 50) — each costs one real inference call per product. |
maxEstimatedCostUsd | A hard ceiling on this run's projected billing, checked before any check runs. If exceeded, semantic_cannibalization's input (the one check whose cost grows with the square of catalog size) is trimmed to fit — other checks aren't auto-trimmed by this, bound those with maxVisionProducts or by disabling them. 0 = unlimited. |
maxFindingsPerCheck | Keeps only the highest-severity findings from each check, independently per check, up to this many — doesn't reduce cost, just keeps a noisy catalog's output focused. Nonzero values below 10 are raised to 10. 0 = unlimited. |
brandStyleBrief | Describe your expected product image style (e.g. "white background, studio lighting"). Required for visual_brand_consistency — leave empty to skip it. |
See .actor/input_schema.json for the full schema, and actor_input/demo--input.json for a
worked example with a capacity contradiction, a duplicate GTIN, a missing brand, and an
indistinguishable variant pair.
Output
Each dataset item is one finding:
{"type": "title_description_contradiction","severity": "high","sku": "SGS24-256","entity": "Samsung Galaxy S24 256GB","evidence": "title mentions capacity [262144.0] MB; description mentions capacity [131072.0] MB.","explanation": "Storage/memory capacity differs between fields describing the same product.","recommendation": "Verify the authoritative capacity and correct the inconsistent field.","confidence": "high"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data table
| Field | Format |
|---|---|
sku | text |
type | text |
severity | text (low | medium | high) |
evidence | text |
recommendation | text |
confidence | text (low | medium | high) |
Pricing / Cost estimation
Most checks are deterministic — no inference calls — so cost is driven entirely by feed size
and compute time. Enabling the optional AI-assisted check (semantic_duplicate_detection)
costs slightly more per product; no setup or external account needed on your end.
Tips
- Pass a small
productsarray while developing a new check before pointing it at a full feed. - Set
requiredAttributesto match your taxonomy's mandatory fields.
FAQ, disclaimers, and support
This is an early-stage tool, validated once end-to-end against a real 995-product public catalog
(not yet against a real customer's own feed). Eight checks are fully deterministic (no AI
inference call) and run by default. Seven more are opt-in: semantic_cannibalization is deterministic by default with an
optional AI-assisted embedding pass; semantic_duplicate_detection, image_description_alignment,
seo_keyword_gap, visual_brand_consistency, category_voice_consistency, and
translation_consistency use this Actor's own built-in AI-assisted detection — all off by
default, just enable them in checks, no configuration needed on your end. Open an issue in this
repo for bugs or feature requests.