Skip to content
SalesforceSkills

Demo Scripts

Generates demo flows, talk tracks, and sample data for customer presentations. Industry templates included.

Story over featuresRealistic dataWow momentsReset-readyFail-safe

Skill Details

Install this skill

Versionv1.1.0AuthorJorge ArteagaLicenseMITSections14

Works with

Claude CodeCursorWindsurf

When This Skill Owns the TaskWorkflow

This skill owns any task where the goal is to build or run a Salesforce demo or PoC:

Required Context to Gather FirstWorkflow

Before generating any demo artifact, ask for or infer:

1
Industry — Financial Services, Healthcare, Manufacturing, Retail, or other?
2
Persona — Who is the demo user? (Sales rep, service agent, executive, admin)
3
Customer pain points — What specific problems does the customer have? (from discovery)
4
Demo duration — How long is the slot? (15 min, 30 min, 60 min)
5
Technical environment — Scratch org, developer org, or customer's sandbox?
6
Wow moment count — How many "aha" moments should the demo have?
7
Audience type — Technical, business, or C-suite?

WorkflowWorkflow

When this skill is triggered, follow these steps in order:

1
Gather context — Use the "Required Context" list above. If missing critical info, ask for it.
2
Build the story arc — Define persona, business problem, and 2-3 outcomes before touching any configuration.
3
Identify wow moments — Choose 2-3 moments that will land hardest for this specific audience.
4
Generate the demo script — Use the SCREEN / CLICK PATH / TALK TRACK / BACKUP / TRANSITION format for every step.
5
Create sample data — Generate industry-appropriate Apex data factory or anonymous Apex.
6
Produce the reset checklist — Ensure the demo can be fully reset in under 2 minutes.
7
Review against the scoring rubric — Score the demo before declaring it ready.

Core Principles

1
Story over features — every demo tells a customer story, not a feature list
2
Realistic data — fake data kills credibility; use industry-appropriate names, numbers, dates
3
Wow moments — choreograph 2-3 moments where the audience reacts
4
Reset-ready — every demo can be reset to a clean state in under 2 minutes
5
Fail-safe — always have a backup path if something breaks live

Demo Flow Design

Structure: Setup / Build / Climax / Close

┌─────────────────────────────────────────────────┐
│  1. SETUP (2 min)                               │
│     Set the scene: who is the user, what's the  │
│     business problem, why does it matter?        │
├─────────────────────────────────────────────────┤
│  2. BUILD (5-8 min)                             │
│     Walk through the workflow. Show how the     │
│     platform solves each pain point.            │
├─────────────────────────────────────────────────┤
│  3. CLIMAX (2-3 min)                            │
│     The "wow moment" — AI insight, automation   │
│     firing, dashboard updating in real-time.    │
├─────────────────────────────────────────────────┤
│  4. CLOSE (1-2 min)                             │
│     Recap value delivered. Connect to customer  │
│     pain points from discovery.                 │
└─────────────────────────────────────────────────┘

Demo Script Template

For each screen/click in the demo, document:

Code
SCREEN: [Page or component name]
CLICK PATH: [Exact clicks to get here]
TALK TRACK: [What to say while showing this screen]
BACKUP: [What to do if this screen fails]
TRANSITION: [How to move to the next screen]

Example Demo Script

Code
SCREEN: Account 360 Dashboard
CLICK PATH: App Launcher > Sales Console > Accounts > "Acme Industries"
TALK TRACK:
  "Imagine you're a sales rep starting your day. You open your key account
   and immediately see everything that matters — health score, open pipeline,
   recent activity, and AI-generated next best actions. No clicking around,
   no switching tabs."
BACKUP: If record page is slow, use the pre-loaded browser tab
TRANSITION: "Now let's see what happens when a new opportunity comes in..."

Mock Data Generation

Apex Data Factory Pattern

Create a reusable data factory for demo setup:

APEX
public class DemoDataFactory {

    public static void createFullDemo() {
        List<Account> accounts = createAccounts();
        List<Contact> contacts = createContacts(accounts);
        List<Opportunity> opps = createOpportunities(accounts);
        createCases(accounts, contacts);
        createTasks(contacts, opps);
    }

    public static List<Account> createAccounts() {
        List<Account> accounts = new List<Account>();
        Map<String, Map<String, Object>> acctData = new Map<String, Map<String, Object>>{
            'Acme Industries' => new Map<String, Object>{
                'Industry' => 'Manufacturing', 'AnnualRevenue' => 4500000,
                'NumberOfEmployees' => 250, 'Rating' => 'Hot',
                'BillingCity' => 'San Francisco', 'BillingState' => 'CA'
            },
            'Globex Corporation' => new Map<String, Object>{
                'Industry' => 'Technology', 'AnnualRevenue' => 12000000,
                'NumberOfEmployees' => 800, 'Rating' => 'Hot',
                'BillingCity' => 'Austin', 'BillingState' => 'TX'
            },
            'Initech Solutions' => new Map<String, Object>{
                'Industry' => 'Financial Services', 'AnnualRevenue' => 8500000,
                'NumberOfEmployees' => 400, 'Rating' => 'Warm',
                'BillingCity' => 'New York', 'BillingState' => 'NY'
            },
            'Stark Enterprises' => new Map<String, Object>{
                'Industry' => 'Energy', 'AnnualRevenue' => 25000000,
                'NumberOfEmployees' => 2000, 'Rating' => 'Hot',
                'BillingCity' => 'Chicago', 'BillingState' => 'IL'
            },
            'Wayne Industries' => new Map<String, Object>{
                'Industry' => 'Healthcare', 'AnnualRevenue' => 15000000,
                'NumberOfEmployees' => 1200, 'Rating' => 'Warm',
                'BillingCity' => 'Boston', 'BillingState' => 'MA'
            }
        };

        for (String name : acctData.keySet()) {
            Map<String, Object> fields = acctData.get(name);
            Account a = new Account(Name = name);
            a.Industry = (String)fields.get('Industry');
            a.AnnualRevenue = (Decimal)fields.get('AnnualRevenue');
            a.NumberOfEmployees = (Integer)fields.get('NumberOfEmployees');
            a.Rating = (String)fields.get('Rating');
            a.BillingCity = (String)fields.get('BillingCity');
            a.BillingState = (String)fields.get('BillingState');
            accounts.add(a);
        }
        insert accounts;
        return accounts;
    }

    public static void resetDemo() {
        delete [SELECT Id FROM Task WHERE Subject LIKE 'Demo:%'];
        delete [SELECT Id FROM Case WHERE Subject LIKE 'Demo:%'];
        delete [SELECT Id FROM Opportunity WHERE Name LIKE 'Demo:%'];
        delete [SELECT Id FROM Contact WHERE LastName LIKE 'Demo_%'];
        delete [SELECT Id FROM Account WHERE Name IN (
            'Acme Industries','Globex Corporation','Initech Solutions',
            'Stark Enterprises','Wayne Industries'
        )];
    }
}

Realistic Data Rules

Quick Data via Anonymous Apex

APEX
// Run in Developer Console > Execute Anonymous
Account a = new Account(
    Name = 'Acme Industries',
    Industry = 'Manufacturing',
    AnnualRevenue = 4500000,
    Rating = 'Hot'
);
insert a;

Contact c = new Contact(
    FirstName = 'Sarah', LastName = 'Chen',
    Title = 'VP of Operations', AccountId = a.Id,
    Email = 'sarah.chen@acme.com'
);
insert c;

Opportunity o = new Opportunity(
    Name = 'Acme - Platform Upgrade',
    AccountId = a.Id, Amount = 450000,
    StageName = 'Negotiation/Review',
    CloseDate = Date.today().addDays(30)
);
insert o;

Industry TemplatesTemplate

Financial Services

Code
PERSONA: Wealth Advisor / Relationship Manager
KEY OBJECTS: Account (Household), Financial Account, Financial Goal, Opportunity
KPIs: Assets Under Management, Client Satisfaction Score, Financial Goal Progress
DEMO STORY:
  "A wealth advisor opens their morning dashboard and sees a client's
   portfolio has dropped below their risk threshold. The system automatically
   flagged it, created a task, and suggested a rebalancing strategy."
WOW MOMENT: AI-generated next best action suggests specific products based on life events

Health Cloud

