Features

Everything you need to run a branded merch program.

Six capability blocks built around the work you actually do. Buy in cohorts, build branded storefronts, collect and engage your team, keep every mockup on-brand, operate production end to end, and earn money back as you grow.

Buy

Four ways to buy. One catalog.

Every product in your catalog can run as a swarm, a Buy Now, a gift, or on-demand — same approval flow, same brand library, same production rails.

Swarms

Group-buy aggregation with a live commit window. Buyers see the price falling as their teammates join — past the quantity floor that came with the product. Cards are saved at commit (SetupIntent) and charged at the bottom-of-curve unit price when the swarm closes.

  • Magic-link sign-in — no buyer accounts to manage
  • Buyer-protection invariant: never pay more than committed
  • Sticky activation: once minimums hit, the swarm doesn't bounce back
  • Charge-at-close via Stripe; idempotency guards every transition

Buy Now

Single-buyer one-off purchase against a finalized branded good. Goes straight to capture — no minimum, no waiting window. The right path for re-stocks, recognition gifts, and individual asks that don't need a cohort.

  • Per-good toggle: admins decide which BGs accept Buy Now
  • Same Stripe rails as swarms — one charge, one shipment
  • Inherits the same brand-safe mockup approval flow
  • Single-line cart with full split-ship support

Gifting

Prepaid pool for a curated catalog. Org pays once at launch; recipients claim via a public link (no Minnow account needed). Unspent balance refunds at campaign close. Tuned for client thank-yous, employee anniversaries, and event swag.

  • Pick-one, pick-to-budget, or assigned-single choice models
  • Recipients claim via /gift/<token> — token is the auth
  • Single Stripe Checkout at launch; per-claim is on-platform only
  • Automatic refund of unclaimed balance at close

On-demand

Single units, decorated and shipped on demand — no minimum order, no cohort, no waiting window. The right path for one-off requests, new-hire kits, and replacements that shouldn't wait for the next swarm.

  • Order a single unit at the on-demand price
  • Inherits the same brand-safe mockup approval flow
  • Full split-ship support, same as every other flow
  • Great for new hires, replacements, and ad-hoc asks

Build

Storefronts your team will actually use.

Drag-and-drop block composition, AI-assisted copy + image generation, and per-program branding. Configure once, repeat across every program.

Storefront builder

Drag-and-drop block composition. 10 block types (header, hero, heading, rich text, image, product grid, CTA, footer, announcement, embed) compose into per-program pages. Multi-program orgs run distinct storefronts with their own brand chrome.

  • Per-storefront primary color, fonts (curated Google Fonts), custom HTML
  • AI-assisted field fill + block fill + image generation
  • Container-query responsive — every block reflows on its own
  • Mode-locked: Purchasing storefronts host swarms; Gifting hosts campaigns

AI mockup composer

Generate, review, and approve product mockups in one place. Multi-model routing (FLUX.1 Pro, Ideogram, Recraft) picks the best engine per artwork — text-heavy designs route to Ideogram; vector logos to Recraft; photos to FLUX. The composer learns which model wins per context and shifts traffic accordingly.

  • Thompson Sampling bandit picks per (decoration × text × style) bucket
  • Admin override on every render — pin a model when you know better
  • Cost-per-approved-design metric on the admin dashboard
  • Designer feedback (approve/reject/reroll) trains the router

Custom domain

Bring your own vanity hostname (shop.acme.com). The platform handles DNS records, Vercel domain provisioning, and HTTPS automatically. Storefronts served from your domain still inherit Minnow's platform features.

  • SUBDOMAIN (CNAME) + APEX (A-record) flows both supported
  • Re-check + verification status surfaced live in /manage/settings
  • Verified domains take over routing; unverified falls back to <org>.withminnow.com
  • Platform-admin override for manual verification when needed

Members + groups + seats

Per-org membership with three admin roles (Owner, Admin, Manager) and unlimited buyer accounts. OrganizationGroup model layers brand hierarchy on top — useful for multi-subsidiary corps with shared catalog access.

  • Buyers are unlimited and free on every tier
  • Seat allowance covers owners + admins + managers only
  • Per-org seat override on /admin/organizations/[id]
  • Magic-link invitations; no password handling on either side

Collect + engage

Get the data — and get the team involved.

Intake forms, internal design contests, and on-page urgency — the pieces that turn a catalog into a program people care about.

Forms

Collect addresses, approvals, and survey responses before anything ships — or gather details from field reps and VIP customers. Gate a purchase on a required form, or spin a gift roster straight from responses — no spreadsheet round-trips.

  • Field types incl. file upload, groups, and repeaters
  • Required-form gate at commit / Buy Now / checkout
  • Gift-recipient roster spawned straight from responses
  • CSV export + per-form response analytics

Swag contests

Run an internal design contest end to end — collect submissions, let the team vote, and produce the winning design as a real swarm. Turns a merch drop into a moment people opt into.

  • Submit → vote → produce, in one flow
  • Composer-assisted entries stay on-brand
  • The winning design launches straight into a swarm
  • Built on the same storefront + block system

Countdown & announcements

Drop a live countdown or announcement bar on any storefront to create urgency around a closing swarm or claim window. Server-rendered, ticks client-side, no code.

  • Countdown block with real time-to-close math
  • Announcement bar for launches + deadlines
  • Block-native — add it in the storefront builder
  • Container-query responsive like every block

Brand-safe

On-brand by default. No exceptions.

Upload the brand guide once. Every downstream mockup, copy generation, and approval gate checks against it automatically.

Brand library

Upload a brand-guide PDF; the AI extracts candidate colors, fonts, voice rules, and design constraints. Admin reviews each before saving. Every downstream mockup, copy generation, and rule check pulls from this single source of truth.

  • PDF ingestion via Gemini multimodal — covers most brand decks out of the box
  • Single OrganizationBrandAsset model with LOGO / COLOR / FONT / DOCUMENT / GUIDELINE discriminator
  • Linked assets attach to BrandRules with STRICT or OVERRIDEABLE severity
  • Voice profile + design profile derived from the same library

Rule engine

Pure-function rule evaluator runs against every composer render. ALLOWED_COLORS, ALLOWED_FONTS, REQUIRED_LOGO checks happen automatically. STRICT violations block save; OVERRIDEABLE violations warn and require explicit acknowledgment.

  • Rule type inferred from linked-asset kinds — no per-rule wiring
  • STRICT vs OVERRIDEABLE severity per rule, set on creation
  • Violations cached on the Design row for audit trail
  • Admin telemetry tracks violation rate per org + per render

Voice profile

Captures your team's tone, vocabulary, and phrasing rules from the brand guide. Every AI text helper (block fill, concierge match reasoning, mockup descriptions, gifting recipient emails) routes through the profile so generated copy sounds like your team wrote it.

  • Full-profile rebuild + inject pattern — voice carries across every helper
  • Per-org isolation; no cross-tenant voice contamination
  • Available on every tier (free + Growth + Enterprise)
  • Pairs with the AI usage dashboard to monitor effective prompts

Approval gates

Mockup requests flow through a review queue before becoming long-lived BrandedGoods. Admins see the proof, approve or reject, and only approved goods can host swarms or Buy Now. No accidental launches against unapproved designs.

  • Designer → admin review → org admin approves → BrandedGood mints
  • Reject path with reason text; designer can iterate without losing history
  • Cancel-and-recommit, not edit — historical orders never see retroactive design changes
  • Snapshot discipline: BrandedGood freezes price + decorations at approval

Operate

Production, fulfillment, and telemetry — all in one place.

Captured orders flow into work orders, split-ship handles distribution, and admin dashboards surface friction before it becomes a problem.

Production tracking

The Minnow platform handles production end-to-end — vendor selection, work orders, invoicing — so you don't have to. Your team gets a clean stage view: Preparing → In production → Shipped → Delivered, with tracking numbers and timestamps. Email + in-app notifications when goods ship + arrive.

  • Stage-focused dashboard at /manage/production — no vendor handoff details to wade through
  • Carrier + tracking visible as soon as the shipment moves
  • Email notifications on shipped + delivered events for every org admin
  • Platform team handles the supply-chain orchestration

