All leads · all reps · all stages
Drag a card between columns to advance its project. Drag onto the rep dropdown above a card to reassign. Filter by rep or property type to thin the noise.
Cold DMs → replies → booked → paid
Log every outbound DM you send (Twitter, Instagram, email). The funnel below shows conversion at each stage. Inbound (brochure form) leads merge in at "qualified". Use the variant filter to compare A/B/C from docs/plume_outreach_templates.md.
By variant (which DM template is converting)
cold outbound only| Variant | Sent | Replied | Qual | Booked | Paid | Reply % | Pay % |
|---|---|---|---|---|---|---|---|
| no outbound DMs logged yet · click "Log outbound DM" to start | |||||||
All outbound + inbound leads
merged view| First touch | Source | Var | Name | Contact | Type | Status | Quoted | Paid | |
|---|---|---|---|---|---|---|---|---|---|
| no leads yet | |||||||||
How this works · honest version: outbound DMs are manually entered (we don't crawl Twitter, that's against TOS). Inbound form submissions land in scan_dashboard.json automatically via /api/agent-proposals?ns=scan and merge in here on refresh. Pay % = Paid / Sent across the whole pipeline. The variant table is your A/B signal — finish 10 of each before drawing conclusions.
$ closed · MTD · YTD · lifetime
Pulled from projects.stage = 'paid'. Tier breakdown uses price bands ($250 / $400 / $650+).
By tier × property type
paid revenue| Tier | Property | Revenue |
|---|---|---|
| no paid projects yet | ||
By sales rep
paid revenue| Rep | Revenue |
|---|---|
| no paid projects yet | |
—
Click a day to add a booking. Click an event to edit / cancel. Source of truth that the rep dashboard's read-only calendar (S5) reads.
Upcoming bookings
| Date | Window | Customer | Address | Rep | Status | Quote | |
|---|---|---|---|---|---|---|---|
| no bookings yet | |||||||
Sales reps · roles · activity
Reps must first sign up via Supabase (or be invited from the Auth dashboard). Once they have a profile row, paste their user_id below to flip their role to sales_rep.
| Display name | Phone | User ID | Joined | Role | |
|---|---|---|---|---|---|
| no reps yet — promote a user above | |||||
All clients · projects · lifetime spend
Click a row to see all of a client's projects. New clients are auto-created when a lead converts; you can still promote an existing user to client manually.
| Display name | Phone | User ID | Joined | |
|---|---|---|---|---|
| no clients yet | ||||
Pending payouts · approve · mark paid
Select rows → Approve (writes audit-log event) → run your Zelle/ACH batch → Mark paid (flips status, stamps paid_at). Export CSV for the bank.
| Created | Rep | Project | Rate | Amount | Status | |
|---|---|---|---|---|---|---|
| no commissions yet | ||||||
Splat URLs · viewer URLs · file sizes
When a 12-month-old client asks for their splat back, find it here in 3 seconds. Edit a row to update splat_url / delivered_url. Files larger than 25 MB are rejected at the API.
| Project | Stage | Price | Splat URL | Viewer URL | MB | |
|---|---|---|---|---|---|---|
| no projects yet | ||||||
Quotes · deposits · balances · paid
One row per project. Tap "Stripe" to copy a payment link to the clipboard (Stripe link generation is handled outside Plume — paste the URL into the delivered_url field once received).
| Issued | Invoice | Stage | Quote | Deposit | Balance | Paid? | |
|---|---|---|---|---|---|---|---|
| no invoices yet | |||||||
Last 200 events · append-only
Every status flip, role change, and commission event lives here. When a rep cries foul, this is the receipt.
| Time (CT) | Kind | Actor | Project | Payload |
|---|---|---|---|---|
| no events yet | ||||
Field playbook
Step-by-step scan job guide. Works on a phone in field conditions — checkboxes queue locally and sync when you regain LTE. Pick the project you're working below.