Catalog.

Everything PerkUp can send — branded swag, gift cards, and curated gifts — is modelled as a single entity: the ProductVariant. One model, several providers behind it.

Three product types

Every catalog item has a type that determines how it is funded and fulfilled (proto/perkup/v1/product_variant.proto):

TypeWhat it isFulfilled by
swagPhysical branded merchandise — apparel, drinkware, kits.Print-on-demand or warehoused bulk
nearCashGift cards and vouchers redeemable for cash-equivalent value.Gift-card providers
publicGiftA pre-selected gift sent to an external or no-login recipient.Catalog providers
amazonProductAn Amazon Business product chosen by ASIN.Amazon (migration in progress)

Five providers

The provider field says which system actually holds inventory and ships the item:

ProviderRole
shopifyPrimary on-demand swag store and inventory source of truth.
printfulPrint-on-demand manufacturing for apparel and accessories.
plumDigital gift cards and vouchers.
amazonAmazon Business products.
manualStatically curated items (e.g. sourced from Airtable).

How a variant works

A ProductVariant carries everything needed to display, price, and ship an item:

  • Options — size, color, or gift-card denomination.
  • Collections — groupings used to build storefronts and curated sets.
  • Per-country pricing — price and currency vary by recipient country.
  • Shipping rates — default rates by package size and zone, with per-org overrides.
  • Source typefullPrepaid items don't draw from an account; normal items do.

Where each kind lives

Source: proto/perkup/v1/product_variant.proto · GLOSSARY.md · perkupapp.com