Skip to content

0xjitsu/creator-command-center

Repository files navigation

Creator Command Center

Open-source creator outreach platform for GTM Engineering

License Deploy with Vercel TypeScript PRs Welcome Supabase Next.js

Quick Start · Docs · Deploy · Contributing


Why This Exists

GTM teams manage creator outreach in spreadsheets. Contacts live in one tab, DM drafts in another, follow-up schedules in a third. Nothing talks to each other, nothing is automated, and pipeline visibility is nonexistent.

There is no open-source tool that bridges discovery → outreach → conversion for creator programs. Creator Command Center fills that gap with a purpose-built dashboard, a multi-channel outreach engine, and an API surface designed for both humans and AI agents.

Problem How CCC Solves It
Scattered contacts across sheets and DMs Unified CRM with filters, search, and inline editing
Manual copy-paste outreach Template engine with per-platform send (email API, DM automation)
No follow-up discipline Automated follow-up sequences with reply detection
Zero pipeline visibility Real-time funnel analytics and conversion metrics
Can't plug into agent workflows REST API + planned MCP server for AI agent integration

Quick Start

# Clone and install
git clone https://github.com/0xjitsu/creator-command-center.git
cd creator-command-center
pnpm install

# Configure environment
cp apps/command-center/.env.example apps/command-center/.env.local
# Edit .env.local with your Supabase + Google OAuth credentials

# Seed sample data (144 creators)
cd packages/db && pnpm seed:all

# Start dev server
cd ../.. && pnpm dev
# Open http://localhost:3000

Features

Feature Status Description
Creator CRM Live 144 creators with filters, search, bulk actions, inline stage editing, column visibility
Outreach Queue Live Draft, review, and send personalized messages across platforms
DM Focus Mode Live One-DM-at-a-time queue with editable textarea, progress bar, rate limit badges
Campaign Templates Live Cold DM, cold email, and follow-up sequences with archetype-aware variations
CSV Import Live Upload CSV, map columns, preview, batch insert with deduplication
Analytics Live Pipeline funnel visualization, platform distribution, conversion metrics
Rate Limiter Live Per-platform daily caps, warm-up schedule, circuit breaker (auto-pause on high failure rate)
Gmail API Live OAuth connect/disconnect, RFC 2822 send, token refresh, reply detection
Follow-Up Automation Live Daily cron job: reply detection, auto-send email follow-ups, queue DM follow-ups as drafts
OAuth Connections Live Connect Instagram (Meta), TikTok, and Gmail accounts via Settings page
Supabase Realtime Live Live dashboard updates — creators table and outreach queue auto-refresh on data changes
DM Automation Server Live Local Playwright HTTP server for automated DM sending from the dashboard UI

How It Works

                     ┌──────────────────────────────┐
                     │       COMMAND CENTER          │
                     │    Next.js 16 + shadcn/ui     │
                     │                               │
                     │  Creators │ Queue │ Analytics  │
                     │  Import │ Settings │ Guide     │
                     └────────────┬─────────────────┘
                                  │
                     ┌────────────▼─────────────────┐
                     │      OUTREACH ENGINE          │
                     │  Templates → Personalization  │
                     │  → Rate Limiter → Send        │
                     └──┬────┬────┬────┬────────────┘
                        │    │    │    │
                   Gmail  IG  TikTok Twitter
                   (API) (DM)  (DM) (Copy)
                                  │
                     ┌────────────▼─────────────────┐
                     │         SUPABASE              │
                     │  PostgreSQL + Realtime         │
                     │                               │
                     │  creators · outreach_log      │
                     │  rate_limit_state · oauth      │
                     └──────────────────────────────┘

Pipeline Stages

Prospect → Contacted → Replied → Negotiating → Onboarded → Active
                                                         ↘ Declined

Each stage transition is driven by the outreach lifecycle state machine — events like initial_sent, reply_detected, and sequence_complete automatically advance both the pipeline stage and DM status on the creator record.


Project Structure

creator-command-center/
├── apps/
│   └── command-center/          # Next.js 16 dashboard
│       └── src/
│           ├── app/             # App Router pages + API routes
│           │   └── api/
│           │       ├── outreach/
│           │       │   ├── send/        # Server-side email send with rate limiter
│           │       │   ├── launch/      # Template-based draft generation
│           │       │   ├── approve/     # Approve/skip outreach drafts
│           │       │   ├── update/      # Edit draft content before sending
│           │       │   └── check-rate/  # Rate limit status per platform
│           │       ├── auth/
│           │       │   └── gmail/       # Gmail OAuth flow + callback
│           │       ├── import/          # Bulk CSV/JSON import
│           │       ├── analytics/       # Pipeline stats + conversion metrics
│           │       └── cron/
│           │           └── follow-ups/  # Daily Vercel Cron (9am UTC)
│           ├── components/      # React components (shadcn/ui)
│           └── lib/
│               ├── outreach-lifecycle.ts  # Status state machine
│               ├── gmail.ts              # Gmail API client
│               ├── rate-limiter.ts       # Token bucket + circuit breaker
│               └── supabase-server.ts    # Server Supabase client
├── packages/
│   └── db/                      # Database layer
│       ├── migrations/          # SQL schema files
│       └── seed/                # CSV + JSON import scripts
├── campaigns/
│   └── templates/               # Outreach message templates (Mustache-style)
├── scout/                       # Creator discovery + automation
│   ├── dm-automator.ts          # Playwright DM automation CLI
│   ├── dm-server.ts             # Playwright HTTP server (port 4100)
│   └── data/                    # JSON batch outputs
├── docs/                        # Architecture and setup docs
├── vercel.json                  # Cron schedule config
└── pnpm-workspace.yaml          # Monorepo config

Developer Setup

