Generates meeting briefings by aggregating account info, contacts, opportunities, cases, and activity history into structured prep documents with talking points and discovery questions. Use when user says "prep me for my call", "brief me on this account", "meeting prep", "I have a meeting with [company]", "account briefing", "customer briefing", or "prepare for customer meeting".
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Generates meeting briefings by aggregating account info, contacts, opportunities, cases, and activity history into structured prep documents with talking points and discovery questions. Use when user says "prep me for my call", "brief me on this account", "meeting prep", "I have a meeting with [company]", "account briefing", "customer briefing", or "prepare for customer meeting".
Sales reps often have meetings scheduled with little prep time. This skill rapidly synthesizes all available Dataverse information about an account into a concise, actionable meeting brief. In Quick Prep mode, it identifies the specific meeting and attendees and generates a targeted agenda with BANT-gap discovery questions. In Full Briefing mode, it delivers a comprehensive account view with relationship health scoring, stakeholder mapping, and deal history.
Instructions
Mode Detection
Trigger
Mode
Focus
"Prep me for my call with Fabrikam at 2pm"
Quick Prep
Specific meeting โ attendees, agenda, BANT gaps, discovery questions
"I have a meeting with Contoso in 30 minutes"
Quick Prep
Specific meeting โ fast, scannable, action-oriented
"Brief me on Contoso"
Full Briefing
Full account โ health score, stakeholder map, LTV, strategic context
"Give me a full briefing on Fabrikam"
Full Briefing
Full account โ all sections
If a specific appointment is identified, always include the Quick Prep section. Full Briefing sections are added when time permits or explicitly requested.
Workflow
Step 1: Identify the Account and Meeting Context
1.1 Find the Account:
SELECT accountid, name, telephone1, emailaddress1, websiteurl,
address1_line1, address1_city, address1_stateorprovince, address1_postalcode,
industrycode, numberofemployees, revenue, ownershipcode,
description, createdon, primarycontactid, ownerid
FROM account
WHERE name LIKE '%[account_name]%'
AND statecode = 0
Confirm account with user if multiple matches.
1.2 Find Upcoming Appointment (Quick Prep mode or if available):
SELECT appointmentid, subject, scheduledstart, scheduledend,
location, description, regardingobjectid, regardingobjecttypecode, ownerid
FROM appointment
WHERE statecode = 0
AND scheduledstart >= '[today]'
ORDER BY scheduledstart ASC
Filter results where scheduledstart is within the next 7 days and regardingobjectid matches the account or a related opportunity. Present to user if multiple matches.
1.3 Get Meeting Attendees via Activity Party:
If an appointment is found, retrieve attendees from the activityparty table:
SELECT partyid, participationtypemask, addressused
FROM activityparty
WHERE activityid = '[appointmentid]'
Participation type codes:
1 = Organizer
2 = To Recipient / Required Attendee
5 = Owner
9 = Customer
For each external partyid (contact or lead), fetch details:
SELECT contactid, fullname, jobtitle, emailaddress1, telephone1,
accountrolecode, msdyn_decisioninfluencetag, description
FROM contact
WHERE contactid = '[partyid]'
Step 2: Gather Account Intelligence
2.1 Get All Contacts:
SELECT contactid, fullname, firstname, lastname, jobtitle,
emailaddress1, telephone1, mobilephone,
accountrolecode, msdyn_decisioninfluencetag, description
FROM contact
WHERE accountid = '[accountid]'
AND statecode = 0
ORDER BY accountrolecode
2.2 Map Contact Roles:
Classify contacts by buying role based on jobtitle and role fields:
Economic Buyer: C-level, VP, Director with budget authority
Calculate cutoff date programmatically: [90_days_ago] = today minus 90 days.
SELECT activityid, activitytypecode, subject, description,
createdon, actualend, ownerid, statecode
FROM activitypointer
WHERE regardingobjectid = '[accountid]'
AND createdon >= '[90_days_ago]'
ORDER BY createdon DESC
2.4 Analyze Activity Patterns:
Total activities (90 days)
Activity breakdown by type (calls, meetings, emails, tasks)
SELECT opportunityid, name, estimatedvalue, estimatedclosedate,
salesstage, stepname, closeprobability,
budgetstatus, need, purchasetimeframe, decisionmaker, purchaseprocess,
description, currentsituation, customerneed, customerpainpoints,
msdyn_forecastcategory, msdyn_opportunityscore, createdon
FROM opportunity
WHERE accountid = '[accountid]'
AND statecode = 0
ORDER BY estimatedvalue DESC
3.2 Get Opportunity History:
SELECT opportunityid, name, estimatedvalue, actualclosedate, statecode
FROM opportunity
WHERE accountid = '[accountid]'
AND statecode IN (1, 2)
ORDER BY actualclosedate DESC
3.3 Get Products Owned (from won opportunities):
SELECT p.name as product, op.quantity, op.extendedamount, o.name as opportunity,
o.actualclosedate
FROM opportunityproduct op
JOIN opportunity o ON op.opportunityid = o.opportunityid
JOIN product p ON op.productid = p.productid
WHERE o.accountid = '[accountid]'
AND o.statecode = 1
ORDER BY o.actualclosedate DESC
3.4 BANT Gap Analysis (for primary open opportunity):
For the highest-value or most recently active open opportunity, assess qualification status:
Signal
Field
Weak
Moderate
Strong
Budget
budgetstatus
0 (No Budget)
1 (May Buy)
2โ3 (Can/Will Buy)
Authority
decisionmaker
NULL / false
โ
true
Need
need
3 (No need)
2 (Good to have)
0โ1 (Must/Should have)
Timeline
purchasetimeframe
4 (Unknown)
2โ3 (This/Next Year)
0โ1 (Immediate/This Qtr)
Process
purchaseprocess
2 (Unknown)
1 (Committee)
0 (Individual)
Identify all weak/unknown signals โ these drive the discovery questions in Step 6.
Step 4: Gather Support Intelligence
4.1 Get Recent Cases:
Calculate cutoff: [90_days_ago] = today minus 90 days.
SELECT incidentid, title, ticketnumber, createdon, prioritycode,
statecode, statuscode, caseorigincode, casetypecode,
description, customersatisfactioncode, msdyn_casesentiment
FROM incident
WHERE accountid = '[accountid]'
AND createdon >= '[90_days_ago]'
ORDER BY createdon DESC
4.2 Analyze Support Patterns:
Open cases count and severity
Average satisfaction score (customersatisfactioncode: 1=Very Dissatisfied โ 5=Very Satisfied)
Common issue themes from title/description
Any escalations or high-priority open cases
Step 5: Analyze Relationship Health (Full Briefing mode)
5.1 Engagement Metrics:
Days since last meaningful contact (call or meeting)
Total touchpoints in last 90 days
Engagement trend: compare last 30 days vs prior 60 days
Stakeholder coverage: how many distinct contacts engaged
5.2 Relationship Health Score:
Factor
Weight
Scoring
Recent engagement
25%
Active <14 days = High; 14โ45 days = Medium; >45 days = Low
Open opportunities
20%
Active open deal = High; No open deals = Low
Support sentiment
20%
No open cases = High; Open normal = Medium; Escalated = Low
Full Briefing Output (when account-level view requested):
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MEETING BRIEF: [ACCOUNT NAME]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Generated: [Date/Time]
Meeting: [Meeting subject if found]
Scheduled: [Meeting time if found]
Attendees: [Expected attendees if found]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ COMPANY SNAPSHOT
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Company: [Account Name]
Industry: [Industry]
Size: [n] employees | Revenue: $[n]M
Location: [City, State]
Relationship Status: [PROSPECT / ACTIVE CUSTOMER / AT RISK]
Customer Since: [Date] ([n] years)
Account Owner: [Rep Name]
Total Lifetime Value: $[sum of won opportunities]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฅ KEY STAKEHOLDERS
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[For each contact โ name, title, role classification, last contact date, notes]
STAKEHOLDER MAP:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [Economic Buyer] โ
โ โ โ
โ โโโ [Champion] โ CHAMPION โ โ
โ โ โ โ
โ โ โโโ [Technical Buyer] โ โ
โ โ โ
โ โโโ [Blocker/Gap] โ Needs engagement โ ๏ธ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ผ CURRENT OPPORTUNITIES
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[For each open opportunity โ value, stage, close date, BANT status, next steps, risks]
BANT STATUS:
โข Budget: [โ Confirmed / โ ๏ธ Unknown / โ No Budget]
โข Authority: [โ Decision maker confirmed / โ ๏ธ Not identified]
โข Need: [โ Strong / โ ๏ธ Moderate / โ Weak]
โข Timeline: [โ This quarter / โ ๏ธ This year / โ Unknown]
DEAL HISTORY (Won):
[List of won deals with value and date]
TOTAL WON: $[value] | EXPANSION POTENTIAL: [High/Medium/Low]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ RECENT ACTIVITY SUMMARY
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
LAST 90 DAYS: [n] activities | [n] calls | [n] meetings | [n] emails
Trend: [Stable / Increasing / Declining]
RECENT HIGHLIGHTS:
[Date] [Type] with [Contact] โ [Subject] โ [Outcome]
...
ENGAGEMENT GAPS:
โ ๏ธ [Contact name]: Last contact [n] days ago โ [context]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ซ SUPPORT CASE STATUS
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
OPEN CASES: [n]
[Case title | Priority | Age | Status | Summary]
RECENT CLOSED (90 days): [n] | Avg satisfaction: [score]/5
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฏ MEETING PREPARATION
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
SUGGESTED AGENDA:
1โ5 [Agenda points based on open items and opportunity stage]
DISCOVERY QUESTIONS (by BANT gap):
[Questions targeting only identified weak signals]
POSITIVE TALKING POINTS:
โ [Value reinforcement, ROI, recent wins]
ISSUES TO ADDRESS:
โ ๏ธ [Support cases, overdue commitments, competitive mentions]
CONTINGENCY RESPONSES:
[Specific responses for anticipated difficult topics]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ PRE-MEETING ACTION ITEMS
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โก [Action 1 โ e.g., check open case status before meeting]
โก [Action 2 โ e.g., prepare ROI summary]
โก [Action 3 โ e.g., re-send security docs]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ QUICK REFERENCE
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Key Numbers: LTV $[n] | Current Deal $[n] | Employees [n] | Customer [n] yrs
Key Dates: Deal close [date] | Contract renewal [date] | Last purchase [date]
Key Relationships: Champion [name] | Technical [name] | Gap [name]
Products Owned: [list]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Step 8: Create Post-Meeting Task
After delivering the brief, offer to create a follow-up task:
Use create_record with tablename: task
- subject: "Post-meeting: Log notes and next steps for [Account]"
- description: "Meeting with [Contact] on [Date]. Capture: key discussion points, decisions made, action items, next steps."
- regardingobjectid: [accountid or opportunityid]
- scheduledend: [meeting end time + 30 minutes]
- prioritycode: 2
Output Format
Quick Prep: Scannable in under 2 minutes. Meeting header โ deal snapshot โ open items โ agenda โ discovery questions โ watch outs.
Full Briefing: Digestible in under 10 minutes. All Quick Prep sections plus relationship health, stakeholder map, full activity timeline, deal history, contingency responses, and pre-meeting action checklist.
Example Interaction
User Input (Quick Prep):
"Prep me for my call with Fabrikam tomorrow at 2pm."
Skill Output:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
QUICK PREP: FABRIKAM
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Meeting: QBR โ Cloud Migration
Tomorrow, 2:00โ3:00 PM | Teams (link in calendar)
Attendees: Emily Torres (VP Operations) | James Liu (IT Director โ new)
๐ ACCOUNT SNAPSHOT
Manufacturing | 1,200 employees | Customer since 2022 | LTV: $275,000
๐ผ ACTIVE DEAL
Fabrikam Cloud Migration โ $85,000 | Propose | Close: Mar 31
BANT: Budget โ ๏ธ | Authority โ ๏ธ | Need โ | Timeline โ
๐ OPEN ITEMS
โ ๏ธ Overdue task: "Send updated SOW to Emily" โ was due 5 days ago
๐ซ Open case: Priority 2 โ "API integration timeout errors" (12 days open)
๐ SUGGESTED AGENDA
1. Acknowledge API case โ share resolution status
2. Present updated SOW (resolve overdue commitment)
3. Confirm budget approval process (budget gap)
4. Understand James Liu's role in the decision (authority gap)
5. Agree on next steps and decision timeline by Mar 31
โ DISCOVERY QUESTIONS
โข "Has budget been formally allocated for the cloud migration this quarter?"
โข "James โ what's your involvement in evaluating this solution?"
โข "What needs to happen on your end to make a decision by March 31?"
โ ๏ธ WATCH OUTS
โข ๐ด Competitor mentioned in notes โ be ready with differentiation narrative
โข ๐ก Open support case โ coordinate with support before call; acknowledge it first
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
User Input (Full Briefing):
"Give me a full briefing on Contoso."
(Full Briefing output โ all sections as shown in the Full Briefing template above.)
Dataverse Tables Used
Table
Purpose
account
Primary account information
contact
Stakeholder details and role mapping
opportunity
Current and historical deals, BANT fields
opportunityproduct
Products in deals
activitypointer
Activity history
appointment
Meeting context and scheduling
activityparty
Meeting attendees (required/optional)
phonecall
Call history
email
Email history
incident
Support case status
annotation
Notes and additional context
task
Create post-meeting tasks
product
Product names
Key Fields Reference
account:
industrycode (CHOICE) - Industry classification
numberofemployees (INT) - Company size
revenue (MONEY) - Annual revenue
primarycontactid (LOOKUP โ contact) - Main contact
customersatisfactioncode (CHOICE) - Very Dissatisfied(1), Dissatisfied(2), Neutral(3), Satisfied(4), Very Satisfied(5)
Meeting Prep Best Practices
Quick Prep is designed to be generated 15 minutes before a call โ keep it fast and focused
Full Briefing is for QBRs, executive meetings, and renewal discussions โ generate the day before
Action-oriented: focus on what to do, not just what to know
Always address open support cases proactively โ don't let the customer bring it up first
Discovery questions should only target actual gaps โ don't ask about things already confirmed
Generate close to meeting time to ensure fresh data
Examples
Example 1: Quick Meeting Prep
User says: "I have a meeting with Contoso in 30 minutes"
Actions:
Find account "Contoso" and upcoming appointment
Retrieve meeting attendees from activityparty
Get contact details and roles for each attendee
Pull open opportunities and identify BANT gaps
Generate quick prep brief
Result:
QUICK PREP: Contoso - Call at 2:00pm
ATTENDEES:
- John Smith (CFO) - Economic Buyer, first meeting
- Mary Johnson (VP Ops) - Champion, met 3x before
OPEN DEAL: Enterprise Platform - $150K - Propose Stage
BANT Gaps: Timeline not confirmed, procurement not engaged
DISCOVERY QUESTIONS:
1. "What's your target go-live date?"
2. "When should we loop in procurement?"
CAUTION: 1 open support case (P2) - be prepared to address
OBJECTIVE: Confirm timeline, get procurement intro
Example 2: Full Account Briefing
User says: "Give me a full briefing on Fabrikam"
Actions:
Retrieve complete account information
Map all stakeholders with roles and engagement history
Calculate lifetime value and relationship health
Summarize all opportunities (open and closed)
Review recent activities and support cases
Result:
ACCOUNT BRIEFING: FABRIKAM INC
OVERVIEW:
Industry: Manufacturing | Employees: 2,500 | Revenue: $500M
Customer Since: 2022 | Lifetime Value: $450K
RELATIONSHIP HEALTH: Good (78/100)
- Engagement Trend: Stable
- Last Contact: 3 days ago
STAKEHOLDER MAP:
- Tom CEO โ Executive Sponsor (met 2x)
- Lisa VP IT โ Technical Buyer (highly engaged)
- Mark Procurement โ Gatekeeper (not yet engaged)
OPEN OPPORTUNITIES:
1. Analytics Expansion - $80K - Develop Stage
HISTORICAL WINS:
- Platform License (2022) - $200K
- Integration Services (2023) - $170K
OPEN CASES: None
STRATEGIC NOTES:
- Mentioned expansion to Europe in last QBR
- Budget cycle is Q4
Example 3: Prep for Specific Meeting
User says: "Prep me for my call with the Alpine Ski House team at 10am tomorrow"
Actions:
Find tomorrow's 10am appointment with Alpine Ski House
Identify all attendees
Generate tailored prep based on meeting subject and attendees
Result:
MEETING PREP: Alpine Ski House - Demo Call
Tomorrow 10:00am | Teams Meeting
ATTENDEES & CONTEXT:
- Sarah Chen (IT Director) - Technical evaluator, driving this initiative
- James Wilson (CFO) - First time joining, likely budget discussion
MEETING OBJECTIVE: Demo + Budget Alignment
TALKING POINTS FOR CFO:
- ROI from similar implementations (include case study)
- Implementation timeline and resource requirements
- Pricing and payment terms
PREP: Have pricing sheet ready, expect budget questions
Troubleshooting
Error: Account not found
Cause: Name doesn't match exactly or account is inactive
Solution:
Use partial match (LIKE '%name%')
Check for common spelling variations
Include inactive accounts if recently deactivated
Error: No upcoming appointments found
Cause: Meeting not in Dynamics or linked to different record
Solution:
Search by date range instead of regardingobjectid
Check appointments on related contacts
Fall back to Full Briefing mode if no meeting found
Error: Attendee details unavailable
Cause: External attendees not in system or activityparty not populated
Solution: