Two layers. No duplicates. Yours to keep.
The single thing that breaks every catalog-platform you've used before is data duplication: vendors maintain product info in their PIM, distributors retype it for retailers, retailers retype it again for their storefront. By the third copy it's already drifted. PowersportOS solves this at the architecture level, not with a sync script.
The model
One central source. One tenant layer. Clear separation.
Brand / distributor
Maintains catalog source data
Central catalog
Admin-only writes, all tenants read
Tenant data
Your prices, stock, proprietary SKUs
Storefront
Joined at render time
// one data path, no duplication, ownership clear at every step
Central catalog (maintained by us)
Makes, models, vehicles, fitments, parts, brands. This is the shared reference layer that every PowersportOS tenant reads from. We curate it. Admin-only writes, with brand partners contributing primary content for their own SKUs. No tenant can modify central data. Typos and bad data don't drift in.
Each part record is structured the way powersport actually wants: a hierarchical category tree (not free-text strings), multiple OEM cross-references per SKU with cross-brand attribution, full L×W×H dimensions plus weight, EAN barcode, country of origin, a multi-image gallery, sanitised-HTML descriptions, side / axle position on each fitment row (LH, RH, front, rear), and per-fitment notes for caveats like "fits with electric start" or "before VIN 12345".
Result: when 20 retailers carry the same Alphatrac air filter, they all reference the same single Part record with the same structured data. One canonical set of photos, descriptions, fitments, dimensions, OEM links. No duplication, no maintenance lag.

Lifecycle status, not just on/off
Every part carries a manufacturer-side lifecycle status separate from the retailer's storefront-visibility switch. Four values cover the lifecycle a powersport SKU actually goes through: draft while a brand prepares a launch, active for current production, deprecated when a successor exists, discontinued when production stops.
Deprecation pairs with an optional replaced-by pointer, the successor SKU, so storefront product pages can render "Replaced by 55716088" instead of dead-end 404s on retired numbers. End customers find the upgrade path; retailers get clear cut-over signal; manufacturers have a forum to communicate range changes without depending on each retailer to chase down the news themselves.
PowersportOS never auto-hides a part based on status. A discontinued part stays on a retailer's storefront as long as they have stock and want to sell it, their call, not ours. The status is informational metadata, never a kill-switch.
Manufacturer-side lifecycle. Distinct from per-retailer storefront visibility.
Successor SKU. Surfaces as "Replaced by 55716088" on the storefront product page.
Tenant data (yours, maintained by you)
Your prices, your stock, your own proprietary SKUs that aren't in the central catalog, your custom-built vehicles, your dealer/store network. This layer is scoped to your tenant. No other tenant sees it, no one else can write to it.
When you bulk-import via CSV, what goes into your tenant space (parts, vehicles, fitments to those vehicles) stays in your tenant space. The two layers are clearly separated, and you can move freely between them. Your part can fit a central vehicle, or fit one of your own. The connection is yours either way.

Updates propagate, not duplicate
When a brand updates a product description in PowersportOS, every retailer subscribed to that brand sees the new description on their next page load. No re-sync, no batch job, no waiting period. One source of truth means one update.
This is the architectural difference between a catalog-distribution platform and a "we let you upload product CSVs" tool. The latter creates the drift problem on day one. The former eliminates it.

Ownership
You own your data. We host it, we don't claim it.
Full export, any time
Your tenant data (parts, vehicles, dealers, stock, settings) is exportable in a structured format at any time. Self-service tooling on the customer portal is on the immediate roadmap; admin-mediated export is available today.
Right to be forgotten
Cancel your subscription, your tenant data is permanently deleted after a 90-day cooling-off window (in case of accidental closure). After that period, it's gone from primary storage and backups within the regular rotation. GDPR Article 17 compliant.
No data resale, no profiling
Your catalog data, customer interactions, search patterns. We don't sell, we don't profile, we don't train external AI on it. The platform is the product. Your data flows through, it isn't the product.
EU jurisdiction, EU hosting
Operated by Umbr AB (Sweden, org. 559512-5252). Hosted at Hetzner Online GmbH (Germany / Finland data centres). Subject to GDPR, hosted under EU jurisdiction. Subprocessors documented in our Privacy Policy.
TLS in transit, hashed passwords, isolated tenants
Industry-standard security: TLS 1.3 everywhere, bcrypt-hashed credentials, tenant data isolation enforced at the query layer. Continuous monitoring via Sentry. Breach notification under GDPR Article 33 in case of incident.
Daily backups, restore-tested
PostgreSQL nightly backup to Hetzner Storage Box, 30-day rotation, monitored via healthchecks.io. Quarterly restore drills (we actually test that the backups work).
Ready to talk?
PowersportOS is in early access with a small group of dealers, manufacturers, and distributors. If your business shape matches what we just described, get in touch.