Market Indices/Sync to Production

Sync to Production

Push computed market indices to the GemstoneAI production API. This updates the pricing columns in gemstone_market_data — editorial content (characteristics, value drivers, insights) is preserved.

How sync works

  1. Indices are exported as a CSV matching the POST /market/import schema
  2. CSV is POSTed to the production API endpoint
  3. The import endpoint upserts by variety — only non-null pricing fields are updated
  4. New varieties (not in production) are created as new rows
34
Varieties to Sync
133
Snapshots Stored
4/14/2026
Last Computed
Production API
Target

Data Preview

These values will be written to the production gemstone_market_data pricing columns

Variety2025 Avg (P50)2025 Min (P10)2025 Max (P90)P25P75ListingsConfidence
Alexandrite$6.5K$3.9K$17.1K$4.5K$11.1K68100%
Ruby$5.5K$783$19.5K$2.5K$10.7K203100%
Emerald$5.0K$331$12.5K$2.9K$8.8K244100%
Diamond$4.7K$2.2K$40.0K$2.6K$13.4K1721100%
Sapphire$818$74$4.1K$120$2.6K3364100%
Spinel$787$55$3.4K$158$1.8K96100%
Tourmaline$600$14$6.6K$90$3.7K143100%
Tanzanite$529$183$918$441$76983100%
Morganite$125$13$449$48$1963264%
Zircon$125$52$600$100$2513672%
Aquamarine$120$10$2.0K$95$1.5K120100%
Moissanite$80$49$117$67$9796%
Tsavorite$69$64$71$67$6985%
Garnet$55$1$121$7$9368100%
Moldavite$40$38$54$39$42107%
Apatite$34$13$240$14$2401419%
Sunstone$32$26$36$28$3532%
Kunzite$25$6$41$11$343978%
Ametrine$23$8$48$13$3879%
Peridot$22$8$101$14$782856%
Citrine$15$3$15$4$152939%
Sphene$14$9$19$12$1675%
Kyanite$13$7$19$11$1453%
Topaz$12$1$566$7$503264%
Grandidierite$11$11$13$11$12128%
Andesine$10$10$11$10$1153%
Moonstone$10$2$211$5$1642346%
Iolite$6$1$94$2$481632%
Chrysoprase$5$3$6$3$664%
Amethyst$2$0$13$1$1151100%
Quartz$2$1$6$1$31925%
Opal$1$1$16$1$591100%
Fluorite$1$1$1$1$196%
Agate$1$0$2$0$264%

Push to Production

This will update pricing in the live mobile app. Editorial content is preserved.

Column Mapping

Median $/ct (P50)→ price_2025_avg, price_2025_p50
P10→ price_2025_min, price_2025_p10
P25→ price_2025_p25
P75→ price_2025_p75
P90→ price_2025_max, price_2025_p90

Fields NOT touched: characteristics, value_driver_*, market_dynamics_*, market_insights_*, event_*_note, price_2020-2024_avg