Selling partnerRevelyst Inc.Vendor group ×11 · Seller account ×3US · CA · MX53 critical alerts unactionedSupabase · synced Aug 27, 10:10 PM UTC
Data Admin
What is loaded, where each table comes from, and what it takes to point the same screens at live Amazon data. 20 collections, 35,148 rows, generated deterministically from a fixed seed at Aug 27, 10:10 PM UTC.
Tables loaded
20
One per app collection
Total rows
35K
35,148 exactly
Generated at
Aug 27, 10:10 PM
UTC, fixed seed
Data source
Supabase
Live tables, 60s cache
Last automation run
Aug 27, 9:00 PM
Buy box loss on a top-200 ASIN
Automation success
88%
74 of 84 runs clean
Rules enabled
13 of 14
Disabled rules never evaluate
Alerts open
161
New, acknowledged or snoozed
Dataset inventoryRow counts computed at render, not stored
CollectionRowsWhat it feeds
brands14Brand and segment rollups, vendor group and seller SKU prefixes
products1,448ASIN master: cost, price, MAP, cube, hazmat, lifecycle
fulfillmentCenters15Node list and cube capacity behind Fulfillment Centers
inventory4,351ASIN x FC positions, aging buckets and days of supply
capacity25Monthly storage limits, forecast and IPI on Capacity & Aging
restock2,371Reorder points and coverage on Replenishment
purchaseOrders460Vendor POs, ack SLA and fill rate
shipments400ASN accuracy, OTIF and carrier detail
chargebacks300Operational chargebacks and dispute deadlines
shortageClaims170Shortage claim pipeline and filing windows
priceClaims110Cost variance claims against PO price
returns9,600Customer returns, disposition and reimbursement eligibility
reimbursements900FBA reimbursement detection and window expiry
salesTraffic11,584Monthly ASIN revenue, glance views and buy box on Sales & Traffic
fees1,448Per-ASIN fee stack and net PPM on Fees & Profit
buyBox1,448Buy box share, offer counts and MAP violations on Pricing
catalogIssues220Suppression and attribute defects on Catalog Health
rules14Alert rule definitions, thresholds and recipients
alerts186Generated alerts feeding the Alerts Inbox
runs84Automation run history behind the audit trail below
Total35,148Across 20 collections
Supabase mappingSnake_case in Postgres, camelCase in the app, one accessor between them
Supabase tableApp collectionAmazon source of record
brandsbrandsVendor group codes in Vendor Central, merchant profile via getMarketplaceParticipations
productsproductssearchCatalogItems / getCatalogItem plus GET_MERCHANT_LISTINGS_ALL_DATA
fulfillment_centersfulfillmentCentersFC codes from GET_AFN_INVENTORY_DATA_BY_COUNTRY and getInboundShipments
inventory_positionsinventoryGET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA plus getInventorySummaries (FBA Inventory v1)
capacity_limitscapacityGET_FBA_INVENTORY_PLANNING_DATA for IPI, capacity limits from the Capacity Monitor export
restock_recommendationsrestockGET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORT
purchase_orderspurchaseOrdersVendor Orders API getPurchaseOrders / getPurchaseOrder
shipmentsshipmentsVendor Shipments submitShipmentConfirmations plus Fulfillment Inbound getShipments
chargebackschargebacksVendor Central Operational Performance chargeback export (no SP-API surface)
shortage_claimsshortageClaimsVendor Central Payments invoice research export, reconciled against submitInvoices
price_claimspriceClaimsVendor Central Payments price-claim export against cost on getPurchaseOrders
customer_returnsreturnsGET_FBA_FULFILLMENT_CUSTOMER_RETURNS_DATA plus SAFE-T claim export
reimbursementsreimbursementsGET_FBA_REIMBURSEMENTS_DATA plus GET_LEDGER_DETAIL_VIEW_DATA for the discrepancy
sales_trafficsalesTrafficGET_SALES_AND_TRAFFIC_REPORT, GET_VENDOR_SALES_REPORT, Data Kiosk salesAndTrafficByAsin
fee_snapshotsfeesgetMyFeesEstimateForASIN plus GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE actuals
buy_boxbuyBoxANY_OFFER_CHANGED notification, getItemOffers for on-demand checks
catalog_issuescatalogIssuesgetListingsItem issues array plus LISTINGS_ITEM_ISSUES_CHANGE
alert_rulesrulesApp-owned: thresholds configured here, no Amazon source
alertsalertsApp-owned: derived on write and on cron from the tables above
automation_runsrunsApp-owned: ingestion and rule-evaluation worker telemetry
Switching to live dataSix steps, no page changes
  1. 1Create the Supabase project in the region closest to the ingestion worker and record the project URL and service role key.
  2. 2Run the SQL in supabase/migrations to create the 20 tables above with their primary keys and indexes.
  3. 3Set NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY as Vercel environment variables on the production and preview scopes.
  4. 4Set DATA_SOURCE=supabase, which is the only switch the app reads to prefer live tables over the bundled dataset.
  5. 5Point the ingestion worker at the SP-API credentials (LWA client id, client secret and one refresh token per selling partner) and let it run one full backfill before the first cron cycle.
  6. 6Redeploy, then confirm the Data source tile above reads Supabase and that row counts in the inventory table match what the worker wrote.
