[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69A0EVH69KAM18KAC0P2EMB":3,"skill-same:01M69A0EVH69KAM18KAC0P2EMB":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M69A0EVH69KAM18KAC0P2EMB","account-briefing-generator",null,"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\".","microsoft\u002Fdataverse-business-skills","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69A0CN12Y1G6WKSVKNHX60T",54,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Faccount-briefing-generator\u002FSKILL.md",[],[19,20,21,22],"account briefing generator","customer","dataverse","prepare","2026-11-10 10:12:30",false,"---\nname: account-briefing-generator\ndescription: 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\".\nmetadata:\n  author: Dataverse\n  version: 1.0.0\n  category: sales-productivity\n---\n\n# Account Briefing Generator\n\nSales 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.\n\n## Instructions\n\n### Mode Detection\n| Trigger | Mode | Focus |\n|---------|------|-------|\n| \"Prep me for my call with Fabrikam at 2pm\" | **Quick Prep** | Specific meeting — attendees, agenda, BANT gaps, discovery questions |\n| \"I have a meeting with Contoso in 30 minutes\" | **Quick Prep** | Specific meeting — fast, scannable, action-oriented |\n| \"Brief me on Contoso\" | **Full Briefing** | Full account — health score, stakeholder map, LTV, strategic context |\n| \"Give me a full briefing on Fabrikam\" | **Full Briefing** | Full account — all sections |\n\nIf a specific appointment is identified, always include the Quick Prep section. Full Briefing sections are added when time permits or explicitly requested.\n\n### Workflow\n\n#### Step 1: Identify the Account and Meeting Context\n\n**1.1 Find the Account:**\n```\nSELECT accountid, name, telephone1, emailaddress1, websiteurl,\n       address1_line1, address1_city, address1_stateorprovince, address1_postalcode,\n       industrycode, numberofemployees, revenue, ownershipcode,\n       description, createdon, primarycontactid, ownerid\nFROM account\nWHERE name LIKE '%[account_name]%'\nAND statecode = 0\n```\n\nConfirm account with user if multiple matches.\n\n**1.2 Find Upcoming Appointment (Quick Prep mode or if available):**\n```\nSELECT appointmentid, subject, scheduledstart, scheduledend,\n       location, description, regardingobjectid, regardingobjecttypecode, ownerid\nFROM appointment\nWHERE statecode = 0\nAND scheduledstart >= '[today]'\nORDER BY scheduledstart ASC\n```\n\nFilter results where scheduledstart is within the next 7 days and regardingobjectid matches the account or a related opportunity. Present to user if multiple matches.\n\n**1.3 Get Meeting Attendees via Activity Party:**\n\nIf an appointment is found, retrieve attendees from the activityparty table:\n```\nSELECT partyid, participationtypemask, addressused\nFROM activityparty\nWHERE activityid = '[appointmentid]'\n```\n\n**Participation type codes:**\n- 1 = Organizer\n- 2 = To Recipient \u002F Required Attendee\n- 5 = Owner\n- 9 = Customer\n\nFor each external partyid (contact or lead), fetch details:\n```\nSELECT contactid, fullname, jobtitle, emailaddress1, telephone1,\n       accountrolecode, msdyn_decisioninfluencetag, description\nFROM contact\nWHERE contactid = '[partyid]'\n```\n\n#### Step 2: Gather Account Intelligence\n\n**2.1 Get All Contacts:**\n```\nSELECT contactid, fullname, firstname, lastname, jobtitle,\n       emailaddress1, telephone1, mobilephone,\n       accountrolecode, msdyn_decisioninfluencetag, description\nFROM contact\nWHERE accountid = '[accountid]'\nAND statecode = 0\nORDER BY accountrolecode\n```\n\n**2.2 Map Contact Roles:**\nClassify contacts by buying role based on jobtitle and role fields:\n- **Economic Buyer:** C-level, VP, Director with budget authority\n- **Technical Buyer:** IT, Engineering, Operations managers\n- **End User:** Individual contributors, Analysts\n- **Champion:** Internal advocate (any level)\n- **Gatekeeper:** Executive Assistant, Procurement\n- **Potential Blocker:** Legal, Security, Finance controllers\n\nUse `msdyn_decisioninfluencetag` where available:\n- 0 = Decision Maker\n- 1 = Influencer\n- 2 = Blocker\n- 3 = Unknown\n\n**2.3 Get Recent Activities (last 90 days):**\n\nCalculate cutoff date programmatically: `[90_days_ago]` = today minus 90 days.\n```\nSELECT activityid, activitytypecode, subject, description,\n       createdon, actualend, ownerid, statecode\nFROM activitypointer\nWHERE regardingobjectid = '[accountid]'\nAND createdon >= '[90_days_ago]'\nORDER BY createdon DESC\n```\n\n**2.4 Analyze Activity Patterns:**\n- Total activities (90 days)\n- Activity breakdown by type (calls, meetings, emails, tasks)\n- Most recent interaction date and type\n- Most engaged contacts (by activity count)\n- Sentiment indicators from description fields: positive (\"happy\", \"pleased\", \"expanding\"), negative (\"frustrated\", \"issue\", \"problem\", \"competitor\", \"evaluating\"), risk (\"renewal\", \"cancel\", \"leaving\")\n\n#### Step 3: Gather Opportunity Intelligence\n\n**3.1 Get Open Opportunities:**\n```\nSELECT opportunityid, name, estimatedvalue, estimatedclosedate,\n       salesstage, stepname, closeprobability,\n       budgetstatus, need, purchasetimeframe, decisionmaker, purchaseprocess,\n       description, currentsituation, customerneed, customerpainpoints,\n       msdyn_forecastcategory, msdyn_opportunityscore, createdon\nFROM opportunity\nWHERE accountid = '[accountid]'\nAND statecode = 0\nORDER BY estimatedvalue DESC\n```\n\n**3.2 Get Opportunity History:**\n```\nSELECT opportunityid, name, estimatedvalue, actualclosedate, statecode\nFROM opportunity\nWHERE accountid = '[accountid]'\nAND statecode IN (1, 2)\nORDER BY actualclosedate DESC\n```\n\n**3.3 Get Products Owned (from won opportunities):**\n```\nSELECT p.name as product, op.quantity, op.extendedamount, o.name as opportunity,\n       o.actualclosedate\nFROM opportunityproduct op\nJOIN opportunity o ON op.opportunityid = o.opportunityid\nJOIN product p ON op.productid = p.productid\nWHERE o.accountid = '[accountid]'\nAND o.statecode = 1\nORDER BY o.actualclosedate DESC\n```\n\n**3.4 BANT Gap Analysis (for primary open opportunity):**\n\nFor the highest-value or most recently active open opportunity, assess qualification status:\n\n| Signal | Field | Weak | Moderate | Strong |\n|--------|-------|------|----------|--------|\n| Budget | `budgetstatus` | 0 (No Budget) | 1 (May Buy) | 2–3 (Can\u002FWill Buy) |\n| Authority | `decisionmaker` | NULL \u002F false | — | true |\n| Need | `need` | 3 (No need) | 2 (Good to have) | 0–1 (Must\u002FShould have) |\n| Timeline | `purchasetimeframe` | 4 (Unknown) | 2–3 (This\u002FNext Year) | 0–1 (Immediate\u002FThis Qtr) |\n| Process | `purchaseprocess` | 2 (Unknown) | 1 (Committee) | 0 (Individual) |\n\nIdentify all weak\u002Funknown signals — these drive the discovery questions in Step 6.\n\n#### Step 4: Gather Support Intelligence\n\n**4.1 Get Recent Cases:**\n\nCalculate cutoff: `[90_days_ago]` = today minus 90 days.\n```\nSELECT incidentid, title, ticketnumber, createdon, prioritycode,\n       statecode, statuscode, caseorigincode, casetypecode,\n       description, customersatisfactioncode, msdyn_casesentiment\nFROM incident\nWHERE accountid = '[accountid]'\nAND createdon >= '[90_days_ago]'\nORDER BY createdon DESC\n```\n\n**4.2 Analyze Support Patterns:**\n- Open cases count and severity\n- Average satisfaction score (customersatisfactioncode: 1=Very Dissatisfied → 5=Very Satisfied)\n- Common issue themes from title\u002Fdescription\n- Any escalations or high-priority open cases\n\n#### Step 5: Analyze Relationship Health (Full Briefing mode)\n\n**5.1 Engagement Metrics:**\n- Days since last meaningful contact (call or meeting)\n- Total touchpoints in last 90 days\n- Engagement trend: compare last 30 days vs prior 60 days\n- Stakeholder coverage: how many distinct contacts engaged\n\n**5.2 Relationship Health Score:**\n| Factor | Weight | Scoring |\n|--------|--------|---------|\n| Recent engagement | 25% | Active \u003C14 days = High; 14–45 days = Medium; >45 days = Low |\n| Open opportunities | 20% | Active open deal = High; No open deals = Low |\n| Support sentiment | 20% | No open cases = High; Open normal = Medium; Escalated = Low |\n| Stakeholder coverage | 20% | 3+ contacts engaged = High; 1–2 = Medium; 0 = Low |\n| Revenue trajectory | 15% | Growing = High; Stable = Medium; Declining = Low |\n\n**Score interpretation:** High factors = Healthy | Mix = At Risk | Mostly Low = Critical\n\n#### Step 6: Generate Talking Points, Agenda, and Discovery Questions\n\n**6.1 Recommended Meeting Agenda (Quick Prep mode — when appointment found):**\n\nBased on opportunity stage and open items, generate a 3–5 point agenda:\n1. Opening: Reference last interaction, confirm agenda\n2. Address any open support issues proactively\n3. Business review: Validate current situation and priorities\n4. Discovery: Fill BANT gaps identified in Step 3.4\n5. Next steps: Define clear outcome before closing\n\n**6.2 Discovery Questions by BANT Gap:**\n\nGenerate targeted questions only for weak\u002Funknown signals identified in Step 3.4:\n\n*Budget gaps (budgetstatus = 0 or 1):*\n- \"Have you allocated budget for this initiative in the current fiscal year?\"\n- \"What's the approval process for a project of this scope?\"\n- \"Are there competing priorities for this budget?\"\n\n*Authority gaps (decisionmaker = false\u002Fnull):*\n- \"Who else will be involved in evaluating and approving this decision?\"\n- \"What does the sign-off process look like on your end?\"\n- \"Is [executive name] engaged in this initiative?\"\n\n*Need gaps (need = 2 or 3):*\n- \"What is the cost to the business if this problem isn't solved this year?\"\n- \"How are you currently handling [pain point from customerpainpoints]?\"\n- \"What would success look like 6 months after implementation?\"\n\n*Timeline gaps (purchasetimeframe = 3 or 4):*\n- \"Is there a hard deadline driving the urgency?\"\n- \"What events or milestones is this decision tied to?\"\n- \"What would cause you to delay this decision?\"\n\n*Process gaps (purchaseprocess = 2):*\n- \"Is this an individual decision or does it go through a committee?\"\n- \"Who else needs to be comfortable before you can move forward?\"\n\n**6.3 Positive Talking Points:**\n- Reference recent wins, product updates, or ROI data relevant to this account\n- Address known pain points from opportunity fields (customerpainpoints, currentsituation)\n\n**6.4 Issues to Address Proactively:**\n- Open support cases — acknowledge before customer raises them\n- Overdue tasks or commitments — address and reset expectations\n- Competitor mentions in notes — prepare differentiation narrative\n- Engagement gaps with key stakeholders (CTO, CFO not engaged)\n\n**6.5 Contingency Responses:**\n- Support frustration → \"I know about [issue] — here's where we are and the resolution timeline...\"\n- Budget pushback → \"We can phase the approach — let me show you what that looks like...\"\n- Competitor comparison → Focus on [integration, support quality, roadmap] differentiation\n- Timeline delay → \"Help me understand what's causing the delay so I can help navigate internally\"\n\n#### Step 7: Generate Brief\n\n**Quick Prep Output** (when specific appointment identified):\n```\n════════════════════════════════════════════════════════════════\n              QUICK PREP: [ACCOUNT NAME]\n════════════════════════════════════════════════════════════════\nGenerated: [Date\u002FTime]\nMeeting: [Meeting subject]\nScheduled: [Time] | [Location\u002FTeams link]\nAttendees: [Name, Title] | [Name, Title]\n\n? ACCOUNT SNAPSHOT\n────────────────────────────────────────────────────────────────\n[Industry] | [n] employees | Customer since [year] | LTV: $[value]\n\n? ACTIVE DEAL\n────────────────────────────────────────────────────────────────\n[Deal Name] — $[Value] | [Stage] | Close: [Date]\nBANT: Budget [✓\u002F⚠️] | Authority [✓\u002F⚠️] | Need [✓\u002F⚠️] | Timeline [✓\u002F⚠️]\n\n? OPEN ITEMS\n────────────────────────────────────────────────────────────────\n⚠️ [Overdue task or commitment — due date]\n? [Open support case — priority and age]\n\n? SUGGESTED AGENDA\n────────────────────────────────────────────────────────────────\n1. [Agenda point 1]\n2. [Agenda point 2]\n3. [Agenda point 3]\n4. [Discovery: BANT gap]\n5. Next steps and decision timeline\n\n❓ DISCOVERY QUESTIONS\n────────────────────────────────────────────────────────────────\n• [Question targeting identified BANT gap]\n• [Question targeting identified BANT gap]\n• [Question targeting identified BANT gap]\n\n⚠️ WATCH OUTS\n────────────────────────────────────────────────────────────────\n• [Risk 1]\n• [Risk 2]\n════════════════════════════════════════════════════════════════\n```\n\n**Full Briefing Output** (when account-level view requested):\n```\n════════════════════════════════════════════════════════════════\n              MEETING BRIEF: [ACCOUNT NAME]\n════════════════════════════════════════════════════════════════\n\nGenerated: [Date\u002FTime]\nMeeting: [Meeting subject if found]\nScheduled: [Meeting time if found]\nAttendees: [Expected attendees if found]\n\n════════════════════════════════════════════════════════════════\n? COMPANY SNAPSHOT\n════════════════════════════════════════════════════════════════\n\nCompany: [Account Name]\nIndustry: [Industry]\nSize: [n] employees | Revenue: $[n]M\nLocation: [City, State]\n\nRelationship Status: [PROSPECT \u002F ACTIVE CUSTOMER \u002F AT RISK]\nCustomer Since: [Date] ([n] years)\nAccount Owner: [Rep Name]\nTotal Lifetime Value: $[sum of won opportunities]\n\n════════════════════════════════════════════════════════════════\n? KEY STAKEHOLDERS\n════════════════════════════════════════════════════════════════\n\n[For each contact — name, title, role classification, last contact date, notes]\n\nSTAKEHOLDER MAP:\n┌─────────────────────────────────────────────────────┐\n│  [Economic Buyer]                                   │\n│       │                                             │\n│       ├── [Champion] ← CHAMPION ✓                  │\n│       │       │                                     │\n│       │       └── [Technical Buyer] ✓              │\n│       │                                             │\n│       └── [Blocker\u002FGap] ← Needs engagement ⚠️      │\n└─────────────────────────────────────────────────────┘\n\n════════════════════════════════════════════════════════════════\n? CURRENT OPPORTUNITIES\n════════════════════════════════════════════════════════════════\n\n[For each open opportunity — value, stage, close date, BANT status, next steps, risks]\n\nBANT STATUS:\n• Budget: [✓ Confirmed \u002F ⚠️ Unknown \u002F ✗ No Budget]\n• Authority: [✓ Decision maker confirmed \u002F ⚠️ Not identified]\n• Need: [✓ Strong \u002F ⚠️ Moderate \u002F ✗ Weak]\n• Timeline: [✓ This quarter \u002F ⚠️ This year \u002F ✗ Unknown]\n\nDEAL HISTORY (Won):\n[List of won deals with value and date]\nTOTAL WON: $[value] | EXPANSION POTENTIAL: [High\u002FMedium\u002FLow]\n\n════════════════════════════════════════════════════════════════\n? RECENT ACTIVITY SUMMARY\n════════════════════════════════════════════════════════════════\n\nLAST 90 DAYS: [n] activities | [n] calls | [n] meetings | [n] emails\nTrend: [Stable \u002F Increasing \u002F Declining]\n\nRECENT HIGHLIGHTS:\n[Date] [Type] with [Contact] — [Subject] — [Outcome]\n...\n\nENGAGEMENT GAPS:\n⚠️ [Contact name]: Last contact [n] days ago — [context]\n\n════════════════════════════════════════════════════════════════\n? SUPPORT CASE STATUS\n════════════════════════════════════════════════════════════════\n\nOPEN CASES: [n]\n[Case title | Priority | Age | Status | Summary]\n\nRECENT CLOSED (90 days): [n] | Avg satisfaction: [score]\u002F5\n\n════════════════════════════════════════════════════════════════\n? MEETING PREPARATION\n════════════════════════════════════════════════════════════════\n\nSUGGESTED AGENDA:\n1–5 [Agenda points based on open items and opportunity stage]\n\nDISCOVERY QUESTIONS (by BANT gap):\n[Questions targeting only identified weak signals]\n\nPOSITIVE TALKING POINTS:\n✅ [Value reinforcement, ROI, recent wins]\n\nISSUES TO ADDRESS:\n⚠️ [Support cases, overdue commitments, competitive mentions]\n\nCONTINGENCY RESPONSES:\n[Specific responses for anticipated difficult topics]\n\n════════════════════════════════════════════════════════════════\n? PRE-MEETING ACTION ITEMS\n════════════════════════════════════════════════════════════════\n\n□ [Action 1 — e.g., check open case status before meeting]\n□ [Action 2 — e.g., prepare ROI summary]\n□ [Action 3 — e.g., re-send security docs]\n\n════════════════════════════════════════════════════════════════\n? QUICK REFERENCE\n════════════════════════════════════════════════════════════════\n\nKey Numbers: LTV $[n] | Current Deal $[n] | Employees [n] | Customer [n] yrs\nKey Dates: Deal close [date] | Contract renewal [date] | Last purchase [date]\nKey Relationships: Champion [name] | Technical [name] | Gap [name]\nProducts Owned: [list]\n\n════════════════════════════════════════════════════════════════\n```\n\n#### Step 8: Create Post-Meeting Task\nAfter delivering the brief, offer to create a follow-up task:\n```\nUse create_record with tablename: task\n- subject: \"Post-meeting: Log notes and next steps for [Account]\"\n- description: \"Meeting with [Contact] on [Date]. Capture: key discussion points, decisions made, action items, next steps.\"\n- regardingobjectid: [accountid or opportunityid]\n- scheduledend: [meeting end time + 30 minutes]\n- prioritycode: 2\n```\n\n### Output Format\n- **Quick Prep:** Scannable in under 2 minutes. Meeting header → deal snapshot → open items → agenda → discovery questions → watch outs.\n- **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.\n\n### Example Interaction\n\n**User Input (Quick Prep):**\n\"Prep me for my call with Fabrikam tomorrow at 2pm.\"\n\n**Skill Output:**\n```\n════════════════════════════════════════════════════════════════\n              QUICK PREP: FABRIKAM\n════════════════════════════════════════════════════════════════\nMeeting: QBR — Cloud Migration\nTomorrow, 2:00–3:00 PM | Teams (link in calendar)\nAttendees: Emily Torres (VP Operations) | James Liu (IT Director — new)\n\n? ACCOUNT SNAPSHOT\nManufacturing | 1,200 employees | Customer since 2022 | LTV: $275,000\n\n? ACTIVE DEAL\nFabrikam Cloud Migration — $85,000 | Propose | Close: Mar 31\nBANT: Budget ⚠️ | Authority ⚠️ | Need ✓ | Timeline ✓\n\n? OPEN ITEMS\n⚠️ Overdue task: \"Send updated SOW to Emily\" — was due 5 days ago\n? Open case: Priority 2 — \"API integration timeout errors\" (12 days open)\n\n? SUGGESTED AGENDA\n1. Acknowledge API case — share resolution status\n2. Present updated SOW (resolve overdue commitment)\n3. Confirm budget approval process (budget gap)\n4. Understand James Liu's role in the decision (authority gap)\n5. Agree on next steps and decision timeline by Mar 31\n\n❓ DISCOVERY QUESTIONS\n• \"Has budget been formally allocated for the cloud migration this quarter?\"\n• \"James — what's your involvement in evaluating this solution?\"\n• \"What needs to happen on your end to make a decision by March 31?\"\n\n⚠️ WATCH OUTS\n• ? Competitor mentioned in notes — be ready with differentiation narrative\n• ? Open support case — coordinate with support before call; acknowledge it first\n════════════════════════════════════════════════════════════════\n```\n\n**User Input (Full Briefing):**\n\"Give me a full briefing on Contoso.\"\n\n*(Full Briefing output — all sections as shown in the Full Briefing template above.)*\n\n### Dataverse Tables Used\n| Table | Purpose |\n|-------|---------|\n| `account` | Primary account information |\n| `contact` | Stakeholder details and role mapping |\n| `opportunity` | Current and historical deals, BANT fields |\n| `opportunityproduct` | Products in deals |\n| `activitypointer` | Activity history |\n| `appointment` | Meeting context and scheduling |\n| `activityparty` | Meeting attendees (required\u002Foptional) |\n| `phonecall` | Call history |\n| `email` | Email history |\n| `incident` | Support case status |\n| `annotation` | Notes and additional context |\n| `task` | Create post-meeting tasks |\n| `product` | Product names |\n\n### Key Fields Reference\n**account:**\n- `industrycode` (CHOICE) - Industry classification\n- `numberofemployees` (INT) - Company size\n- `revenue` (MONEY) - Annual revenue\n- `primarycontactid` (LOOKUP → contact) - Main contact\n- `websiteurl` (URL) - Company website\n- `statecode` (STATE) - Active(0), Inactive(1)\n\n**contact:**\n- `fullname` (NVARCHAR) - Contact name\n- `jobtitle` (NVARCHAR) - Title for role mapping\n- `emailaddress1` (EMAIL) - Primary email\n- `telephone1`, `mobilephone` (PHONE) - Phone numbers\n- `accountrolecode` (CHOICE) - Decision Maker(1), Employee(2), Influencer(3)\n- `msdyn_decisioninfluencetag` (CHOICE) - Decision maker(0), Influencer(1), Blocker(2), Unknown(3)\n\n**opportunity:**\n- `salesstage` (CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)\n- `estimatedvalue` (MONEY) - Deal value\n- `closeprobability` (INT) - Win probability (0-100)\n- `budgetstatus` (CHOICE) - No Committed Budget(0), May Buy(1), Can Buy(2), Will Buy(3)\n- `need` (CHOICE) - Must have(0), Should have(1), Good to have(2), No need(3)\n- `purchasetimeframe` (CHOICE) - Immediate(0), This Quarter(1), Next Quarter(2), This Year(3), Unknown(4)\n- `purchaseprocess` (CHOICE) - Individual(0), Committee(1), Unknown(2)\n- `decisionmaker` (BIT) - Decision maker confirmed (true\u002Ffalse)\n- `msdyn_forecastcategory` (CHOICE) - Pipeline(100000001), Best case(100000002), Committed(100000003), Omitted(100000004)\n- `customerpainpoints` (MULTILINE TEXT) - Customer pain points\n- `currentsituation` (MULTILINE TEXT) - Current situation notes\n\n**activityparty:**\n- `activityid` (LOOKUP) - Links to appointment\n- `partyid` (LOOKUP) - Contact, lead, or systemuser\n- `participationtypemask` (CHOICE) - Organizer(1), To\u002FRequired(2), Owner(5), Customer(9)\n\n**incident:**\n- `statecode` (STATE) - Active(0), Resolved(1), Cancelled(2)\n- `prioritycode` (CHOICE) - High(1), Normal(2), Low(3)\n- `customersatisfactioncode` (CHOICE) - Very Dissatisfied(1), Dissatisfied(2), Neutral(3), Satisfied(4), Very Satisfied(5)\n\n### Meeting Prep Best Practices\n1. **Quick Prep** is designed to be generated 15 minutes before a call — keep it fast and focused\n2. **Full Briefing** is for QBRs, executive meetings, and renewal discussions — generate the day before\n3. Action-oriented: focus on what to do, not just what to know\n4. Always address open support cases proactively — don't let the customer bring it up first\n5. Discovery questions should only target actual gaps — don't ask about things already confirmed\n6. Generate close to meeting time to ensure fresh data\n\n## Examples\n\n### Example 1: Quick Meeting Prep\n\n**User says:** \"I have a meeting with Contoso in 30 minutes\"\n\n**Actions:**\n1. Find account \"Contoso\" and upcoming appointment\n2. Retrieve meeting attendees from activityparty\n3. Get contact details and roles for each attendee\n4. Pull open opportunities and identify BANT gaps\n5. Generate quick prep brief\n\n**Result:**\n```\nQUICK PREP: Contoso - Call at 2:00pm\n\nATTENDEES:\n- John Smith (CFO) - Economic Buyer, first meeting\n- Mary Johnson (VP Ops) - Champion, met 3x before\n\nOPEN DEAL: Enterprise Platform - $150K - Propose Stage\nBANT Gaps: Timeline not confirmed, procurement not engaged\n\nDISCOVERY QUESTIONS:\n1. \"What's your target go-live date?\"\n2. \"When should we loop in procurement?\"\n\nCAUTION: 1 open support case (P2) - be prepared to address\n\nOBJECTIVE: Confirm timeline, get procurement intro\n```\n\n### Example 2: Full Account Briefing\n\n**User says:** \"Give me a full briefing on Fabrikam\"\n\n**Actions:**\n1. Retrieve complete account information\n2. Map all stakeholders with roles and engagement history\n3. Calculate lifetime value and relationship health\n4. Summarize all opportunities (open and closed)\n5. Review recent activities and support cases\n\n**Result:**\n```\nACCOUNT BRIEFING: FABRIKAM INC\n\nOVERVIEW:\nIndustry: Manufacturing | Employees: 2,500 | Revenue: $500M\nCustomer Since: 2022 | Lifetime Value: $450K\n\nRELATIONSHIP HEALTH: Good (78\u002F100)\n- Engagement Trend: Stable\n- Last Contact: 3 days ago\n\nSTAKEHOLDER MAP:\n- Tom CEO → Executive Sponsor (met 2x)\n- Lisa VP IT → Technical Buyer (highly engaged)\n- Mark Procurement → Gatekeeper (not yet engaged)\n\nOPEN OPPORTUNITIES:\n1. Analytics Expansion - $80K - Develop Stage\n\nHISTORICAL WINS:\n- Platform License (2022) - $200K\n- Integration Services (2023) - $170K\n\nOPEN CASES: None\n\nSTRATEGIC NOTES:\n- Mentioned expansion to Europe in last QBR\n- Budget cycle is Q4\n```\n\n### Example 3: Prep for Specific Meeting\n\n**User says:** \"Prep me for my call with the Alpine Ski House team at 10am tomorrow\"\n\n**Actions:**\n1. Find tomorrow's 10am appointment with Alpine Ski House\n2. Identify all attendees\n3. Generate tailored prep based on meeting subject and attendees\n\n**Result:**\n```\nMEETING PREP: Alpine Ski House - Demo Call\nTomorrow 10:00am | Teams Meeting\n\nATTENDEES & CONTEXT:\n- Sarah Chen (IT Director) - Technical evaluator, driving this initiative\n- James Wilson (CFO) - First time joining, likely budget discussion\n\nMEETING OBJECTIVE: Demo + Budget Alignment\n\nTALKING POINTS FOR CFO:\n- ROI from similar implementations (include case study)\n- Implementation timeline and resource requirements\n- Pricing and payment terms\n\nPREP: Have pricing sheet ready, expect budget questions\n```\n\n## Troubleshooting\n\n### Error: Account not found\n**Cause:** Name doesn't match exactly or account is inactive\n**Solution:**\n- Use partial match (LIKE '%name%')\n- Check for common spelling variations\n- Include inactive accounts if recently deactivated\n\n### Error: No upcoming appointments found\n**Cause:** Meeting not in Dynamics or linked to different record\n**Solution:**\n- Search by date range instead of regardingobjectid\n- Check appointments on related contacts\n- Fall back to Full Briefing mode if no meeting found\n\n### Error: Attendee details unavailable\n**Cause:** External attendees not in system or activityparty not populated\n**Solution:**\n- Use email domain to identify company\n- Prompt user to add contact records\n- Note external attendees separately","# Account Briefing Generator\n\nSales 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.\n\n## Instructions\n\n### Mode Detection\n| Trigger | Mode | Focus |\n|---------|------|-------|\n| \"Prep me for my call with Fabrikam at 2pm\" | **Quick Prep** | Specific meeting — attendees, agenda, BANT gaps, discovery questions |\n| \"I have a meeting with Contoso in 30 minutes\" | **Quick Prep** | Specific meeting — fast, scannable, action-oriented |\n| \"Brief me on Contoso\" | **Full Briefing** | Full account — health score, stakeholder map, LTV, strategic context |\n| \"Give me a full briefing on Fabrikam\" | **Full Briefing** | Full account — all sections |\n\nIf a specific appointment is identified, always include the Quick Prep section. Full Briefing sections are added when time permits or explicitly requested.\n\n### Workflow\n\n#### Step 1: Identify the Account and Meeting Context\n\n**1.1 Find the Account:**\n```\nSELECT accountid, name, telephone1, emailaddress1, websiteurl,\n       address1_line1, address1_city, address1_stateorprovince, address1_postalcode,\n       industrycode, numberofemployees, revenue, ownershipcode,\n       description, createdon, primarycontactid, ownerid\nFROM account\nWHERE name LIKE '%[account_name]%'\nAND statecode = 0\n```\n\nConfirm account with user if multiple matches.\n\n**1.2 Find Upcoming Appointment (Quick Prep mode or if available):**\n```\nSELECT appointmentid, subject, scheduledstart, scheduledend,\n       location, description, regardingobjectid, regardingobjecttypecode, ownerid\nFROM appointment\nWHERE statecode = 0\nAND scheduledstart >= '[today]'\nORDER BY scheduledstart ASC\n```\n\nFilter results where scheduledstart is within the next 7 days and regardingobjectid matches the account or a related opportunity. Present to user if multiple matches.\n\n**1.3 Get Meeting Attendees via Activity Party:**\n\nIf an appointment is found, retrieve attendees from the activityparty table:\n```\nSELECT partyid, participationtypemask, addressused\nFROM activityparty\nWHERE activityid = '[appointmentid]'\n```\n\n**Participation type codes:**\n- 1 = Organizer\n- 2 = To Recipient \u002F Required Attendee\n- 5 = Owner\n- 9 = Customer\n\nFor each external partyid (contact or lead), fetch details:\n```\nSELECT contactid, fullname, jobtitle, emailaddress1, telephone1,\n       accountrolecode, msdyn_decisioninfluencetag, description\nFROM contact\nWHERE contactid = '[partyid]'\n```\n\n#### Step 2: Gather Account Intelligence\n\n**2.1 Get All Contacts:**\n```\nSELECT contactid, fullname, firstname, lastname, jobtitle,\n       emailaddress1, telephone1, mobilephone,\n       accountrolecode, msdyn_decisioninfluencetag, description\nFROM contact\nWHERE accountid = '[accountid]'\nAND statecode = 0\nORDER BY accountrolecode\n```\n\n**2.2 Map Contact Roles:**\nClassify contacts by buying role based on jobtitle and role fields:\n- **Economic Buyer:** C-level, VP, Director with budget authority\n- **Technical Buyer:** IT, Engineering, Operations managers\n- **End User:** Individual contributors, Analysts\n- **Champion:** Internal advocate (any level)\n- **Gatekeeper:** Executive Assistant, Procurement\n- **Potential Blocker:** Legal, Security, Finance controllers\n\nUse `msdyn_decisioninfluencetag` where available:\n- 0 = Decision Maker\n- 1 = Influencer\n- 2 = Blocker\n- 3 = Unknown\n\n**2.3 Get Recent Activities (last 90 days):**\n\nCalculate cutoff date programmatically: `[90_days_ago]` = today minus 90 days.\n```\nSELECT activityid, activitytypecode, subject, description,\n       createdon, actualend, ownerid, statecode\nFROM activitypointer\nWHERE regardingobjectid = '[accountid]'\nAND createdon >= '[90_days_ago]'\nORDER BY createdon DESC\n```\n\n**2.4 Analyze Activity Patterns:**\n- Total activities (90 days)\n- Activity breakdown by type (calls, meetings, emails, tasks)\n- Most recent interaction date and type\n- Most engaged contacts (by activity count)\n- Sentiment indicators from description fields: positive (\"happy\", \"pleased\", \"expanding\"), negative (\"frustrated\", \"issue\", \"problem\", \"competitor\", \"evaluating\"), risk (\"renewal\", \"cancel\", \"leaving\")\n\n#### Step 3: Gather Opportunity Intelligence\n\n**3.1 Get Open Opportunities:**\n```\nSELECT opportunityid, name, estimatedvalue, estimatedclosedate,\n       salesstage, stepname, closeprobability,\n       budgetstatus, need, purchasetimeframe, decisionmaker, purchaseprocess,\n       description, currentsituation, customerneed, customerpainpoints,\n       msdyn_forecastcategory, msdyn_opportunityscore, createdon\nFROM opportunity\nWHERE accountid = '[accountid]'\nAND statecode = 0\nORDER BY estimatedvalue DESC\n```\n\n**3.2 Get Opportunity History:**\n```\nSELECT opportunityid, name, estimatedvalue, actualclosedate, statecode\nFROM opportunity\nWHERE accountid = '[accountid]'\nAND statecode IN (1, 2)\nORDER BY actualclosedate DESC\n```\n\n**3.3 Get Products Owned (from won opportunities):**\n```\nSELECT p.name as product, op.quantity, op.extendedamount, o.name as opportunity,\n       o.actualclosedate\nFROM opportunityproduct op\nJOIN opportunity o ON op.opportunityid = o.opportunityid\nJOIN product p ON op.productid = p.productid\nWHERE o.accountid = '[accountid]'\nAND o.statecode = 1\nORDER BY o.actualclosedate DESC\n```\n\n**3.4 BANT Gap Analysis (for primary open opportunity):**\n\nFor the highest-value or most recently active open opportunity, assess qualification status:\n\n| Signal | Field | Weak | Moderate | Strong |\n|--------|-------|------|----------|--------|\n| Budget | `budgetstatus` | 0 (No Budget) | 1 (May Buy) | 2–3 (Can\u002FWill Buy) |\n| Authority | `decisionmaker` | NULL \u002F false | — | true |\n| Need | `need` | 3 (No need) | 2 (Good to have) | 0–1 (Must\u002FShould have) |\n| Timeline | `purchasetimeframe` | 4 (Unknown) | 2–3 (This\u002FNext Year) | 0–1 (Immediate\u002FThis Qtr) |\n| Process | `purchaseprocess` | 2 (Unknown) | 1 (Committee) | 0 (Individual) |\n\nIdentify all weak\u002Funknown signals — these drive the discovery questions in Step 6.\n\n#### Step 4: Gather Support Intelligence\n\n**4.1 Get Recent Cases:**\n\nCalculate cutoff: `[90_days_ago]` = today minus 90 days.\n```\nSELECT incidentid, title, ticketnumber, createdon, prioritycode,\n       statecode, statuscode, caseorigincode, casetypecode,\n       description, customersatisfactioncode, msdyn_casesentiment\nFROM incident\nWHERE accountid = '[accountid]'\nAND createdon >= '[90_days_ago]'\nORDER BY createdon DESC\n```\n\n**4.2 Analyze Support Patterns:**\n- Open cases count and severity\n- Average satisfaction score (customersatisfactioncode: 1=Very Dissatisfied → 5=Very Satisfied)\n- Common issue themes from title\u002Fdescription\n- Any escalations or high-priority open cases\n\n#### Step 5: Analyze Relationship Health (Full Briefing mode)\n\n**5.1 Engagement Metrics:**\n- Days since last meaningful contact (call or meeting)\n- Total touchpoints in last 90 days\n- Engagement trend: compare last 30 days vs prior 60 days\n- Stakeholder coverage: how many distinct contacts engaged\n\n**5.2 Relationship Health Score:**\n| Factor | Weight | Scoring |\n|--------|--------|---------|\n| Recent engagement | 25% | Active \u003C14 days = High; 14–45 days = Medium; >45 days = Low |\n| Open opportunities | 20% | Active open deal = High; No open deals = Low |\n| Support sentiment | 20% | No open cases = High; Open normal = Medium; Escalated = Low |\n| Stakeholder coverage | 20% | 3+ contacts engaged = High; 1–2 = Medium; 0 = Low |\n| Revenue trajectory | 15% | Growing = High; Stable = Medium; Declining = Low |\n\n**Score interpretation:** High factors = Healthy | Mix = At Risk | Mostly Low = Critical\n\n#### Step 6: Generate Talking Points, Agenda, and Discovery Questions\n\n**6.1 Recommended Meeting Agenda (Quick Prep mode — when appointment found):**\n\nBased on opportunity stage and open items, generate a 3–5 point agenda:\n1. Opening: Reference last interaction, confirm agenda\n2. Address any open support issues proactively\n3. Business review: Validate current situation and priorities\n4. Discovery: Fill BANT gaps identified in Step 3.4\n5. Next steps: Define clear outcome before closing\n\n**6.2 Discovery Questions by BANT Gap:**\n\nGenerate targeted questions only for weak\u002Funknown signals identified in Step 3.4:\n\n*Budget gaps (budgetstatus = 0 or 1):*\n- \"Have you allocated budget for this initiative in the current fiscal year?\"\n- \"What's the approval process for a project of this scope?\"\n- \"Are there competing priorities for this budget?\"\n\n*Authority gaps (decisionmaker = false\u002Fnull):*\n- \"Who else will be involved in evaluating and approving this decision?\"\n- \"What does the sign-off process look like on your end?\"\n- \"Is [executive name] engaged in this initiative?\"\n\n*Need gaps (need = 2 or 3):*\n- \"What is the cost to the business if this problem isn't solved this year?\"\n- \"How are you currently handling [pain point from customerpainpoints]?\"\n- \"What would success look like 6 months after implementation?\"\n\n*Timeline gaps (purchasetimeframe = 3 or 4):*\n- \"Is there a hard deadline driving the urgency?\"\n- \"What events or milestones is this decision tied to?\"\n- \"What would cause you to delay this decision?\"\n\n*Process gaps (purchaseprocess = 2):*\n- \"Is this an individual decision or does it go through a committee?\"\n- \"Who else needs to be comfortable before you can move forward?\"\n\n**6.3 Positive Talking Points:**\n- Reference recent wins, product updates, or ROI data relevant to this account\n- Address known pain points from opportunity fields (customerpainpoints, currentsituation)\n\n**6.4 Issues to Address Proactively:**\n- Open support cases — acknowledge before customer raises them\n- Overdue tasks or commitments — address and reset expectations\n- Competitor mentions in notes — prepare differentiation narrative\n- Engagement gaps with key stakeholders (CTO, CFO not engaged)\n\n**6.5 Contingency Responses:**\n- Support frustration → \"I know about [issue] — here's where we are and the resolution timeline...\"\n- Budget pushback → \"We can phase the approach — let me show you what that looks like...\"\n- Competitor comparison → Focus on [integration, support quality, roadmap] differentiation\n- Timeline delay → \"Help me understand what's causing the delay so I can help navigate internally\"\n\n#### Step 7: Generate Brief\n\n**Quick Prep Output** (when specific appointment identified):\n```\n════════════════════════════════════════════════════════════════\n              QUICK PREP: [ACCOUNT NAME]\n════════════════════════════════════════════════════════════════\nGenerated: [Date\u002FTime]\nMeeting: [Meeting subject]\nScheduled: [Time] | [Location\u002FTeams link]\nAttendees: [Name, Title] | [Name, Title]\n\n? ACCOUNT SNAPSHOT\n────────────────────────────────────────────────────────────────\n[Industry] | [n] employees | Customer since [year] | LTV: $[value]\n\n? ACTIVE DEAL\n────────────────────────────────────────────────────────────────\n[Deal Name] — $[Value] | [Stage] | Close: [Date]\nBANT: Budget [✓\u002F⚠️] | Authority [✓\u002F⚠️] | Need [✓\u002F⚠️] | Timeline [✓\u002F⚠️]\n\n? OPEN ITEMS\n────────────────────────────────────────────────────────────────\n⚠️ [Overdue task or commitment — due date]\n? [Open support case — priority and age]\n\n? SUGGESTED AGENDA\n────────────────────────────────────────────────────────────────\n1. [Agenda point 1]\n2. [Agenda point 2]\n3. [Agenda point 3]\n4. [Discovery: BANT gap]\n5. Next steps and decision timeline\n\n❓ DISCOVERY QUESTIONS\n────────────────────────────────────────────────────────────────\n• [Question targeting identified BANT gap]\n• [Question targeting identified BANT gap]\n• [Question targeting identified BANT gap]\n\n⚠️ WATCH OUTS\n────────────────────────────────────────────────────────────────\n• [Risk 1]\n• [Risk 2]\n════════════════════════════════════════════════════════════════\n```\n\n**Full Briefing Output** (when account-level view requested):\n```\n════════════════════════════════════════════════════════════════\n              MEETING BRIEF: [ACCOUNT NAME]\n════════════════════════════════════════════════════════════════\n\nGenerated: [Date\u002FTime]\nMeeting: [Meeting subject if found]\nScheduled: [Meeting time if found]\nAttendees: [Expected attendees if found]\n\n════════════════════════════════════════════════════════════════\n? COMPANY SNAPSHOT\n════════════════════════════════════════════════════════════════\n\nCompany: [Account Name]\nIndustry: [Industry]\nSize: [n] employees | Revenue: $[n]M\nLocation: [City, State]\n\nRelationship Status: [PROSPECT \u002F ACTIVE CUSTOMER \u002F AT RISK]\nCustomer Since: [Date] ([n] years)\nAccount Owner: [Rep Name]\nTotal Lifetime Value: $[sum of won opportunities]\n\n════════════════════════════════════════════════════════════════\n? KEY STAKEHOLDERS\n════════════════════════════════════════════════════════════════\n\n[For each contact — name, title, role classification, last contact date, notes]\n\nSTAKEHOLDER MAP:\n┌─────────────────────────────────────────────────────┐\n│  [Economic Buyer]                                   │\n│       │                                             │\n│       ├── [Champion] ← CHAMPION ✓                  │\n│       │       │                                     │\n│       │       └── [Technical Buyer] ✓              │\n│       │                                             │\n│       └── [Blocker\u002FGap] ← Needs engagement ⚠️      │\n└─────────────────────────────────────────────────────┘\n\n════════════════════════════════════════════════════════════════\n? CURRENT OPPORTUNITIES\n════════════════════════════════════════════════════════════════\n\n[For each open opportunity — value, stage, close date, BANT status, next steps, risks]\n\nBANT STATUS:\n• Budget: [✓ Confirmed \u002F ⚠️ Unknown \u002F ✗ No Budget]\n• Authority: [✓ Decision maker confirmed \u002F ⚠️ Not identified]\n• Need: [✓ Strong \u002F ⚠️ Moderate \u002F ✗ Weak]\n• Timeline: [✓ This quarter \u002F ⚠️ This year \u002F ✗ Unknown]\n\nDEAL HISTORY (Won):\n[List of won deals with value and date]\nTOTAL WON: $[value] | EXPANSION POTENTIAL: [High\u002FMedium\u002FLow]\n\n════════════════════════════════════════════════════════════════\n? RECENT ACTIVITY SUMMARY\n════════════════════════════════════════════════════════════════\n\nLAST 90 DAYS: [n] activities | [n] calls | [n] meetings | [n] emails\nTrend: [Stable \u002F Increasing \u002F Declining]\n\nRECENT HIGHLIGHTS:\n[Date] [Type] with [Contact] — [Subject] — [Outcome]\n...\n\nENGAGEMENT GAPS:\n⚠️ [Contact name]: Last contact [n] days ago — [context]\n\n════════════════════════════════════════════════════════════════\n? SUPPORT CASE STATUS\n════════════════════════════════════════════════════════════════\n\nOPEN CASES: [n]\n[Case title | Priority | Age | Status | Summary]\n\nRECENT CLOSED (90 days): [n] | Avg satisfaction: [score]\u002F5\n\n════════════════════════════════════════════════════════════════\n? MEETING PREPARATION\n════════════════════════════════════════════════════════════════\n\nSUGGESTED AGENDA:\n1–5 [Agenda points based on open items and opportunity stage]\n\nDISCOVERY QUESTIONS (by BANT gap):\n[Questions targeting only identified weak signals]\n\nPOSITIVE TALKING POINTS:\n✅ [Value reinforcement, ROI, recent wins]\n\nISSUES TO ADDRESS:\n⚠️ [Support cases, overdue commitments, competitive mentions]\n\nCONTINGENCY RESPONSES:\n[Specific responses for anticipated difficult topics]\n\n════════════════════════════════════════════════════════════════\n? PRE-MEETING ACTION ITEMS\n════════════════════════════════════════════════════════════════\n\n□ [Action 1 — e.g., check open case status before meeting]\n□ [Action 2 — e.g., prepare ROI summary]\n□ [Action 3 — e.g., re-send security docs]\n\n════════════════════════════════════════════════════════════════\n? QUICK REFERENCE\n════════════════════════════════════════════════════════════════\n\nKey Numbers: LTV $[n] | Current Deal $[n] | Employees [n] | Customer [n] yrs\nKey Dates: Deal close [date] | Contract renewal [date] | Last purchase [date]\nKey Relationships: Champion [name] | Technical [name] | Gap [name]\nProducts Owned: [list]\n\n════════════════════════════════════════════════════════════════\n```\n\n#### Step 8: Create Post-Meeting Task\nAfter delivering the brief, offer to create a follow-up task:\n```\nUse create_record with tablename: task\n- subject: \"Post-meeting: Log notes and next steps for [Account]\"\n- description: \"Meeting with [Contact] on [Date]. Capture: key discussion points, decisions made, action items, next steps.\"\n- regardingobjectid: [accountid or opportunityid]\n- scheduledend: [meeting end time + 30 minutes]\n- prioritycode: 2\n```\n\n### Output Format\n- **Quick Prep:** Scannable in under 2 minutes. Meeting header → deal snapshot → open items → agenda → discovery questions → watch outs.\n- **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.\n\n### Example Interaction\n\n**User Input (Quick Prep):**\n\"Prep me for my call with Fabrikam tomorrow at 2pm.\"\n\n**Skill Output:**\n```\n════════════════════════════════════════════════════════════════\n              QUICK PREP: FABRIKAM\n════════════════════════════════════════════════════════════════\nMeeting: QBR — Cloud Migration\nTomorrow, 2:00–3:00 PM | Teams (link in calendar)\nAttendees: Emily Torres (VP Operations) | James Liu (IT Director — new)\n\n? ACCOUNT SNAPSHOT\nManufacturing | 1,200 employees | Customer since 2022 | LTV: $275,000\n\n? ACTIVE DEAL\nFabrikam Cloud Migration — $85,000 | Propose | Close: Mar 31\nBANT: Budget ⚠️ | Authority ⚠️ | Need ✓ | Timeline ✓\n\n? OPEN ITEMS\n⚠️ Overdue task: \"Send updated SOW to Emily\" — was due 5 days ago\n? Open case: Priority 2 — \"API integration timeout errors\" (12 days open)\n\n? SUGGESTED AGENDA\n1. Acknowledge API case — share resolution status\n2. Present updated SOW (resolve overdue commitment)\n3. Confirm budget approval process (budget gap)\n4. Understand James Liu's role in the decision (authority gap)\n5. Agree on next steps and decision timeline by Mar 31\n\n❓ DISCOVERY QUESTIONS\n• \"Has budget been formally allocated for the cloud migration this quarter?\"\n• \"James — what's your involvement in evaluating this solution?\"\n• \"What needs to happen on your end to make a decision by March 31?\"\n\n⚠️ WATCH OUTS\n• ? Competitor mentioned in notes — be ready with differentiation narrative\n• ? Open support case — coordinate with support before call; acknowledge it first\n════════════════════════════════════════════════════════════════\n```\n\n**User Input (Full Briefing):**\n\"Give me a full briefing on Contoso.\"\n\n*(Full Briefing output — all sections as shown in the Full Briefing template above.)*\n\n### Dataverse Tables Used\n| Table | Purpose |\n|-------|---------|\n| `account` | Primary account information |\n| `contact` | Stakeholder details and role mapping |\n| `opportunity` | Current and historical deals, BANT fields |\n| `opportunityproduct` | Products in deals |\n| `activitypointer` | Activity history |\n| `appointment` | Meeting context and scheduling |\n| `activityparty` | Meeting attendees (required\u002Foptional) |\n| `phonecall` | Call history |\n| `email` | Email history |\n| `incident` | Support case status |\n| `annotation` | Notes and additional context |\n| `task` | Create post-meeting tasks |\n| `product` | Product names |\n\n### Key Fields Reference\n**account:**\n- `industrycode` (CHOICE) - Industry classification\n- `numberofemployees` (INT) - Company size\n- `revenue` (MONEY) - Annual revenue\n- `primarycontactid` (LOOKUP → contact) - Main contact\n- `websiteurl` (URL) - Company website\n- `statecode` (STATE) - Active(0), Inactive(1)\n\n**contact:**\n- `fullname` (NVARCHAR) - Contact name\n- `jobtitle` (NVARCHAR) - Title for role mapping\n- `emailaddress1` (EMAIL) - Primary email\n- `telephone1`, `mobilephone` (PHONE) - Phone numbers\n- `accountrolecode` (CHOICE) - Decision Maker(1), Employee(2), Influencer(3)\n- `msdyn_decisioninfluencetag` (CHOICE) - Decision maker(0), Influencer(1), Blocker(2), Unknown(3)\n\n**opportunity:**\n- `salesstage` (CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)\n- `estimatedvalue` (MONEY) - Deal value\n- `closeprobability` (INT) - Win probability (0-100)\n- `budgetstatus` (CHOICE) - No Committed Budget(0), May Buy(1), Can Buy(2), Will Buy(3)\n- `need` (CHOICE) - Must have(0), Should have(1), Good to have(2), No need(3)\n- `purchasetimeframe` (CHOICE) - Immediate(0), This Quarter(1), Next Quarter(2), This Year(3), Unknown(4)\n- `purchaseprocess` (CHOICE) - Individual(0), Committee(1), Unknown(2)\n- `decisionmaker` (BIT) - Decision maker confirmed (true\u002Ffalse)\n- `msdyn_forecastcategory` (CHOICE) - Pipeline(100000001), Best case(100000002), Committed(100000003), Omitted(100000004)\n- `customerpainpoints` (MULTILINE TEXT) - Customer pain points\n- `currentsituation` (MULTILINE TEXT) - Current situation notes\n\n**activityparty:**\n- `activityid` (LOOKUP) - Links to appointment\n- `partyid` (LOOKUP) - Contact, lead, or systemuser\n- `participationtypemask` (CHOICE) - Organizer(1), To\u002FRequired(2), Owner(5), Customer(9)\n\n**incident:**\n- `statecode` (STATE) - Active(0), Resolved(1), Cancelled(2)\n- `prioritycode` (CHOICE) - High(1), Normal(2), Low(3)\n- `customersatisfactioncode` (CHOICE) - Very Dissatisfied(1), Dissatisfied(2), Neutral(3), Satisfied(4), Very Satisfied(5)\n\n### Meeting Prep Best Practices\n1. **Quick Prep** is designed to be generated 15 minutes before a call — keep it fast and focused\n2. **Full Briefing** is for QBRs, executive meetings, and renewal discussions — generate the day before\n3. Action-oriented: focus on what to do, not just what to know\n4. Always address open support cases proactively — don't let the customer bring it up first\n5. Discovery questions should only target actual gaps — don't ask about things already confirmed\n6. Generate close to meeting time to ensure fresh data\n\n## Examples\n\n### Example 1: Quick Meeting Prep\n\n**User says:** \"I have a meeting with Contoso in 30 minutes\"\n\n**Actions:**\n1. Find account \"Contoso\" and upcoming appointment\n2. Retrieve meeting attendees from activityparty\n3. Get contact details and roles for each attendee\n4. Pull open opportunities and identify BANT gaps\n5. Generate quick prep brief\n\n**Result:**\n```\nQUICK PREP: Contoso - Call at 2:00pm\n\nATTENDEES:\n- John Smith (CFO) - Economic Buyer, first meeting\n- Mary Johnson (VP Ops) - Champion, met 3x before\n\nOPEN DEAL: Enterprise Platform - $150K - Propose Stage\nBANT Gaps: Timeline not confirmed, procurement not engaged\n\nDISCOVERY QUESTIONS:\n1. \"What's your target go-live date?\"\n2. \"When should we loop in procurement?\"\n\nCAUTION: 1 open support case (P2) - be prepared to address\n\nOBJECTIVE: Confirm timeline, get procurement intro\n```\n\n### Example 2: Full Account Briefing\n\n**User says:** \"Give me a full briefing on Fabrikam\"\n\n**Actions:**\n1. Retrieve complete account information\n2. Map all stakeholders with roles and engagement history\n3. Calculate lifetime value and relationship health\n4. Summarize all opportunities (open and closed)\n5. Review recent activities and support cases\n\n**Result:**\n```\nACCOUNT BRIEFING: FABRIKAM INC\n\nOVERVIEW:\nIndustry: Manufacturing | Employees: 2,500 | Revenue: $500M\nCustomer Since: 2022 | Lifetime Value: $450K\n\nRELATIONSHIP HEALTH: Good (78\u002F100)\n- Engagement Trend: Stable\n- Last Contact: 3 days ago\n\nSTAKEHOLDER MAP:\n- Tom CEO → Executive Sponsor (met 2x)\n- Lisa VP IT → Technical Buyer (highly engaged)\n- Mark Procurement → Gatekeeper (not yet engaged)\n\nOPEN OPPORTUNITIES:\n1. Analytics Expansion - $80K - Develop Stage\n\nHISTORICAL WINS:\n- Platform License (2022) - $200K\n- Integration Services (2023) - $170K\n\nOPEN CASES: None\n\nSTRATEGIC NOTES:\n- Mentioned expansion to Europe in last QBR\n- Budget cycle is Q4\n```\n\n### Example 3: Prep for Specific Meeting\n\n**User says:** \"Prep me for my call with the Alpine Ski House team at 10am tomorrow\"\n\n**Actions:**\n1. Find tomorrow's 10am appointment with Alpine Ski House\n2. Identify all attendees\n3. Generate tailored prep based on meeting subject and attendees\n\n**Result:**\n```\nMEETING PREP: Alpine Ski House - Demo Call\nTomorrow 10:00am | Teams Meeting\n\nATTENDEES & CONTEXT:\n- Sarah Chen (IT Director) - Technical evaluator, driving this initiative\n- James Wilson (CFO) - First time joining, likely budget discussion\n\nMEETING OBJECTIVE: Demo + Budget Alignment\n\nTALKING POINTS FOR CFO:\n- ROI from similar implementations (include case study)\n- Implementation timeline and resource requirements\n- Pricing and payment terms\n\nPREP: Have pricing sheet ready, expect budget questions\n```\n\n## Troubleshooting\n\n### Error: Account not found\n**Cause:** Name doesn't match exactly or account is inactive\n**Solution:**\n- Use partial match (LIKE '%name%')\n- Check for common spelling variations\n- Include inactive accounts if recently deactivated\n\n### Error: No upcoming appointments found\n**Cause:** Meeting not in Dynamics or linked to different record\n**Solution:**\n- Search by date range instead of regardingobjectid\n- Check appointments on related contacts\n- Fall back to Full Briefing mode if no meeting found\n\n### Error: Attendee details unavailable\n**Cause:** External attendees not in system or activityparty not populated\n**Solution:**\n- Use email domain to identify company\n- Prompt user to add contact records\n- Note external attendees separately",{"name":5,"metadata":28,"description":7},{"author":29,"version":30,"category":31},"Dataverse","1.0.0","sales-productivity","main","10016dd09acfa5f4dfce84de4e34ef294961faaf","skills\u002Faccount-briefing-generator",9,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-03-10 22:57:33",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add microsoft\u002Fdataverse-business-skills --skill account-briefing-generator",{"tool":47,"command":48},"bunx","bunx skills add microsoft\u002Fdataverse-business-skills --skill account-briefing-generator",{"tool":50,"command":51},"pnpm","pnpm dlx skills add microsoft\u002Fdataverse-business-skills --skill account-briefing-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Faccount-briefing-generator\u002FSKILL.md",true,[],[56,65,74,82,90,98],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":23},"01M69A19ETGAKEDJSRGPZ6QGTZ","win-loss-pattern-analyzer","Analyzes closed opportunities to identify patterns between won and lost deals. Compares sales cycles, activities, stakeholder engagement, and deal characteristics for actionable playbook insights. Use when user asks \"why are we losing deals\", \"win loss analysis\", \"what makes deals win\", \"analyze lost opportunities\", \"sales pattern analysis\", \"compare won vs lost deals\", or \"improve win rate\".","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwin-loss-pattern-analyzer\u002FSKILL.md",[],[63,64,21],"win loss pattern analyzer","analytics",{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":23},"01M69A17A9PBCXTW6BX84RQPVD","pipeline-health-analyzer","Reviews opportunities in the sales pipeline to identify stuck deals, missing next steps, weak qualification, and unbalanced stages. Use when user asks \"how is my pipeline looking\", \"analyze pipeline health\", \"which deals are stuck\", \"pipeline review\", \"find at-risk deals\", \"identify stalled opportunities\", or \"audit my open deals\".","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpipeline-health-analyzer\u002FSKILL.md",[],[72,64,21,73],"pipeline health analyzer","review",{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":23},"01M69A15PGJM0FQRNMWMHHVQTC","next-best-action-engine","Analyzes an opportunity's current state and engagement history, compares against won deals, and recommends the most effective next action with reasoning. Use when user asks \"what should I do next on this deal\", \"next steps for this opportunity\", \"how do I move this deal forward\", \"what's the best action for this opp\", \"deal coaching\", or \"opportunity next action\".","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Fnext-best-action-engine\u002FSKILL.md",[],[81,21],"next best action engine",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":23},"01M69A13E5XFQH0FFSQV14N77Q","log-call-transcripts","Analyzes sales call transcripts to extract key information and automatically logs the call as a Phone Call activity in Dataverse. Use when user says \"log this call\", \"process this transcript\", \"save this call to CRM\", \"create a phone call record from this transcript\", uploads a call recording transcript, or pastes meeting\u002Fcall notes to be logged.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Flog-call-transcripts\u002FSKILL.md",[],[89,21],"log call transcripts",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":23},"01M69A123D52BE37H1PSJZCG5Y","lead-qualification-playbook","Guides sales reps through structured lead qualification using BANT+ methodology. Evaluates leads, suggests discovery questions, scores quality, and recommends next steps. Use when user says \"qualify this lead\", \"help me qualify\", \"BANT analysis\", \"score this lead\", \"should I convert this lead\", \"lead qualification questions\", or \"assess lead quality\".","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Flead-qualification-playbook\u002FSKILL.md",[],[97,21],"lead qualification playbook",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":23},"01M69A10JBPT5T3B7XN33XK3TX","handoff-brief-generator","Creates comprehensive handoff documentation for sales reps going on vacation or transitioning deals. Generates structured briefs with deal status, activities, next steps, contacts, and risks. Use when user says \"I'm going on vacation\", \"create handoff brief\", \"coverage brief for my deals\", \"vacation handoff\", \"out of office brief\", \"transition my deals\", or \"backup documentation\".","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhandoff-brief-generator\u002FSKILL.md",[],[105,106,107,108,21],"handoff brief generator","handoff","documentation","status"]