Appearance
Agent Experience
The core workflow for deal agents — claiming brands, reviewing matches, pitching creators, and managing the deal pipeline.
Home Dashboard (/)
The homepage shows three agent cards (Annie, Charlie, Henry), each displaying:
- Brands — number of assigned brands
- Matches — total creator matches across those brands
- To Pitch / Pitched / Won — counts broken down by pipeline status
- Top Match — highest-scoring creator+brand pair currently assigned
- Pipeline Value — sum of deal values across all matches
Below the agent cards, a quick-links grid provides access to global tools: All Matches, Cross-Sell, Reverse Match, Contract Lifecycle, Category Gaps, Blind Spots, and Available Brands.
Agent Dashboard (/agent/[name])
The main working view for each agent. Loads via GET /api/agent-data/[name] which proxies the ca-data /matches endpoint filtered by agent.
Priority Pitches Tab
A curated list of top unworked matches — high-score creators the agent hasn't pitched yet. Each card shows:
- Creator name (links to
/creator/[slug]) - Brand name (links to
/brand/[slug]) - Match score with color-coded badge (green 90+, lime 80–89, gold 70–79, orange 60–69, gray below)
- Creator's average rate and avg views
- Pitch Narrative — a one-paragraph pre-written pitch angle specific to this creator+brand pair
- 👍 Pitch / 👎 Pass buttons — mark the match as reached out or not a fit. Status is written back to ca-data (
PATCH /matches/:id). - After clicking Pitch, an AI-generated draft pitch email is shown (via
POST /api/generate-pitch). Agents can accept or provide feedback to regenerate.
Pipeline Kanban Tab
All assigned matches organized into a Kanban board by status:
| Column | Status Value | Description |
|---|---|---|
| To Pitch | not_pitched | Not yet contacted |
| Reached Out | reached_out | Initial pitch sent |
| In Negotiation | in_negotiation | Active back-and-forth |
| Won | won | Deal closed |
| Not a Fit | not_a_fit | Declined or deprioritized |
Each card shows creator name, brand, score, and rate. Clicking a card opens a detail view. Status can be updated inline.
Creators Tab
A grid of the agent's roster creators with headshots (served from rosters.creatorsagency.co) and basic stats. Links to /creator/[slug] for each creator.
Available Brands Tab
Shows unassigned brands that could be claimed by the agent. Pulls from GET /api/brand-intel-available. Links to /brands/available for the full filtered list.
Brand Detail Page (/brand/[slug])
The most information-dense page in the app. Loads brand intelligence, match list, Fathom calls, email history, and non-roster creator data.
Overview Stats
Three cards at the top:
- Avg Rate — average deal rate from Monday deliverables (only won/active, not cancelled)
- Avg CPM — weighted average CPM across matched creators
- Past Deals — total deal count from Monday
Match List
All creators matched to this brand, sortable by score, rate, CPM, or views. Each row shows:
- Creator name + headshot
- Match score badge
- Rate / CPM / avg views
- Niche tags
- Platform
- Pitch Narrative — expandable
- Pitch / Pass / Roster buttons
- Conflict warning badge if a creator has an active sponsor conflict (
conflict_database)
Creators They've Worked With
Brands we've previously pitched/won deals with. Shows:
- Creator name + deal count (from Monday deliverables)
- Average view count
- Integration count (deals with that creator)
- Pitch narrative if available
Brand Intelligence Panel
From the brand_intel record:
- Ideal Creator Archetype — description of the type of creator this brand targets (can be a plain string or a
{description, requirements}object) - Verticals — content categories this brand buys
- Content Themes — thematic patterns from their sponsor history
- Platforms — where they run campaigns
- Agencies — other agencies they work with (purple badge)
Latest Email Thread
The most recent outbound email thread with this brand, sourced from Close CRM via GET /api/brand-emails/[brand]. Shows:
- Agent who sent it
- Subject + date
- Expandable AI summary (gpt-4o-mini)
Fathom Calls
Past sales calls with the brand synced from Fathom. Shows call title, date, agent, duration, and an expandable summary. Up to the last 5 calls.
Non-Roster Creators
Creators who are actively being paid by this brand but are not on the CA roster. Sourced from GET /api/non-roster/[brand] — shows channel name, platform, subscriber count, and estimated avg views. Useful for outreach.
🔥 Active Badge
Brands with YouTube sponsor activity in the last 30 days show a 🔥 Active badge on the overview card. Data comes from the brand activity sync (last_activity_date field in brand_intel).
Creator Detail Page (/creator/[slug])
Mirrors the brand page, flipped to creator-centric. Shows:
- Creator's stats (subscribers, avg views, rate, CPM)
- Their top brand matches with scores
- Past deal history
- Headshot from Airtable
- Link to their media kit at
rosters.creatorsagency.co
Available Brands (/brands/available)
A ranked list of unclaimed brands. Filterable by:
- Last Contacted — 30 days, 90 days, 6 months, 1 year, Never Contacted
- Actively Spending — brands with
last_activity_datewithin the past 60 days - Min Match Score — filter to brands where top match score exceeds a threshold
Each row shows brand name, last activity date, top match creator + score, and a "View" button to the brand detail page.
Brand Detail (Available) (/brands/available/[slug])
Optimized claim view. Shows match quality, Close CRM context (last contacted agent, subject, date, AI summary), and a Claim button (POST /api/claim) to assign the brand to the viewing agent.
Global Tools
All Matches (/matches)
Browse all ~100K+ matches across every brand and agent. Filterable by agent, brand, creator, status, and min score. Loaded in pages of 500 via ca-data.
Cross-Sell (/cross-sell)
241 recommendations where a creator who has an existing deal with Brand A also has a high match score with Brand B. Useful for agents to expand existing brand relationships.
Reverse Match (/reverse-match)
121 creators each with a list of their top target brands. Creator-first view — useful when an agent is starting from a creator they want to place.
Contract Lifecycle (/contract-lifecycle)
1,473 Copper deals organized into lifecycle buckets: Active, Renewed, Lapsed (6–12 months), Lapsed (12+ months), and Lost. Helps agents find renewals and re-engagement opportunities.
Category Gaps (/category-gaps)
373 brands in categories where CA has strong creators, but the brand is not a current CA client. Sorted by sponsor activity volume. Surface area for new business.
Agent Blind Spots (/agent-blind-spots)
150 brands with 15+ creator channels they sponsor but no CA agent is actively pursuing. High-opportunity, low-coverage brands.
Pitch Generation
When an agent clicks the Pitch button on any match row, a draft pitch email is generated via POST /api/generate-pitch. The prompt uses:
- Creator name, stats (views, subscribers, rate, CPM)
- Brand name and intel (verticals, ideal creator archetype)
- Pitch narrative from the match record
The agent can regenerate with feedback notes. After using a pitch, the match status is updated to reached_out.