The switch is one-way per environment, not per page. With DATA_SOURCE unset, or set to supabase without credentials, every page falls back to the demo dataset, so a walkthrough deck keeps working on a laptop with no network and a failed live query degrades to demo figures instead of an error screen. Any table the worker has not populated keeps its demo slice, which means a partial backfill still renders.
Audit trail20 most recent of 84 recorded runs
RunRuleStartedDurationEvaluatedAlertsEmailsStatusNote
RUN-800102Buy box loss on a top-200 ASINAug 27, 9:00 PM7,422 ms24,49811SUCCESS1 alerts raised, digest batched by brand owner
RUN-800101Forecast exceeds capacity in next 60 daysAug 27, 7:22 PM4,715 ms7,720224SUCCESS22 alerts raised, digest batched by brand owner
RUN-800100Forecast exceeds capacity in next 60 daysAug 27, 1:40 AM2,305 ms21,90053SUCCESS5 alerts raised, digest batched by brand owner
RUN-800104Low stock: days of supply under floorAug 26, 4:14 PM13,867 ms23,512273SUCCESS27 alerts raised, digest batched by brand owner
RUN-800103Shortage claim window closingAug 26, 10:08 AM3,374 ms7,011294SUCCESS29 alerts raised, digest batched by brand owner
RUN-800105OTIF below Amazon's 95% requirementAug 26, 3:01 AM4,986 ms16,05374SUCCESS7 alerts raised, digest batched by brand owner
RUN-800108Stockout imminent: under 10 days, no inboundAug 25, 7:41 PM11,309 ms5,76084SUCCESS8 alerts raised, digest batched by brand owner
RUN-800106Listing suppressed or main image missingAug 25, 3:08 PM7,649 ms11,155191SUCCESS19 alerts raised, digest batched by brand owner
RUN-800107Buy box loss on a top-200 ASINAug 25, 5:31 AM6,339 ms3,363--FAILEDSP-API 429 QuotaExceeded on getInventorySummaries: retried 3x, backed off
RUN-800109Low stock: days of supply under floorAug 24, 11:10 PM8,238 ms5,654153SUCCESS15 alerts raised, digest batched by brand owner
RUN-800110Vendor PO acknowledgement SLA at riskAug 24, 1:42 AM3,051 ms13,09341SUCCESS4 alerts raised, digest batched by brand owner
RUN-800111Listing suppressed or main image missingAug 24, 12:07 AM13,784 ms20,758241SUCCESS24 alerts raised, digest batched by brand owner
RUN-800112Overstock: days of supply above ceilingAug 23, 7:56 PM4,087 ms6,75711SUCCESS1 alerts raised, digest batched by brand owner
RUN-800113Stockout imminent: under 10 days, no inboundAug 23, 2:45 PM9,025 ms1,728164SUCCESS16 alerts raised, digest batched by brand owner
RUN-800114OTIF below Amazon's 95% requirementAug 23, 7:26 AM3,772 ms20,662294SUCCESS29 alerts raised, digest batched by brand owner
RUN-800117Aged inventory surcharge exposureAug 22, 9:54 PM13,607 ms21,960131SUCCESS13 alerts raised, digest batched by brand owner
RUN-800115Chargeback dispute deadline inside 7 daysAug 22, 7:48 AM3,441 ms2,131264SUCCESS26 alerts raised, digest batched by brand owner
RUN-800116Buy box loss on a top-200 ASINAug 22, 4:03 AM9,301 ms25,208133SUCCESS13 alerts raised, digest batched by brand owner
RUN-800120Chargeback dispute deadline inside 7 daysAug 21, 8:16 AM16,099 ms4,19033SUCCESS3 alerts raised, digest batched by brand owner
RUN-800119Forecast exceeds capacity in next 60 daysAug 21, 4:34 AM12,392 ms23,514113SUCCESS11 alerts raised, digest batched by brand owner
EnvironmentRead at request time, never bundled to the client
NEXT_PUBLIC_SUPABASE_URL
Project REST endpoint. Read by the data layer and by the ingestion worker.
SUPABASE_SERVICE_ROLE_KEY
Server-side key used for reads that bypass row-level security and for worker upserts. Never exposed to the browser.
NEXT_PUBLIC_SUPABASE_ANON_KEY
Fallback key when no service role is present. Read-only against RLS policies.
DATA_SOURCE
demo or supabase. Anything other than supabase, or missing credentials, serves the bundled dataset.
RESEND_API_KEY
Transactional email transport for alert digests.
ALERT_FROM_EMAIL
From address on every alert email, must be a verified sending domain.
ALERT_TEST_RECIPIENT
Override recipient. When set, every digest routes here instead of the rule recipients.
CRON_SECRET
Shared secret on the scheduler route, so only the platform cron can trigger a rule evaluation.
None of these are required to run the demo: with every variable unset the app serves the bundled dataset and no email is sent. Live alerting needs the four Supabase and Resend values (NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, RESEND_API_KEY, ALERT_FROM_EMAIL) plus CRON_SECRET before the scheduler route will accept a request.
Scope of this environment. It holds no Revelyst data and no Amazon credentials: there is no refresh token, no LWA secret and no Supabase project behind it. Every figure on every page comes from the bundled generator, which is seeded with a fixed value, so the same numbers render on every machine and on every reload. A screenshot pasted into a deck today still matches the app next month.