Skip to main content

Organizations

An organization is the root tenant in Podium. Everything — products, users, orders, campaigns, API keys — belongs to an organization. PostgreSQL Row-Level Security ensures complete data isolation between organizations. Organizations have:
  • A subscription tier (BUILDER, GROWTH, PRO, ADMIN) controlling rate limits and endpoint access
  • Settings including blockchain network configuration, x402 preferences, and reward modes
  • App configurations for per-application behavior customization

Creators

Creators are merchants or brands within an organization. They have public-facing storefronts and manage products, orders, and payouts.
FieldPurpose
slugURL-friendly unique identifier (e.g., tatcha, the-ordinary)
displayNameBrand name shown to consumers
heroImageUrlStorefront banner
shippingSettingsDefault shipping configuration
pointsConfigPer-creator points earning rules
Creators connect to Stripe Connect for payment processing and receive payouts through the platform’s payout sweep system. The CreatorUser model links a User to their Creator identity — a user can be both a consumer and a merchant.

Users

Users are end consumers who browse, interact, and purchase within the platform.
FieldPurpose
usernameUnique handle
emailContact and order notifications
avatarUrlProfile image
bio, city, stateProfile details
Users link to external identity providers through PrivyUser and DynamicUser mapping tables. Wallets are tracked in UserWallet — each user can have multiple wallets (Privy embedded, self-custodied, or platform-managed).

Social Graph

Users can follow creators (CreatorFollow) and other users (Follow). Creators can organize followers into Group membership for segmented engagement.

Products

Products represent items available for purchase. They support configurable attributes (size, color, etc.) through a variant system.
ModelPurpose
ProductCore product: name, price, supply, status, shipping type, point eligibility
ProductAttributeConfigurable option (e.g., “Color”)
ProductAttributeVariantSpecific value (e.g., “Rose Gold”) with optional price modifier and supply
ProductMediaImages and videos
CreatorProductMaps products to creators
Products go through a lifecycle: DRAFTPUBLISHEDARCHIVED. Published products appear in search, discovery feeds, and the agentic product feed.

Orders

An order captures a purchase transaction from creation through fulfillment:
ModelPurpose
OrderOrder header: status, shipping status, points applied, total
OrderItemLine items with quantity, price, selected attribute variants
UserOrderLinks authenticated users to orders
GuestOrderLinks anonymous buyers to orders

Payment Methods

Orders can be paid through multiple channels:
  • Stripe — Credit card via PaymentIntents
  • x402 — USDC on Base via HTTP 402 protocol
  • Embedded wallet — Privy server wallet for automated agent purchases
  • Coinbase Commerce — Crypto checkout

Creator Payouts

When an order is paid, the platform tracks a CreatorPayout record that moves through PENDINGELIGIBLETRANSFERRED. A scheduled payout sweep cron job processes eligible payouts via Stripe Connect transfers.

Points & Loyalty

Podium includes a programmable points ledger with double-entry bookkeeping:
Transaction TypeSource
APIProgrammatic grants via the API
CAMPAIGNEarned through campaign participation
PURCHASEEarned from purchases (based on creator’s points-per-dollar config)
NFT_REDEMPTIONSpent when redeeming on-chain rewards
PRESALESpent on token presale purchases
Points are tracked per-user with full transaction history. The ledger supports both earning and spending with atomic balance checks.

Campaigns

Campaigns are structured engagement mechanics that capture user intent:
TypeMechanic
SWIPEBinary preference selection (like Tinder for products)
MULTIVARIANTVote between multiple attribute options
SURVEYStructured question/answer collection
UGCUser-generated content submission
Campaigns follow a lifecycle: DRAFTSUBMITTEDAPPROVEDPUBLISHEDENDED. Each participation generates a CampaignJourney record, and associated rewards are tracked through CampaignReward and CampaignRewardTransaction.

Rewards & Airdrops

Podium supports on-chain reward minting and redemption:
ModelPurpose
NftContractDeployed smart contract (name, symbol, proxy/implementation addresses, chain, max supply)
NftIndividual minted token with owner address
NftRewardReward program definition
NftRedemptionTracks when a reward is redeemed
QueuedMintMint queue for batched minting via Privy server wallets
AirdropScheduled bulk reward distribution
Rewards support six types: POINTS, FREE_PRODUCT, DISCOUNT_CODE, EVENT_PASS, CUSTOM, and EXCLUSIVE_ACCESS.

Intents & Settlement

The intent layer bridges off-chain commerce with on-chain settlement:
ModelPurpose
IntentSettlementOn-chain reward intent lifecycle (PENDING → LOCKED → FULFILLED / EXPIRED / CANCELLED)
MerchantTreasuryPer-organization USDC treasury with on-chain balance tracking
SolverPerformanceSolver fulfillment metrics and reputation data

Agent Memory

Structured memory that evolves through conversation. As a user interacts with a companion agent, the platform extracts and maintains a rich understanding of their attributes, goals, concerns, avoidances, products tried, and category-aware price ranges. See Memory & Intelligence for the full schema, domain taxonomy, and scoring details.
DimensionExample
AttributesSkin type, hair texture, body type
Goals”Looking for anti-aging routine”, “Building a capsule wardrobe”
ConcernsSensitivity to fragrance, budget constraints
AvoidancesSpecific ingredients, brands, or categories
Products triedItems the user has purchased or reviewed
Price rangesPer-category budget preferences (e.g., “2040forserums,upto20–40 for serums, up to 100 for treatments”)
Memory extraction runs for all users regardless of subscription tier. For subscribers, the accumulated memory is loaded into the agent’s system prompt on every conversation turn, enabling deeply personalized responses.
Memory is additive — it grows richer with every interaction. Users who upgrade from free to paid immediately benefit from all intelligence accumulated during their free usage.

Companion Subscription

Subscription state for companion agent monetization. Each subscription tracks the user’s billing tier, payment provider IDs, trial configuration, and current billing period.
FieldPurpose
tierCurrent subscription tier: FREE, TRIALING, ACTIVE, PAST_DUE, CANCELED
externalCustomerIdStripe customer ID
externalSubscriptionIdStripe subscription ID
trialEndsAtTrial expiry timestamp (configurable, default 14 days)
currentPeriodEndEnd of current billing period
Tier transitions are managed automatically via Stripe webhooks. See Subscriptions for the full billing lifecycle and API endpoints.

Companion Usage

Monthly usage tracking per user, used for free-tier gating.
FieldPurpose
messageCountMessages sent in the current billing period
recCountRecommendation requests in the current billing period
periodStartStart of the current tracking period
Usage counters reset at the start of each billing period. The subscription status endpoint returns both current counts and configured limits.

Creator Persona

A creator persona represents a creator-curated shopping identity — used by apps like Clone Agents (Familiar) to let users shop through the lens of a creator’s taste.
FieldPurpose
handleUnique identifier (e.g., janedoe)
displayNameCreator’s public name
platformAffiliate platform: ShopMy, LTK, Amazon Influencer
avatarUrlCreator profile image
seedProfileTaste data (brands, price ranges, concerns) used to seed user profiles
resolvedProductIdsProduct catalog IDs resolved from the creator’s affiliate links
statusACTIVE, PENDING, or INACTIVE
Developers can query active creator personas and their resolved product catalogs via the Creator Products endpoint. User profiles can be bootstrapped from a creator’s taste data via Profile Seeding.

Agent Conversation & Agent Message

Durable chat history for companion agents. Conversations are scoped per user and per surface (web, Telegram, etc.), with messages stored as an ordered sequence. AgentConversation:
FieldPurpose
idConversation identifier
userIdThe user this conversation belongs to
surfaceWhere the conversation is happening (web, telegram, etc.)
createdAtWhen the conversation started
lastMessageAtTimestamp of the most recent message
AgentMessage:
FieldPurpose
idMessage identifier (used as pagination cursor)
roleuser or assistant
contentMessage text
productsProduct cards shown with this message (assistant messages only)
timestampWhen the message was sent
Chat history is retrieved via the Chat History endpoint with cursor-based pagination.

Task Pool (V2)

The Task Pool system enables on-chain bounty distribution:
ModelPurpose
TenantContractPoolPer-organization deployed TaskPool + RewardPool contract addresses
TaskGeneralized task definition (solver-agnostic, human or AI)
VerificationRequestTask completion verification tracking
See Smart Contracts for the on-chain architecture.