Skip to content
ShernanJPublic

About

Co-founded UGC marketplace for brands and creators; grew to 100+ users and 5 active brands.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

MerchMe

Two-sided UGC marketplace where brands could launch paid campaigns and creators could apply, submit content, and get paid.

Co-Founder · Jun 2025 – Dec 2025 · 5 brands · 100+ users

Portfolio Case Study

MerchMe

This repository documents the product and engineering work behind MerchMe. Source code is not included.

The idea

MerchMe originally started as a print-on-demand product for helping people launch merch.

As we talked to users and explored the market, a better opportunity became clearer: brands needed short-form creator content, while creators needed a more structured way to find paid UGC work.

So we pivoted MerchMe into a marketplace connecting the two.

What it does

  • Lets brands create profiles and launch paid UGC campaigns
  • Lets creators browse bounties and apply for work
  • Supports direct creator invitations from brands
  • Handles batch content submissions and brand review
  • Gives brands and creators separate dashboards and workflows
  • Includes messaging, referrals, campaign activity, and earnings tracking
  • Handles payments and payout-related flows through Stripe

How it works

Brand creates bounty
        ↓
Creator discovers campaign
        ↓
Apply / get invited
        ↓
Creator submits content
        ↓
Brand reviews submission
        ↓
Approved work
        ↓
Creator gets paid

Technical highlights

  • Built the full marketplace across separate brand and creator experiences
  • Modeled campaigns, applications, invitations, submissions, payouts, referrals, messages, and metrics
  • Built a NestJS REST API backed by PostgreSQL and Supabase authentication
  • Added Stripe payment and webhook flows
  • Used Redis for caching and rate limiting
  • Added SendGrid transactional email flows
  • Scraped Instagram and TikTok metadata where useful for creator profiles
  • Designed batch submission flows around how brands actually review multiple UGC assets

Stack

Next.js · React · TypeScript · NestJS · PostgreSQL · Supabase · Redis · Stripe · SendGrid

Marketplace

The product revolved around bounties.

A bounty represented a paid campaign that creators could discover, apply to, or be invited into.

That gave both sides of the marketplace a simple shared object:

                    Bounty
                  ↙        ↘
               Brand      Creator
                 ↓           ↓
             campaign     application
                 ↓           ↓
              review ← submission
                  ↘        ↙
                    payout

Brand side

Brands could:

  • create a company profile
  • launch campaigns
  • review creator applications
  • invite creators
  • message participants
  • review submitted work
  • track campaign activity

Creator side

Creators could:

  • create a profile
  • browse available bounties
  • apply to campaigns
  • receive invitations
  • submit content
  • track earnings

Public bounty pages

Campaigns also had shareable public pages.

That allowed discovery and referrals to happen outside of the logged-in marketplace instead of requiring every creator to start inside the dashboard.

Architecture

Brand / Creator
      ↓
Next.js frontend
      ↓
NestJS REST API
      ↓
Application logic
├── campaigns
├── applications
├── invitations
├── submissions
├── messaging
├── referrals
└── payments
      ↓
PostgreSQL / Supabase

Supporting services handled specific parts of the system:

Supabase
├── authentication
└── PostgreSQL

Stripe
├── payments
└── webhooks

Redis
├── caching
└── rate limiting

SendGrid
└── transactional email

The brand and creator experiences stayed separate at the product level while sharing the same marketplace data underneath.

Project origin

MerchMe started as a different product entirely.

The first idea was around print-on-demand merch, but user conversations and market research pushed us toward UGC.

The name stayed.

The transaction changed.

Instead of helping someone sell merch, the product became a marketplace where brands could pay creators to produce content.

Implementation notes

Core marketplace model

The product modeled the main objects required for both sides of the transaction:

brand
  ↓
campaign / bounty
  ↓
application or invitation
  ↓
creator
  ↓
submission batch
  ↓
review
  ↓
payment

Supporting systems included:

  • referrals
  • messaging
  • campaign metrics
  • creator profiles
  • brand profiles

Why batch submissions?

UGC campaigns often involve more than one asset.

Instead of treating every piece of content as an isolated submission, MerchMe supported batches so creators could submit several assets together and brands could review them as a group.

That matched the workflow more closely than forcing brands through one asset at a time.

Creator metadata

Where useful, Instagram and TikTok metadata could be collected to add more context to creator profiles.

Payments

Stripe handled payment-related flows and webhooks so marketplace state could react to payment events rather than depending entirely on synchronous frontend actions.

What I learned

The hardest problem was not building more marketplace features.

It was liquidity.

A two-sided marketplace only becomes useful when enough brands and enough creators are active at the same time.

If I were building MerchMe again, I would start much narrower:

  • one brand category
  • one creator type
  • a more manual concierge workflow

I would focus on getting the transaction to repeat before automating every part of the marketplace.

Once the core transaction works consistently, the software becomes much easier to justify.

About

Co-founded UGC marketplace for brands and creators; grew to 100+ users and 5 active brands.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors