Skip to content

Aurum Jewelry

Retailer Console

0 real Fit Requests in this store + 240 synthetic demo requests · 161 SKUs in the catalog

Synthetic demo data. Funnel, hearted→bought, Return-Risk and recipient-mix numbers include 240 seeded, generated Fit Requests so the console has volume for the demo. They are not real shoppers. Real requests are counted on every card under "Real only". Undertone Coverage uses the live catalog only.

Fit Requests

Completion rate

Synthetic demo data

56%

135 of 240 sent requests completed

Real only: 0 of 0

How this is calculated
completion = completed / sent

Completed = the recipient sent their hearts (status completed).

Conversion

Hearted → bought

Synthetic demo data

58%

of givers whose recipient hearted a shortlisted piece bought a hearted piece (56/97)

Real only: 0/0

How this is calculated
hearted→bought = completed requests where a hearted shortlist piece was bought / completed requests with ≥ 1 hearted shortlist piece

Catalog gap

Cool-undertone coverage

Live catalog

37%

Only 60 of 161 SKUs suit a cool undertone estimate

How this is calculated
coverage(tone) = SKUs whose metal is "recommended" for tone / all SKUs

Rule table: server/verticals/jewelry.ts (jewelryRules.metalFit), sourced in docs/research/jewelry_rules.md.

Estimate

Return cost avoided

Synthetic demo data

$93

2.5 fewer expected returns on 71 gifts (11.0% → 7.5%)

Real only: $0 on 0 gifts

How this is calculated

Default inputs (11% baseline, $37 per return, ±50% score effect). Edit them in the Return-Risk card below.

Fit Request funnel

Sent → opened → completed → purchased

Synthetic demo data
  1. Sent240 · 100%
  2. Opened192 · 80% of prev.
  3. Completed135 · 70% of prev.
  4. Purchased71 · 53% of prev.

Real only: sent 0 · opened 0 · completed 0 · purchased 0

How this is calculated
sent = Fit Requests created opened = status opened, consented, tried_on, completed or deleted completed = status completed (hearts sent) purchased = completed AND a shortlisted piece was bought as a gift step rate = stage / previous stage

Purchases come from the "Buy as a gift" checkout (POST /api/retailer/purchase): only pieces on that request's shortlist count, and the event stores no recipient data. Requests that expired unopened: 46.

Synthetic requests follow stated demo assumptions: open 82%, complete 71% of opened, heart 30% per piece (55% when the metal suits), buy 62% when something was hearted. Scores use the published fit-v1.1 weights. Seeded, so the same every time.

Hearts vs purchases

Did they buy what was loved?

Synthetic demo data
Bought pieces that were hearted
79%
56 of 71 gifts · real 0/0
Purchase rate after a completed request
53%
How this is calculated
bought were hearted = bought pieces the recipient hearted / bought pieces purchase rate = purchased / completed

Undertone Coverage

Who can your catalog suit?

Live catalog
  • Warm

    48%

    77 / 161 SKUs

  • Neutral

    100%

    161 / 161 SKUs

  • Cool

    37%

    60 / 161 SKUs

Gap

Only 37% of the catalog suits a cool undertone. Watches: 29% (7 of 24).

Add 10 watches in white gold, silver, platinum to reach 50% for cool-undertone recipients.

Share of SKUs per category that suit each undertone estimate
CategorySKUsWarmNeutralCool
Earrings48
44%
100%
40%
Necklaces41
56%
100%
34%
Rings26
46%
100%
38%
Bracelets22
41%
100%
45%
Watches24
50%
100%
29%
How this is calculated
suits(sku, tone) = jewelryRules.metalFit(sku.metal, tone).strength == "recommended" coverage(tone) = |SKUs that suit tone| / |SKUs| gap = lowest-coverage tone, then its lowest category to add = ceil((50% × total − count) / (1 − 50%))

Warm: yellow and rose gold. Cool: white gold, silver, platinum. Neutral: every metal (docs/research/jewelry_rules.md, Table 1). No metal is ever "avoid", so a piece outside a tone is still acceptable; recipients' hearts carry half of every Fit Score. Undertone is an estimate the recipient can override.

Return-Risk estimate

Before and after Fit Requests

Synthetic demo data

71 gifts bought through a Fit Request (0 real). Estimate from published benchmarks, not a measured return rate.

Before
11.0%
7.8 returns · $289
After
7.5%
5.3 returns · $196
Avoided
$93
≈ $1,303 per 1,000 gifts
Model inputs
How this is calculated
P(return) = baselineRate × clamp(1 + maxReduction × (50 − score) / 50, 1 − maxReduction, 1 + maxReduction); expected cost = P(return) × costPerReturn

Before = every gift returns at the baseline rate (a gift chosen without a Fit Request scores 50). After = the mean of P(return) over the Fit Scores of the pieces actually bought.

  • Baseline: market.md K3 (S31, Eightx 2026): fine jewelry online 8–15%, midpoint 10–12%.
  • Cost: market.md K6 (S5, Eightx 2026): jewelry and accessories $37 mid. Markdown loss on resale is excluded (market.md K5 / S31), so the cost is conservative.
  • The score effect (score 100 halves the risk, 0 raises it by half at ±50%) is our assumption; no source measures it.
  • Benchmarks are US 2025–2026 secondary syntheses (grade C): directional, not a forecast.

Recipients, in aggregate

Who completed a Fit Request

Synthetic demo data

Undertone (estimate or recipient's choice), n = 135

  • Warm30%
  • Neutral41%
  • Cool28%

Face shape estimate, n = 135

  • Oval30%
  • Round20%
  • Square11%
  • Heart-shaped14%
  • Oblong10%
  • Diamond-shaped9%
  • Triangle-shaped6%
How this is calculated

Completed requests only. A breakdown appears once at least 5 requests are in it; any group under 5 shows as "< 5", and if only one group is hidden the next smallest is hidden too, so it cannot be worked out by subtraction. No photo, color value or per-person estimate ever reaches this page.

Auto-Ingest

Ingest a store

Fixture mode · offline

Paste a store URL. GiftFit picks the lowest tier that works, reads public product data only and builds the catalog the Fit Engine scores.

How this is calculated

Tier 1 platform API → Tier 2 sitemap + JSON-LD → Tier 3 headless render + grounded extraction; the lowest tier that works wins (docs/ingest-policy.md).

complete rows = SKUs with metal AND price AND images / all SKUs

Politeness is enforced in code: robots.txt first, ≤ 1 request/s per host, allow-listed hosts only. In fixture mode every page comes from self-authored fixtures on reserved .test hosts.

Script tag

Add Gift it right to any product page

One line before </body>. The button appears only on pages whose product is in your ingested catalog.

<script src="https://your-giftfit-app/giftfit.js" data-store="aurum" async></script>

How this is calculated

The script finds the product (data-giftfit-sku, JSON-LD Product or Open Graph), asks /api/retailer/lookup whether it is in the catalog, then adds the button in a shadow root so the store's CSS and ours never mix. The Giver Panel opens in an iframe from this app; the two talk only through origin-checked postMessage, and no token, request id or recipient data crosses the frame.

Cross-origin demo: GIFTFIT_ORIGIN=https://your-giftfit-app node client/plugin/demo/serve-host.mjs, then open http://127.0.0.1:4310/.

Privacy: this console shows aggregates only. It never receives recipient photos, colors, CIELAB values, face measurements or any one person's estimate. Aurum Jewelry is a fictional demo store. Generated Tue, 03 Nov 2026 06:32:17 GMT.