| Item | Size | Fit | Listed | Sold | Days | Watch | Outcome |
|---|
| Item | Size | Listed | True age | Price | Views | Seen | Watch | Read |
|---|
Not built yet. Nothing in the corpus carries listing descriptions
today — neither GetMyeBaySelling nor the Browse item call returns the
body text, so there is nothing to audit against until it is fetched.
A pricing guide built entirely from your own selling history — every sale across eBay, Poshmark, Depop and Etsy, plus everything currently listed. Paste a generated title into the box on Price a draft and it finds what comparable garments actually fetched and suggests a list price.
It is not a market research tool. It never tells you what a garment is worth in general, only what your stock has sold for. That is the point: it is experience written down, not a guess.
Paste the whole nifty title. Do not trim it — the grammar is what the app reads:
[Era] Brand [Model] Type Gender Size Colour [features]
The gender marker anchors everything: brand and item type are read to its left, size immediately to its right. Press / from anywhere to jump to the box, Esc to clear it.
Measured by stripping parts out of 300 real titles and watching the suggestion move:
| Part of the title | Moves the price | Why |
|---|---|---|
| Brand | 10.7% | Decides which pool of comps is used at all |
| Item type | 6.9% | Same — it builds the pool |
| Size | up to 14% | Filters the pool, and drops itself if that leaves under two comps |
| Gender | 3.7% | Gates everything — men's XL and women's XL are different markets |
| Colour, material, fit, era, features | 4.0% | All of them together. They only re-rank inside the pool |
So the four structured facets do nearly all the work. If a number looks wrong, check that the brand and type were detected correctly before anything else — the detected values are printed under the box.
Everything live, oldest first. Age is measured from the first time the SKU was listed, not the current listing — the relist tool recreates listings nearing 90 days, which resets eBay's own clock. A garment sitting eight months would otherwise read as three weeks old.
The tiles double as filters. Read shows views, watchers and impressions where eBay reported them: live 60+ days with no watchers is the strongest "something is wrong" signal available — usually price, photos or title.
Daily revenue, net of platform fees. Pick a range, pick what to compare against, pick a platform, and click any day to list that day's orders.
Things costing money right now. The red banner only appears for the ones where a buyer can order something you cannot send.
Mark fixed hides a row once you have dealt with it. That is saved for everyone, so what one of you clears the other sees, on any device. Nothing is deleted — the count stays and one click brings them all back. Most clear themselves anyway once the listing is ended and you next sync. The same applies to the specifics audit and the stale worklist. If the page ever cannot reach the server it says so and keeps the mark on that device only, so a click is never lost.
| Source | Gives | Limit |
|---|---|---|
| eBay Sell API | Sold orders at the true item price, cancel status | Reaches back 90 days only |
| eBay Trading API | Live and ended listings, watchers, views | Needs a pasted token, ~2 hours |
| nifty.ai sales export | Every sale on every platform, plus fees | Reports some cancelled orders as completed |
| nifty.ai inventory export | What is physically still in stock | No platform, no price |
| eBay Browse API | What other sellers ask | Asking prices only — never used in the suggestion |
Export from nifty, then run one command. Neither import needs a token or the internet.
npm run daily
That picks up the newest export in your Downloads folder, merges sales and inventory, and rebuilds this page. Overlapping exports are safe — re-importing the same year merges nothing, so export whatever range is easiest.
Then weekly, with a fresh eBay token pasted into .env.local:
npm run refresh
That is the only part that needs a token. It refreshes live listings, watchers and cancellations — and it is what keeps the Issues checks accurate, because they compare against the last listings snapshot. Skip it too long and those checks go quiet rather than wrong.
npm run daily refreshes sales from the nifty export and
rebuilds, but it does not talk to eBay — only npm run refresh does, and
that needs a fresh token.