★ Master pipeline

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.

★ Outbound funnel

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.

DMs sentoutbound first-touches
Replied— %
Qualified— %
Booked— %
Scanned— %
Paid— %

By variant (which DM template is converting)

cold outbound only
VariantSentRepliedQualBookedPaidReply %Pay %
no outbound DMs logged yet · click "Log outbound DM" to start

All outbound + inbound leads

merged view
First touchSourceVarNameContactTypeStatusQuotedPaid
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.

★ Revenue dashboard

$ closed · MTD · YTD · lifetime

Pulled from projects.stage = 'paid'. Tier breakdown uses price bands ($250 / $400 / $650+).

MTDpaid only
YTDJan 1 → today
Lifetimeall time
Active repsrole = sales_rep
Pending payoutscommissions.pending

By tier × property type

paid revenue
TierPropertyRevenue
no paid projects yet

By sales rep

paid revenue
RepRevenue
no paid projects yet
★ Booking calendar (write)

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.

SunMonTueWedThuFriSat

Upcoming bookings

DateWindowCustomerAddressRepStatusQuote
no bookings yet
★ Rep manager

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 namePhoneUser IDJoinedRole
no reps yet — promote a user above
★ Client manager

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 namePhoneUser IDJoined
no clients yet
★ Commission approver

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.

Pending $
Paid $ (lifetime)
Rows pending
CreatedRepProjectRateAmountStatus
no commissions yet
★ Asset / deliverable manager

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.

ProjectStagePriceSplat URLViewer URLMB
no projects yet
★ Deposit / invoice tracker

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).

Total billed
Paid
Balance owed
IssuedInvoiceStageQuoteDepositBalancePaid?
no invoices yet
★ Audit log

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)KindActorProjectPayload
no events yet
★ Scanner workflow · phone-first

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.

JOB no project
step — / — 0%
loading workflow…