We replaced Route with an in-house protection layer purpose-built for collectibles. The premium revenue stays with Premiere Collectibles. The claim experience stays on-brand. Four AI agents do most of the operations work that used to sit in a queue.
Premium retained
100%
vs. Route's cut
Claim flow
On-brand
no app handoff
Triage latency
~3s
AI read of every claim
Operator clicks
2–3
from filed to resolved
§ 01 · The problem with Route
Route is the tax we pay for not having our own protection.
Route adds an insurance line at checkout, the customer pays a few dollars, and a chunk of that premium goes to Route. When something goes wrong with the shipment, the customer is handed off to route.com — out of our brand, into a generic claims app that doesn't know what a CGC slab or a signed jersey is worth.
For a collectibles store, the worst case isn't the lost Funko Pop. It's the $4,000 graded card that gets denied because the third party didn't understand the evidence. We're left explaining ourselves to a customer who doesn't care who Route is.
Premium leaks. Years of paying out for every protected order.
Brand handoff. Customer files a claim, ends up on someone else's site.
No collector context. Generic damage triage on items where slab integrity, lighting, and packaging are the whole story.
§ 02 · What we built
A protection product, an operations brain, and a customer experience that never leaves Premiere.
01
Storefront widget
Three BigCommerce Script Manager scripts inject the cart-page widget, checkout reassurance, and a thank-you policy ping. No theme edits, no Stencil work, no integration debt.
02
Operator console
A purpose-built admin panel for claims, policies, pricing, agents, and team management. Light + dark themes, four accent colors, role-gated for owner, admin, and operator.
03
Customer surface
On-brand claim filing, status tracking with per-item ship state, and inline reply that lets customers upload more photos and respond without leaving the page.
§ 03 · The four agents
AI is not a feature, it's the operations team.
Every claim that lands gets read by Pixel, screened by Sentry, and queued in front of an operator with a recommendation already drafted. Resolution actions flow through Dispatch. Ledger reconciles BC daily. Operators spend their time on the judgment calls, not the data entry.
AI
Pixel
Claim triage · evidence review
Reads every new claim's description + photos via Anthropic Haiku (vision). Emits a decision (approve / deny / escalate), a confidence score, written reasoning that cites specific photo observations, mismatch signals (e.g., 'photo shows pristine item on a damaged-claim'), and a draft customer-facing follow-up question.
Model claude-haiku-4-5Cost ~$0.001 per claim
AI
Sentry
Fraud signals · velocity
Pure SQL — no LLM. Runs synchronously when a claim is filed. Catches velocity patterns (≥3 claims from one email in 14d), fresh-policy red flags (claim filed within 24h of issuance), and new-customer-first-claim signals.
Model SQL onlyCost $0
AI
Dispatch
Resolution executor
Fires when an operator clicks Refund or Reship. Refund path calls BigCommerce's refund API on the specific scoped line items, distributing the amount proportionally. Honors DISPATCH_DRY_RUN flag for safe testing.
Model BC APICost $0
AI
Ledger
BigCommerce reconciliation
Daily 09:00 UTC cron. Walks recent policies and surfaces drift: policies for orders that no longer exist, refunded orders we missed, premium mismatches between what BC charged and what we recorded.
Model BC APICost $0
Plus a custom agent system so operators can spin up domain-specific triage (a high-value sentinel, an authentication-dispute watcher, a daily standup briefing) from templates — without writing code.
§ 04 · How a claim flows
From filed to resolved in two operator clicks.
01
Customer files
On the on-brand claim page, the customer picks an item from their order (pre-orders are greyed out — they can't be lost in transit), describes what happened, and uploads photos. iPhone HEIC images are auto-converted server-side.
02
Sentry screens
Synchronous SQL pass on filing: velocity, freshness, first-claim signals. Flags pinned to the claim.
03
Pixel reads
Async vision call against the photos. Decides approve / deny / escalate with confidence and reasoning. Drafts the operator's next-step question if there's any ambiguity.
04
Operator decides
Sees the recommendation, the mismatch signals, the scope, and the suggested customer question. One click sends the question. One click approves or denies.
05
Dispatch executes
Refund hits BC scoped to the specific line items the claim covers, not the whole order. Reship queues for fulfillment. Customer gets a resolved-claim email with the outcome.
06
Ledger reconciles
Next day's cron checks every recent policy against BC. Drift surfaces in the operator's morning queue.
§ 05 · What makes it different
Route (what we replaced)
Premium siphoned to a third party
Customer redirected to route.com to file
Generic damage triage, no collector context
No knowledge of pre-orders, multi-item shipments, or split fulfillment
Static templates for every customer interaction
Refunds at order-level granularity
Tag
100% of premium stays in-house
Owned claim experience — your team, your AI, your catalog context
Pixel reads photos with collectibles context (slab integrity, lighting, packaging)
Per-item ship state — pre-orders can't be claimed until they ship
Pixel drafts a contextual customer question per claim
Refunds scoped to specific line items, distributed proportionally across BC
§ 06 · Safety & guardrails
We're moving customer money. The guardrails are not optional.
Dry-run mode
DISPATCH_DRY_RUN=true makes Dispatch log refund attempts without touching BC. Used end-to-end testing with real orders, zero money moved.
Scoped refund caps
Refund amount can never exceed the value of the line items the claim covers. Enforced server-side (422) even if an operator types past the cap.
Human in the loop
Pixel never auto-approves. Every payout decision goes through an operator. The auto-approve thresholds in agent_settings are wired but deliberately off.
Role gating
Three roles: owner (everything), admin (everything but billing + user mgmt), operator (claims + activity). Every admin endpoint is requireRole-gated.
Pre-order block
Claims can't be filed against items that haven't shipped — pre-orders aren't claimable until release. Surfaced on the customer claim form and server-enforced.
Audit trail
audit_log captures user invites, role changes, banking edits. audit_diffs captures column-level history of structured edits. Append-only.
§ 07 · Under the hood
Built with the same stack we run everything else on.
Frontend
Next.js 16, App Router, Turbopack, React 19
Data
Supabase (Postgres + Auth + Storage). RLS-locked tables for user management and audit logs.
AI
Anthropic Haiku 4.5 for Pixel, custom agents, and contextual message drafting. URL-source vision (no base64 round-trip).