Guides

Demo & sales guide

How to run a compelling demo of OpsDash, switch tiers for sales calls, and use the built-in seed data.

The demo narrative

The most effective demo follows the profitability story:

  1. Open the Dashboard — show KPI cards: Pipeline Value, Won Revenue, Win Rate. Ask: “Do you know these numbers right now without opening a spreadsheet?”
  2. Open the Pipeline (CRM → Deals) — show a deal in Proposal stage. “This is the money in the funnel.”
  3. Click a won deal — show it's linked to a Project. “The moment a deal is Won, delivery starts. No re-entry.”
  4. Open the linked Project — show tasks, assignees, time tracking. “Your team logs time here.”
  5. Go to Dashboard — show Expected Revenue (weighted pipeline). “This is what you should expect this quarter based on probability.”
  6. Ask the question: “If your senior developer spends many hours on a fixed-price project, do you know labor cost vs. margin right now — not after close?” Pause. “OpsDash connects deal value and delivery work so you can see it.”
  7. Show Reports — Pipeline Velocity, Project Progress, Account Analytics. “This is the operating system for your entire business.”

Setting up demo data

Fastest path: supabase db reset — resets and re-seeds from supabase/seed.sql. The seed creates:

  • 12 contacts with extended fields (lead source, company size, industry)
  • 8 companies including several with renewal dates and upsell opportunities
  • 15 deals across all pipeline stages (including Won deals spread across 12 months — gives Analytics realistic YoY shapes)
  • 3 projects linked to won deals, with tasks, subtasks, and time entries
  • 2 published forms with submissions
  • 9 custom field definitions across all entity types
  • Support tickets at various priority/category/status combinations

To connect your user to the demo org:

-- Find your user UUID
SELECT id, email FROM auth.users;

-- Link to demo org
INSERT INTO public.org_members (user_id, org_id, role)
VALUES ('<your-uuid>', '00000000-0000-0000-0000-000000000001', 'owner');

-- Switch to demo org
UPDATE public.users
SET current_org_id = '00000000-0000-0000-0000-000000000001'
WHERE id = '<your-uuid>';

Switching plates for sales demos

To show what a higher plate unlocks during a demo, set the org's plate directly on its subscription. Gating is resolved solely from subscriptions.plan — when it holds a plate id (free | studio | sales | growth | full_loop | agency), that IS the plate; any other value (including the retired pro/business/enterprise strings) resolves to free. There is no sync_entitlements_from_plan RPC — setting the plan is all that's needed. In dev/demo you can also use the bottom-right plate switcher, which writes subscriptions.plan for you.

-- Switch demo org to the Full Loop plate (any plate id works)
UPDATE public.subscriptions
SET plan = 'full_loop', status = 'active'
WHERE org_id = '00000000-0000-0000-0000-000000000001';

Reset to Free to demonstrate gating and upgrade prompts:

UPDATE public.subscriptions
SET plan = 'free', status = 'active'
WHERE org_id = '00000000-0000-0000-0000-000000000001';

Key objections and responses

ObjectionResponse
We already use HubSpotHubSpot stops when the deal is won. OpsDash connects the sale to the delivery so you can see real margin — HubSpot cannot do that.
Is this a SaaS or software we own?It's deployed on your own server. You own the data. You own the infrastructure. No per-user fees after setup.
What happens when you update the product?Updates come as code changes — you control when to pull and deploy. No forced updates.
Is it secure?All data is scoped by organization with Row-Level Security at the database level. Sessions are in HTTP-only cookies. Every mutation is audit-logged.
Demo & sales — OpsDash Docs | OpsDash