Code
PERSONA: Care Coordinator / Patient Services Rep
KEY OBJECTS: Account (Patient), Care Plan, Care Program, Clinical Encounter
KPIs: Patient Satisfaction, Care Plan Adherence, Time to Treatment
DEMO STORY:
  "A care coordinator reviews their patient panel. They see a patient
   missed their last appointment and their care plan is falling behind.
   The system proactively identifies at-risk patients and suggests outreach."
WOW MOMENT: Timeline view showing patient journey across all touchpoints

Manufacturing Cloud

Code
PERSONA: Account Manager / Sales Operations
KEY OBJECTS: Account, Sales Agreement, Account Forecast, Opportunity
KPIs: Forecast Accuracy, Run Rate Revenue, Account Growth
DEMO STORY:
  "An account manager reviews their sales agreements dashboard. They
   notice a key account's actual orders are trending below forecast.
   They drill in to see which product lines are underperforming."
WOW MOMENT: Forecast vs Actuals chart with AI-predicted gap analysis

Retail / Commerce

Code
PERSONA: Store Manager / E-Commerce Merchandiser
KEY OBJECTS: Account, Order, Case, Product
KPIs: Revenue per Customer, Return Rate, Customer Lifetime Value
DEMO STORY:
  "A customer reaches out about a delayed order. The service agent
   sees the full purchase history, loyalty status, and can offer a
   personalized resolution — all without switching screens."
WOW MOMENT: Unified customer profile showing online + in-store activity

Wow Moment Choreography

Types of Wow Moments

Choreographing a Wow Moment

Code
SETUP: Prepare the audience for what's about to happen
  "Watch what happens when I save this record..."

ACTION: Perform the trigger action (keep it simple — 1-2 clicks)
  [Click Save]

PAUSE: Let the automation/AI do its work (don't narrate over it)
  [Wait 2-3 seconds]

REVEAL: Draw attention to what just happened
  "Notice how the system automatically created a follow-up task,
   updated the account health score, and notified the account team."

CONNECT: Tie it back to the customer's pain point
  "Today your team does this manually — that's 20 minutes per record.
   This happens in seconds."

Demo Reset Patterns

Reset Checklist

Before every demo:

  • [ ] Run reset script (Anonymous Apex or SFDX)
  • [ ] Clear browser cache and cookies
  • [ ] Close all other Salesforce tabs
  • [ ] Pre-load key pages in separate tabs (backup)
  • [ ] Verify sample data looks correct
  • [ ] Test the critical click path once
  • [ ] Check internet connectivity
  • [ ] Set display to appropriate resolution (1920x1080 recommended)
  • [ ] Hide bookmarks bar and unnecessary browser extensions
  • [ ] Open Developer Console (minimized) for emergency Apex

SFDX Reset Command

Terminal
sf apex run --file scripts/demo-reset.apex --target-org demo-org
sf data query --query "SELECT Name, Industry, Rating FROM Account ORDER BY Name" --target-org demo-org

Rapid Scaffolding

Fastest Path: Nothing to Impressive Demo

Code
Step 1: Create SFDX project (2 min)
  sf project generate --name my-demo --template standard

Step 2: Create LWC component (1 min)
  sf lightning generate component --name accountDashboard --type lwc

Step 3: Build with skills (10-15 min)
  Use sf-lwc-design + sf-lwc-dataviz + sf-lwc-ux + sf-lwc-motion
  to create a polished dashboard component

Step 4: Deploy and configure (3 min)
  sf project deploy start --target-org demo-org
  → Add to Lightning page in App Builder

Step 5: Load sample data (2 min)
  sf apex run --file scripts/demo-data.apex

Total: ~20 minutes from zero to demo-ready

Component Templates for Common Demo Scenarios

Demo Environment Tips

Code
Browser:
- Use Chrome with a clean profile (no personal bookmarks/extensions)
- Set zoom to 100% (Cmd+0 / Ctrl+0)
- Use 1920x1080 resolution if projecting
- Enable "Do Not Disturb" to block notifications
- Pre-load tabs in order of demo flow

Org Preparation:
- Use a dedicated demo org (never demo in a customer's sandbox)
- Set the org's My Domain to something professional
- Upload customer-appropriate logos if personalizing
- Configure compact layouts for clean record headers
- Set up quick actions for demo-specific workflows

Emergency Recovery

Anti-PatternsReference

Scoring Rubric (100 Points)Reference

Score Guide:

  • 85-100: Demo-ready. Ship it.
  • 70-84: Nearly there. Fix story clarity or missing backups.
  • 50-69: Needs rework. Data realism or wow moments are weak.
  • Below 50: Start over with the story arc before building anything.

Cross-Skill IntegrationReference

TaskThis SkillDefer To
Design a demo flow with talk tracksYes
Generate realistic sample data (Apex)Yes
Create industry-specific demo templatesYes
Build the LWC component powering the demoPartiallysf-lwc-dataviz, sf-lwc-ux
Deploy and configure demo environmentPartiallysf-deploy
Build the accompanying presentation deckNosf-se-presentation
Respond to a customer RFP triggered by the demoNosf-se-rfp
Field TypeRuleExample
Company namesUse recognizable fictional names, not "Test Account 1"Acme Industries, Globex Corp
Person namesUse diverse, realistic namesSarah Chen, Marcus Johnson, Priya Patel
RevenueUse round but believable numbers$4.5M not $4,567,891.23
DatesAlways relative to today, never hardcodedDate.today().addDays(-30)
StagesSpread across the pipeline, not all "Closed Won"2 Prospecting, 3 Negotiation, 1 Closed Won
Phone/EmailUse plausible formatssarah.chen@acme.com, (415) 555-0142
TypeDescriptionExample
AutomationSomething happens automaticallyRecord saved → flow triggers → related records created → toast confirms
AI/IntelligenceSystem provides smart recommendationEinstein Next Best Action surfaces on record page
Real-timeData updates live without refreshDashboard metrics animate to new values after record save
Before/AfterShow the old way vs the new way"Currently this takes 15 clicks. Watch this..." (2 clicks)
Cross-cloudData flows between clouds seamlesslyService case → Sales notified → Marketing journey triggered
ScenarioComponents NeededEstimated Build Time
Account 360Metric cards, activity timeline, related list20-30 min
Sales DashboardKPI row, pipeline chart, leaderboard25-35 min
Service ConsoleCase list, customer card, knowledge sidebar30-40 min
Customer PortalHero banner, case submission, FAQ accordion30-40 min
AI AssistantChat-like interface, recommendation cards20-30 min
ProblemRecovery
Page won't loadSwitch to pre-loaded backup tab
Data looks wrongRun reset script, refresh page
Flow/automation failsShow the configuration, explain what should happen
Component errorUse browser DevTools console to debug, or skip to next section
Internet dropsHave screenshots/recording of the critical demo flow
Anti-PatternWhy It FailsFix
Demoing in production or customer sandboxLive data, unexpected failures, compliance riskAlways use a dedicated demo org
Using "Test Account 1" or "Opportunity 123"Breaks the story, signals lack of preparationUse realistic fictional company names
Narrating features, not outcomesAudience mentally checks outLead with pain points; every screen answers "why does this matter?"
No backup planSingle live failure ends the demoPre-load every critical screen in a separate tab
Demo data all in the same pipeline stageLooks fake, no story arcSpread records across stages to show a realistic workflow
Skipping the reset before a demoPrevious demo's state bleeds inRun reset script as the last step of prep
Showing too many featuresAudience can't remember what they saw3 wow moments max; depth over breadth
CategoryPointsPass Criteria
Story Clarity25Clear persona, business problem, and value narrative
Data Realism20Industry-appropriate names, numbers, and relationships
Wow Moments20At least 2 choreographed wow moments with setup/reveal
Reset-Ready15Can reset to clean state in under 2 minutes
Fail-Safe10Backup paths documented for every critical screen
Polish10Animations, transitions, consistent branding throughout
SkillWhen to Use It
sf-lwc-datavizKPI cards and dashboards are the centerpiece of most demos
sf-lwc-motionAnimations choreograph wow moments and visual polish
sf-lwc-contentIndustry-specific copy makes demos feel real
sf-lwc-experiencePortal demos use Experience Cloud patterns
sf-lwc-themingQuick customer branding for personalized demos
sf-lwc-uxLoading/empty/error states make demos feel production-ready
sf-se-presentationBuild the accompanying slide deck for the demo
sf-se-storytellingCraft the narrative arc and talk track before building
sf-se-discoveryUse discovery outputs to tailor the demo story

Navigate Storytelling & Demos