Kits & inventory

Bundle multiple goods into a pre-stocked welcome kit. Recipients draw from real inventory at claim time; an append-only ledger tracks every reservation, ship, and recount, and low-stock alerts keep it topped up.

  • Append-only InventoryAdjustment ledger — the stock truth
  • Structured production runs (POs, ASNs, dual-gate sample approval)
  • ReorderTrigger alerts when available stock dips below threshold
  • Stocked gifting draws from the kit instead of producing per claim

Split-ship

One order can ship to N destinations. Each OrderShipment row carries a discriminator (LOCATION vs BUYER_ADDRESS), ship-to snapshot fields, per-shipment aux totals, and optional production notes. Sum of OrderShipment quantities equals the order's total.

  • Hybrid shipping policy — orgs opt in to buyer addresses per-org
  • Cost variance between destination kinds frozen at commit
  • Production notes per shipment for fulfillment-side instructions
  • Aggregate fulfillment + shipping totals derived from children, never stored twice

AI usage + composer telemetry

Two admin dashboards track every AI call + every mockup render. Per-org daily quotas, success rates, and prompt-effective metrics on one; render volume, friction (regenerate attempts), and ratings on the other. The composer telemetry surfaces low-rated designs for follow-up.

  • Daily soft quotas per AI helper kind (STYLE_GUIDE_EXTRACT, CONCIERGE, BLOCK_COPY, IMAGE, …)
  • AiUsageLog row per call with succeeded flag + token cost
  • Composer dashboard surfaces designs with adherence or quality ≤ 2★
  • Cross-org admin views at /admin/ai-usage + /admin/composer

Vendor + cost streams

Three orthogonal cost streams per branded good (product, fulfillment, shipping). Each BrandedGood snapshots vendor rate cards at approval time so historical orders price correctly even after vendor renegotiation. Cost preview surfaces margin before launch.

  • Per-vendor rate cards (decoration + fulfillment) — auditable + versioned
  • Cost stream snapshot frozen at BG approval; never rewrites history
  • VendorCapability enum lets one vendor wear multiple hats
  • Margin (in basis points, integer) feeds the cost-preview panel

Earn back

Rebates, protection, transparent pricing.

The economic moats. Pay for what you use, get money back as you grow, and never pay more than you committed at.

Volume rebate program

Every captured order on your plan accrues toward a rebate at period close (quarterly or annual). Rate climbs with your tier — up to 10% at Growth, custom at Enterprise. The rebate posts as account credit against your next invoice or refunds out.

  • Per-org OrganizationRebate row per period (QUARTERLY or ANNUAL)
  • Auto-rollover at period close (ACCRUING → EARNED → PAID)
  • Lifetime accrued / paid / awaiting payment visible on /manage/billing
  • Platform AR queue handles payments at /admin/rebates

Buyer protection

The first of Minnow's 11 platform invariants: a buyer never pays more than the price they committed at. If the swarm closes at a higher unit price (one of the failure modes the schema is designed to prevent), the buyer's committed price wins. Backed by transition-level event tables and idempotency keys.

  • Append-only SwarmEvent + OrderEvent tables — every transition logged
  • Idempotency keys at the action layer prevent double-charge
  • Buyer commits at price X → charge at min(X, final close price)
  • 11 invariants pinned in tests; cross-org isolation enforced at the row level

Transparent pricing

Pay for seats — owners, admins, and managers. Buyers are unlimited and free on every tier. Annual billing saves up to 20%; founding-cohort accounts lock in a 50% lifetime discount. No surprise overages, no per-buyer pricing.

  • Same price for 100-buyer orgs as 1,000-buyer orgs at the same seat count
  • Founding-cohort offer: 50% lifetime discount + direct founder line
  • Annual lock-in for the full term — no mid-term overage on seats
  • Switch plans anytime; upgrades prorate, downgrades land at term end

Pick the plan that fits.

Every feature on this page is available on every paid tier. Plans differ in capacity (seats, storefronts, campaigns) and AI generation quotas — not in what the platform can do.

See it in motion.

14 days. No card. Magic-link sign-in. Spin up a storefront, launch a swarm, see what the platform actually does.