Database (Supabase)

  1. Create a new Supabase project
  2. Run migrations in order via the SQL editor:
    • packages/db/migrations/001_initial.sql
    • packages/db/migrations/002_outreach_automation.sql
  3. Enable Realtime on creators and outreach_log tables

OAuth Configuration

Provider Setup
Google (Gmail) Create OAuth credentials at console.cloud.google.com. Enable Gmail API. Set redirect URI to https://your-app.vercel.app/api/auth/gmail/callback
Instagram (Meta) Create an app at developers.facebook.com. Request instagram_basic and instagram_manage_messages permissions
TikTok Create an app at developers.tiktok.com. Request user.info.basic scope

Environment Variables

Variable Required Description
NEXT_PUBLIC_SUPABASE_URL Yes Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY Yes Supabase anonymous/publishable key
SUPABASE_SERVICE_ROLE_KEY Yes Supabase service role key (server-side)
GOOGLE_CLIENT_ID Yes Google OAuth client ID
GOOGLE_CLIENT_SECRET Yes Google OAuth client secret
NEXTAUTH_SECRET Yes NextAuth session encryption secret
NEXTAUTH_URL Yes NextAuth callback URL
GMAIL_REDIRECT_URI Yes Gmail OAuth callback URL
META_APP_ID No Meta/Facebook app ID (for Instagram DMs)
META_APP_SECRET No Meta/Facebook app secret
META_PAGE_ID No Facebook Page ID connected to Instagram Business
TIKTOK_CLIENT_KEY No TikTok developer client key
TIKTOK_CLIENT_SECRET No TikTok developer client secret
CRON_SECRET Yes Secret token to authenticate Vercel Cron jobs

Copy .env.example to .env.local and fill in the values.

DM Automation Setup

The DM automation server runs locally alongside the dashboard:

cd scout && npm install && npx playwright install chromium
npm run server
# Server runs at http://localhost:4100

Once running, the dashboard auto-detects it and shows automation controls in the DM Focus tab. Session cookies persist at ~/.playwright-dm-session/.

Running Tests

pnpm test:e2e      # Playwright end-to-end tests

Customization

Campaign Templates

Templates use Mustache-style {{variable}} placeholders. Located in campaigns/templates/:

Template Purpose
cold-email.md Initial email outreach
cold-dm.md Initial DM on social platforms
follow-up-1.md First follow-up (3-5 days after initial)
follow-up-2.md Final follow-up (7-10 days after FU1)

Available template variables:

Variable Source
{{name}} Creator display name
{{handle}} Platform handle
{{niche}} Creator niche/category
{{specific_hook}} Personalized hook for the creator
{{content_idea}} Suggested collaboration idea
{{sender_name}} Your name
{{product_name}} Your product name
{{product_url}} Your product URL
{{program_name}} Your creator program name
{{value_prop}} Value proposition for the creator

Pipeline Stages

Default stages: ProspectContactedRepliedNegotiatingOnboardedActive (with Declined as an exit). Modify the stage enum in the database migration and update src/lib/outreach-lifecycle.ts to add custom stages.

Rate Limits

Platform Daily Cap Warm-up Delay
Gmail 500/day 20 → 500 over 4 weeks 1-3s
Instagram 100/day 20 → 100 over 4 weeks 8-15s + jitter
TikTok 100/day 20 → 100 over 4 weeks 8-15s + jitter
Twitter 50/day Manual copy N/A

Circuit breaker auto-pauses sending if >10% failure rate in the last 25 sends (30-minute cooldown). Adjust caps and warm-up schedules in src/lib/rate-limiter.ts.

Adding Platforms

  1. Add OAuth flow in src/app/api/auth/<platform>/
  2. Add send logic in src/app/api/outreach/send/
  3. Add rate limit config in src/lib/rate-limiter.ts
  4. Add platform option to the Settings page

Agent Integration

Creator Command Center is API-first — every dashboard action has a corresponding REST endpoint, making it straightforward to integrate with AI agents and automation workflows.

Endpoint Method Agent Use Case
/api/import POST Bulk import creators from discovery pipelines
/api/creators GET Query creators by platform, niche, stage, score
/api/creators POST Add a new creator from an enrichment agent
/api/creators/[id] PATCH Update creator fields (stage, notes, score)
/api/outreach/launch POST Generate draft messages for selected creators
/api/outreach/approve POST Approve or skip outreach drafts
/api/outreach/send POST Send email via Gmail API
/api/outreach/check-rate GET Check rate limit status before sending
/api/analytics GET Pull pipeline metrics for reporting

Planned

Feature Status
MCP Server Planned — expose CCC as a Model Context Protocol server for Claude and other agents
Skill Definitions Planned — pre-built agent skills (discover, enrich, outreach, follow-up)
Webhook Events Planned — emit events on stage transitions for external automation

Tech Stack

Layer Technology
Framework Next.js + React
Language TypeScript
Styling Tailwind CSS + shadcn/ui
Tables @tanstack/react-table
Database Supabase (PostgreSQL + Realtime)
Automation Playwright
Package Manager pnpm

License

License

Creator Command Center is open source under the GNU Affero General Public License v3.0.

Dual-license model: Free for the community under AGPL v3. If you need a commercial license for proprietary use (no copyleft obligations), contact us.

See CONTRIBUTING.md for contribution guidelines and CLA information.


From spreadsheets to pipeline. Open-source creator outreach for GTM teams.

Deploy with Vercel

Start Here · Report Bug · Request Feature

About

Open-source creator outreach platform for GTM Engineering — CRM, multi-channel messaging, campaign templates, rate limiting, and pipeline analytics. Built with Next.js 16, Supabase, and Playwright. Deploy to Vercel in 5 minutes. AGPL v3 + commercial license available.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors