I built an eBay draft tool that keeps each fact tied to its evidence.
The tool reads an item’s photo folder, filters sold comps, prepares an editable listing, and checks the approved values against the final eBay payload.
maximum strong comps kept for pricing
After identity and condition scoring
conservative price base
Before condition adjustments
maximum eBay title characters
Validated before approval
current production eBay output
Final live publication remains human
Each extracted fact keeps its source photo.
The folder contains the item photos, optional video, specs evidence, and the condition details the listing needs. The tool puts the main image first, the home-screen image second when present, and uses a deterministic order for the rest.
Vision reads the images at high detail. Focused passes can reread a sticky note or battery report. The prompt requires visible evidence and source labels. Unclear fields stay empty. Screen resolution cannot supply screen size, and appearance cannot supply product generation.
The operator edits the specs, title, description, condition, item specifics, price, shipping, and returns. Approval creates a snapshot and hash. Before the API call, the app compares the outbound values with that snapshot and blocks any drift.
The pricing code filters sold comps before calculating a price.
RapidAPI often returned a mix of the right product, accessories, parts, wrong configurations, and loosely related results. I asked the system to use the 10–15 closest matches and price from the 25th percentile.
The current scoring looks for full and compact model matches, meaningful model tokens, CPU, RAM, storage, generation, form factor, and condition. It penalizes parts and accessory mismatches. The app records p25, median, average, minimum, and maximum, then uses p25 as the conservative base before condition adjustments.
When live evidence is missing, the tool labels and uses an approved past decision or a heuristic.
eBay rejected an iPhone because Storage Capacity disappeared from the outbound payload.
An iPhone 11 Pro Max repeatedly failed with “The item specific Storage Capacity is missing.” The review screen showed both fields. The posting code dropped Storage Capacity before building the final payload.
I added the phone-specific field, preserved approved item specifics during posting, and normalized mobile storage in one place.
Validation now inspects the outbound payload immediately before the eBay API call.
Failed items keep their work and error record.
Dry run supports safe testing. Interactive review keeps approval with the operator. Experimental autopilot checks deterministic blockers such as missing identity, weak screen-size proof, a no-drive contradiction, invalid price, unresolved shipping, and thin sold-comp evidence.
An interrupted run can resume compatible items. A posting failure keeps its reason and audit record. SKU conflicts have an explicit recreation path. Manual corrections enter a review queue before they can influence later listings.
What remains unmeasured or unresolved.
- The production eBay path creates drafts, and autopilot remains experimental.
- Vision and OCR can miss or contradict evidence.
- Some pricing falls back to memory or heuristics when live comps are unavailable.
- Current production volume, extraction accuracy, exception rate, rejection rate, revenue impact, and minutes saved are unknown.