Every feature with its state and owner — and, where the team asked for it, the review it is waiting on.
Structured intake for watches, handbags and cars produces a report with a central estimate, conservative low, IQR, coverage stats, an AI-drafted executive summary, and a numbered citation for every retained comparable.
One-click PDF of any ready report via headless Chrome, print-tuned layout, rate-limited per user.
Every search fans out across eBay, Bring a Trailer, Phillips, Sotheby's, Christie's, Bonhams, TheRealReal, Hagerty and Tavily-backed long-tail sources, with live progress streamed into the report screen.
Haiku judges every candidate against the queried asset; rejects are disclosed under the comp table with one-line reasons and can be re-included by a reviewer in one click.
Photos uploaded at intake become reference images; the engine compares each comp's listing photo against them and rejects visual mismatches (wrong body style, accessory listings, scale models).
Listing photos on every comp row where the source provides one, click to enlarge, with a category tile fallback for auction-house sources without images.
Comps sold as new, sealed or unworn are excluded before stats are computed — on by default per LAC's reseller policy, toggleable per report. Drops are disclosed with reasons.
Loan values size off the conservative low rather than the median, with a per-report toggle to the central estimate.
Every price is labeled realized or ask; reports sort realized first, then by LAC's per-class source rankings, with a visible divider where asking prices begin.
Reviewers mark comps as internally verified; verified comps enter a private LAC archive and resurface automatically on future reports for matching assets, badged with who verified them.
Everyone at LAC sees all LAC reports. Members and roles (Owner, Approver, Analyst, Viewer — multiple Owners supported), invite links, and an append-only audit ledger with CSV export.
Reports move draft, in review, approved — with locking, reopen, a per-reviewer approvals queue, and Owner-editable policy: preparer/approver separation, a two-signature dollar threshold, verification gates and lock-on-approval, all enforced at action time.
Approving a report saves its entire retained comp set to the shared history, badged distinctly from hand-verified comps. Reopening withdraws the harvest.
Browse, search and govern everything that resurfaces: retire a bad entry globally, promote entries a reviewer endorses, and see imported internal sales alongside verified comps.
When the engine finds no comps, the failure screen offers a template report: the reviewer adds sales by hand, each one joins the workspace history, and Re-summarize computes the valuation.
A /status page shows engine reachability, every source with its last success and last error, report success rates for the last day and week, why reports failed, comp-library counts and app configuration. Refreshes every minute; /api/status is the JSON twin for monitors.
Paste a listing link and the price, date, venue, condition, photo and realized-vs-asking status fill in for review.
Direct fetch first, then Scrapfly datacenter anti-bot mode, then the residential pool; JSON-LD and Open Graph parsed deterministically, Claude fills the rest from the page text. Verified on Phillips, eBay and TheRealReal. Non-USD prices are flagged rather than converted. Requires SCRAPFLY_API_KEY on the recentcomp deployment for bot-protected hosts; without it those links fall back to manual entry with the venue pre-filled. Manual comps now carry the listing photo.
Long descriptive model strings collapse to the short listing name before the engine call, so token matching can find real listings.
Cavalcadour Toile De Camp Kelly II Sellier 32 becomes Kelly 32 with Sellier, Cavalcadour and Toile de Camp set aside and logged in the report trail. Gated so clean queries such as Rolex 126610LN never pay for it; fails open. LAC's failed Hermès report reproduced: 0 comps before, 22 comps and a 4,600 median after.
Brand-only searches are refused at intake and on the API; failed searches say what was found and rejected, and point to building the report manually.
A brand alone matched every model the brand ever made (one LAC report: 134 Rolexes of every era, 2,559 on a watch worth about 76,000). Intake and POST /api/reports now require a model or reference. Failure copy reads, for example, 21 candidates found, none usable, 21 rejected by the photo/details match, and the primary action is to build the report manually with the note that every comp added resurfaces on future searches. The comp table shows the analyst's own photos above it; handbag intake recommends a photo.
A vague loan request - photos and a brand name - becomes a runnable search: the asset is identified from the pictures, the fields fill in with stated confidence and alternates, the analyst confirms, and every returned comp is photo-checked against the same pictures.
Benchmarked on all 31 of LAC internal applicant photos with only their brand hint: correct brand and model family on 31 of 31; exact reference whenever legible (116500LN read off the warranty card); identified the asset on all three reports where the analyst typed only a brand, including the Daytona Rainbow behind the August 52k-vs-476k miss. References are never invented - sibling references appear as tap-to-swap alternates.
Reports complete without an executive summary; a Generate summary button produces 4-7 one-sentence bullets on request. LAC found the auto prose long and mostly unread. Reports are about 20 seconds faster to ready.
Every search runs as a ladder of variants, narrowest first, broadening automatically when a rung returns fewer than 5 usable comps - per-class templates take the phrase-it-exactly-right burden off the analyst. The canonicalizer names the model line behind a recognized reference (126603 -> Sea-Dweller) for the broadened rung. Every rung is logged in the report trail.
The form reads the way a vague loan request arrives: category, a describe-the-asset box, photos. Exact brand/reference/serial fields collapse into an optional details section that opens automatically when prefilled by chips, photo identification, or the analyst. Notes-only submissions run through the canonicalizer instead of the token heuristic.
Verified end-to-end: raw applicant text (two tone rolex sea dweller, black dial, complete box and papers) parsed to Rolex Sea-Dweller and returned 33 comps.
Searches land on a candidate review screen before any valuation exists: the analyst unticks anything that is not the asset (badges show photo match, variant, realized/ask, unjudged), sees a live median preview, and generates the report only from what they keep. Adjust-search-and-rerun works from the same screen and from failed reports, on the same report id.
Workflow change requested by LAC principal review 08 Sep. New selecting report status; deselected candidates become removed comps so the audit trail records the choice.