Photo + spoken description, transcribed and condensed on-device for free, used to seed LLM image tagging, optionally stickered and/or appraised with tokens — then sold and synced across PROSALE / EstateSail / TroveSnap by one QR code.
Seller photographs the item and speaks a quick description — hands-free, no form while walking the sale.
A local speech model (Whisper-class) turns the voice note into text on the device, offline — no API cost, works on spotty sale-site wifi.
The transcript is condensed into structured candidate fields (title, attributes, condition, asking price) and token-trimmed to fit the tagging model's prompt limit.
The condensed text seeds the image tagger, so tags are specific ("mid-century", "oak", "dovetail") instead of generic. Produces treasure tags, category, and marketplace fields.
Two triggers reach this step: the system flag from tagging above, or the seller's own suspicion that an item is worth more. The seller decides whether to spend tokens — the system only suggests, it never spends on its own.
Appraise → higher value confirmed? If yes: re-price + re-tag, apply a QR sticker, and route to auction / wishlist recovery; the result loops back into the record (and can re-flag it). Decline or "not higher value" → standard listing, revisitable anytime.
Apply a QR sticker — a pre-printed pack (blank code, binds on first scan) or print-your-own (code minted from the record). Bind = scan sticker → this item. Both synchronize to the account. Used selectively on items the seller knows can be auctioned later → item-level tracking from day one.
The candidate hits the review queue; the seller approves/edits. Only promoteInventoryCandidate() writes the canonical item — the QR code travels with it. Nothing publishes without approval.
The QR is the price tag and the buyer portal (scan → public Trove Go listing). Every hunter scan is an anonymous interest signal that gauges auction demand per item.
Whoever rings the sale — TroveSnap scan-PWA, PROSALE, EstateSail, or Square + manual — the item is keyed by its QR code, so a single itemized sold event flows back. No CSV guesswork.
Reconciled in real time. Sold → recovered-revenue analytics; unsold → disposition routing (auction export, wishlist recovery), informed by demand + scan-interest.
The same journey as a decision flowchart: decision diamonds, branch outcomes, loop-backs, and badges (needs research, needs approval, tokens, optional, review, buyer-facing, action). Split into two readable halves; a single-page overview is also available. Nothing goes canonical or public without seller approval; tokens are spent only on the seller's choice.
The QR code is the shared item identity that threads all three systems. TroveSnap owns the canonical record, demand, and disposition; the POS owns checkout. The code is the join key.
ts:ITEM (opaque — no price/data inside)inventory_status_events. Real-time where an API exists; CSV-import fallback matched by code otherwise (reusing existing reconciliation).
promoteInventoryCandidate() stays the single canonical writer, post-review.