Catalog Change Guard: CSV Price, Stock & SKU Diff avatar

Catalog Change Guard: CSV Price, Stock & SKU Diff

Pricing

$2,000.00 / 1,000 completed catalog comparisons

Go to Apify Store
Catalog Change Guard: CSV Price, Stock & SKU Diff

Catalog Change Guard: CSV Price, Stock & SKU Diff

Compare two retail CSV or TSV feeds before publishing. Detect removed SKUs, large price changes, currency changes and stock loss. Get exact counts, a BLOCK/REVIEW/CLEAR result and up to 500 example findings. $2 per comparison, including platform usage.

Pricing

$2,000.00 / 1,000 completed catalog comparisons

Rating

0.0

(0)

Developer

JT Palms

JT Palms

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Catalog Change Guard

Catch unexpected price, stock and SKU changes before replacing a retail product feed.

Compare a baseline CSV/TSV with a candidate export. Get one JSON report containing exact totals, a BLOCK, REVIEW or CLEAR policy status, and up to 500 example findings. Designed for retail catalog workflows and feed automation. No shop credentials, external scraping, or AI API keys are needed.

Cloud-tested on Apify with valid and invalid inputs, budget limits and same-run restart checks. This is a new product; no uptime or error-detection guarantee is offered.

Example

Yesterday: two shirt variants at CAD 29.99, both in stock. Today: one variant disappears and the other is CAD 2.99. The report flags the removed SKU and the roughly 90% price drop, with BLOCK for the mass removal. The tool does not guess whether either change was intentional.

Inputs

Paste two complete feeds with these default columns:

id,price,availability
SHIRT-BLUE-M,29.99 CAD,in_stock
SHIRT-BLUE-L,29.99 CAD,in_stock

Use idColumn, priceColumn and availabilityColumn for other header names. Both snapshots must use the same mappings, delimiter, ID rules and scope. A partial export is not comparable to a complete export.

Accepted delimiters: comma, tab or semicolon. UTF-8 text, quoted cells and a leading BOM are supported. IDs are case-sensitive strings; leading zeros are preserved. Surrounding whitespace is stripped. IDs must uniquely identify products or variants. A Shopify product export with repeated handles is not accepted unless you supply a unique per-variant key and a compatible availability column.

Prices must be nonnegative decimal values, with up to 12 integer digits and 6 decimal places; an uppercase three-letter currency suffix is optional. Bare prices use the currency input, default CAD. Currency codes are checked for shape, not against the ISO register. Mixed currencies are not converted. A currency change on an existing ID is blocking.

Availability accepts in_stock, out_of_stock, preorder or backorder; capitalization and spaces are normalized. Duplicate IDs, malformed rows, missing columns and invalid values fail the input before the comparison event is charged. Failure logs do not print feed contents.

Limits: 20,000 product rows and 8 MiB of UTF-8 text per feed. No URLs, XML, Excel workbooks, automatic store connections, or scheduled fetching in this release.

What the report means

StatusMeaning
BLOCKAt least one configured blocking condition: empty candidate, too many removals, too much in-stock loss, a zero candidate price, or currency change.
REVIEWNo blocking condition, but a removal, large price change, or availability change away from in-stock needs review.
CLEARThese specific rules found no blocking or review condition. Informational changes may exist.

The default large-price threshold is at least 20% in either direction. Default mass-removal threshold is over 5% of baseline products. Default stock-loss threshold is over 50% of baseline in-stock products; removed in-stock products count as lost. Thresholds are editable.

Counts cover the complete accepted feeds. Detail examples stop at 500 and detailsTruncated explicitly reports truncation. A product can produce multiple findings; findings are not unique product counts. All details are deterministically ordered, starting with aggregate blocks.

CLEAR is not a guarantee of a safe upload or channel approval. This checks only mapped IDs, price, currency and availability. It does not verify images, product descriptions, inventory quantities, channel-specific policy, landing pages, tax or profit. The tool never changes a feed or connects to a shop. Integrations must stop on failed runs, missing reports or truncated detail if complete detail is required.

Automation

Pass beforeCsv and afterCsv from your existing feed pipeline via Apify's API. The dataset contains exactly one report per completed run. Gate your own next step on policyStatus, your business rules, and successful run completion. You supply the baseline and candidate every time; this Actor does not retain a shared baseline across customers.

Pricing

USD 2 per completed comparison, event catalog-audit, including platform usage in the event price. This is one event per report, not per row or warning. There is no separate Actor-start or dataset-item fee. Invalid input does not trigger this event. Set the maximum charge to at least USD 2; a lower budget produces no comparison report. Restarting the same completed run does not add another report or comparison event. Starting a new run is a new comparison. Check the Apify Pricing tab for the current price. No subscription or outside checkout.

Data handling

Only provide retail product data you are authorized to process. Do not include customer records, emails, orders, credentials or personal data. Unused columns are ignored during comparison but are still present in the original input submitted to Apify. Remove them before submission. The processor makes no external network requests; inputs and reports are stored in the customer's Apify run storage and subject to Apify account retention and access settings. Deleting a local copy does not delete Apify storage. Do not share run links containing confidential feeds. No feed data is used for model training by this code.

This product is not offered for real estate or property-related workflows. It is independent of and not endorsed by Shopify, Google or any sales channel. No paid support or consulting upsell.

Local verification

python3 -m unittest -v
python3 guard.py examples/risky-change.json --output report.json

The core uses only Python's standard library. The cloud entry point uses the pinned Apify SDK. See the operator's deployment record for cloud-test status; local tests do not prove platform billing.