Marketplace Sales Normalizer
Under maintenancePricing
from $300.00 / 1,000 sales report normalizeds
Marketplace Sales Normalizer
Under maintenanceTurn eBay, Poshmark, Mercari and Etsy sales-report CSV exports into one validated ledger JSON: exact amounts, fee breakdown, and every row's total price verified. No account access, no scraping - customer-owned exports only. Privacy by default: buyer PII never appears in output.
Pricing
from $300.00 / 1,000 sales report normalizeds
Rating
0.0
(0)
Developer
Andrew
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Deterministic conversion of marketplace sales-report CSV exports into one validated ledger JSON. No account access, no scraping, no LLM — customer-owned exports only. Privacy by default: buyer PII never appears in output.
Supported platforms
| Platform | Report | Status |
|---|---|---|
| eBay | Seller Hub orders report (81-column layout, incl. renamed legacy columns) | ✅ implemented |
| Poshmark | Sales report | ⏳ awaiting real sample export |
| Mercari | Sales report | ⏳ awaiting real sample export |
| Etsy | Orders CSV | ⏳ awaiting real sample export |
What it does per row
- Parses every money cell exactly (Decimal, never float) and dates to YYYY-MM-DD
- Recomputes the line total and verifies it against the stated Total Price —
every row is either
verifiedormismatch(both totals emitted, nothing invented) - Deduplicates repeated rows, sums exact totals, groups extra fees
- Rejects files it cannot verify: unknown columns, missing required columns, empty money cells, unparseable dates, bad quantities, schema drift
See CONTRACT.md for the complete fail-closed rules and output schema.
Usage
CLI:
$python -m msales.cli examples/synthetic/ebay_orders_sample.csv
HTTP (loopback only, optional bearer via MSALES_BEARER):
python -m msales.server &curl -X POST http://127.0.0.1:8787/normalize \-H 'Content-Type: application/json' \-d '{"content": "<csv text>", "platform": "ebay"}'
Apify
Actor input: {"content": "<csv text>", "platform": "ebay"}.
Pay-per-event charge report-normalized fires once per successful file only
when MSALES_CHARGE_ENABLED=1 (off by default).
Real-file validation
Synthetic fixtures cover the documented schema; real platform exports are the
acceptance gate. Drop your own exports into examples/real/ (never committed)
to validate a platform's descriptor before it ships.
Use from AI agents
Call via Apify MCP (search-actors -> fetch-actor-details -> call-actor)
or the REST/Python/JS clients. Always pass a per-run spend cap:
callOptions: {"maxTotalChargeUsd": <1.00>, "timeout": 120}.
Deterministic and fail-closed: errors like SCHEMA_DRIFT or UNSUPPORTED_*
mean the layout is unsupported - retrying will not help; surface the code to
the user. Agent skill covering this and 7 sibling actors:
https://github.com/ahf15811987-sketch/agent-skills