[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-forecast":3,"mdc--79sj01-key":36,"related-repo-microsoft-forecast":1322,"related-org-microsoft-forecast":1428},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":34,"mdContent":35},"forecast","generate weighted sales forecasts from Dataverse","Generates a weighted sales forecast from Dataverse opportunity data. Calculates committed, best-case, and pipeline views by rep and team; compares to quota; flags risks and upside. Use when user asks \"what's my forecast\", \"quarterly forecast\", \"pipeline forecast\", \"where's my number\", \"forecast report\", \"am I going to hit quota\", \"sales projection\", or \"revenue forecast\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,17,20,23],{"name":13,"slug":14,"type":15},"Forecasting","forecasting","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"CRM","crm",{"name":21,"slug":22,"type":15},"Sales","sales",{"name":24,"slug":25,"type":15},"Dataverse","dataverse",41,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills","2026-04-06T18:36:34.842924",null,9,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":29},[],"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fforecast","---\nname: forecast\ndescription: Generates a weighted sales forecast from Dataverse opportunity data. Calculates committed, best-case, and pipeline views by rep and team; compares to quota; flags risks and upside. Use when user asks \"what's my forecast\", \"quarterly forecast\", \"pipeline forecast\", \"where's my number\", \"forecast report\", \"am I going to hit quota\", \"sales projection\", or \"revenue forecast\".\nmetadata:\n  author: Dataverse\n  version: 1.0.0\n  category: sales-analytics\n---\n\n# Forecast\n\nSales forecasting requires aggregating pipeline data across reps, applying probability weighting, and identifying where the number is at risk or has upside. This skill automates that process from Dataverse opportunity records — producing a structured forecast with committed, best-case, and pipeline totals broken down by owner and by forecast category, with risk and upside annotations.\n\n## Instructions\n\n### Step 1: Define Forecast Parameters\nAccept input from the user:\n- **Period:** Current quarter (default), next quarter, current month, or custom date range\n- **Scope:** Individual rep, team\u002Fmanager rollup, or full organization\n- **Owner filter:** Specific systemuserid, team, or all\n- **Currency:** Use organization default\n\nCalculate period boundaries:\n- **Current quarter start\u002Fend** based on today's date and fiscal calendar\n- **Period start:** `[quarter_start]T00:00:00Z`\n- **Period end:** `[quarter_end]T23:59:59Z`\n\n#### Step 2: Fetch Open Opportunities in Period\n```\nSELECT opportunityid, name, estimatedvalue, estimatedclosedate, closeprobability,\n       salesstage, msdyn_forecastcategory, ownerid, customerid, accountid,\n       budgetstatus, decisionmaker, need, purchasetimeframe, purchaseprocess,\n       createdon, modifiedon, description\nFROM opportunity\nWHERE statecode = 0\nAND estimatedclosedate >= '[period_start]'\nAND estimatedclosedate \u003C= '[period_end]'\nORDER BY ownerid, estimatedvalue DESC\n```\n\nApply owner filter if specified.\n\n#### Step 3: Fetch Already-Closed Deals in Period\n**Won this period (actuals):**\n```\nSELECT opportunityid, name, estimatedvalue, actualclosedate, ownerid, customerid\nFROM opportunity\nWHERE statecode = 1\nAND actualclosedate >= '[period_start]'\nAND actualclosedate \u003C= '[period_end]'\nORDER BY ownerid, actualclosedate DESC\n```\n\n**Lost this period (for win rate context):**\n```\nSELECT COUNT(opportunityid) as lost_count, SUM(estimatedvalue) as lost_value, ownerid\nFROM opportunity\nWHERE statecode = 2\nAND actualclosedate >= '[period_start]'\nAND actualclosedate \u003C= '[period_end]'\nGROUP BY ownerid\n```\n\n#### Step 4: Segment by Forecast Category\nGroup open opportunities by `msdyn_forecastcategory`:\n\n**Forecast category values:**\n| Code | Label | Description |\n|------|-------|-------------|\n| 100000001 | Pipeline | Early stage, uncertain |\n| 100000002 | Best Case | Possible with favorable conditions |\n| 100000003 | Committed | Rep has high confidence in close |\n| 100000004 | Omitted | Excluded from forecast |\n| 100000005 | Won | Already closed won (use for actuals) |\n| 100000006 | Lost | Already closed lost |\n\nFor each category, calculate:\n- Count of opportunities\n- Total value (sum of estimatedvalue)\n- Weighted value (sum of estimatedvalue × closeprobability \u002F 100)\n\nRun separate queries per category:\n\n**Committed:**\n```\nSELECT COUNT(opportunityid) as count, SUM(estimatedvalue) as total,\n       ownerid\nFROM opportunity\nWHERE statecode = 0\nAND msdyn_forecastcategory = 100000003\nAND estimatedclosedate >= '[period_start]'\nAND estimatedclosedate \u003C= '[period_end]'\nGROUP BY ownerid\n```\n\nRepeat for Best Case (100000002) and Pipeline (100000001).\n\n#### Step 5: Calculate Weighted Forecast\nFor each opportunity, compute:\n- **Committed:** Use full estimatedvalue (rep has high confidence)\n- **Best Case:** estimatedvalue × closeprobability \u002F 100\n- **Pipeline:** estimatedvalue × closeprobability \u002F 100\n\n**Total forecast by rep:**\n- Forecast = Won (actuals) + Committed (full value) + Best Case (weighted)\n- Upside = Pipeline weighted value above Committed + Best Case\n- Gap to quota = Quota − Forecast (if quota data available)\n\n**Note:** Quota data may be stored in `msdyn_quotas` or `msdyn_forecastconfiguration` if Sales Insights forecasting is enabled. Query if available:\n```\nSELECT msdyn_forecastdefinitionid, msdyn_forecastdefinitionname, msdyn_quotasource\nFROM msdyn_forecastdefinition\nWHERE statecode = 0\n```\n\nIf quota is not in Dataverse, accept as a user-provided input.\n\n#### Step 6: Check Forecast Accuracy Signals\n\nFor each deal in Committed category, validate:\n\n**Red flags (may deflate number):**\n- No activity in last 7 days (check activitypointer)\n- Close date in current week but stage is Qualify or Develop\n- Budget not confirmed (budgetstatus = 0 or 1)\n- Decision maker not identified (decisionmaker = false\u002Fnull)\n- Close date has slipped before (compare createdon to estimatedclosedate gap)\n\n**Upside signals (may inflate number):**\n- Deal in Best Case with strong qualification (BANT score ≥ 8\u002F10)\n- Deal with recent positive activity (meeting or call in last 3 days)\n- Accelerated stage velocity (moved two stages in less than 2 weeks)\n\n#### Step 7: Calculate Activity Recency for Each Deal\nFor each Committed and Best Case opportunity:\n```\nSELECT TOP 1 activityid, activitytypecode, actualend, subject\nFROM activitypointer\nWHERE regardingobjectid = '[opportunityid]'\nAND statecode = 1\nORDER BY actualend DESC\n```\n\nFlag if last activity > 7 days ago for Committed deals.\n\n#### Step 8: Generate Forecast Report\n\n```\nSALES FORECAST REPORT\nPeriod: Q[n] [Year] ([Start Date] – [End Date])\nScope: [Rep Name \u002F Team \u002F Organization]\nGenerated: [Today's Date]\n═══════════════════════════════════════════════════════════\n\nPERIOD SUMMARY\n───────────────────────────────────────────────────────────\nQuota:            $[quota]\nWon (Actuals):    $[won_value]    ([n] deals)\nCommitted:        $[committed]    ([n] deals)\nBest Case:        $[best_case_w]  ([n] deals, weighted)\nPipeline:         $[pipeline_w]   ([n] deals, weighted)\n─────────────────────────────────────────────\nTotal Forecast:   $[won + committed + best_case_weighted]\nUpside Potential: $[pipeline_weighted]\nForecast vs Quota: [n]% | [Gap: $X above\u002Fbelow]\n\nFORECAST BY REP\n───────────────────────────────────────────────────────────\nRep Name          | Quota    | Won     | Commit  | Best    | Fcst    | vs Quota\n[Rep 1]           | $[quota] | $[won]  | $[com]  | $[bc]   | $[tot]  | [+\u002F-n]%\n[Rep 2]           | $[quota] | $[won]  | $[com]  | $[bc]   | $[tot]  | [+\u002F-n]%\n\nCOMMITTED DEALS ([n] deals, $[value])\n───────────────────────────────────────────────────────────\n🟢 [Deal Name] — $[Value] | [Stage] | Close: [Date] | Rep: [Name]\n   Last activity: [n] days ago | BANT: [score]\u002F10\n\n⚠️  [Deal Name] — $[Value] | [Stage] | Close: [Date] | Rep: [Name]\n   ⚠️ No activity in 14 days | Budget not confirmed\n\nBEST CASE DEALS ([n] deals, $[weighted_value] weighted)\n───────────────────────────────────────────────────────────\n[Deal Name] — $[Value] ([prob]%) = $[weighted] | [Stage] | Close: [Date]\n...\n\nPIPELINE (Unweighted: $[value] | Weighted: $[weighted])\n───────────────────────────────────────────────────────────\n[n] deals in pipeline category for period\nTop 3 by value: [Deal 1], [Deal 2], [Deal 3]\n\nFORECAST RISKS\n───────────────────────────────────────────────────────────\n🔴 [Deal Name] — $[Value] | Committed but no activity in [n] days\n🔴 [Deal Name] — $[Value] | Close date today, stage = Qualify\n🟡 [Deal Name] — $[Value] | Budget unconfirmed, in Committed\n\nUPSIDE OPPORTUNITIES\n───────────────────────────────────────────────────────────\n⬆️  [Deal Name] — $[Value] | Best Case, BANT 9\u002F10, meeting 2 days ago\n⬆️  [Deal Name] — $[Value] | Pipeline, strong qualification, close date pull-in possible\n\nRECOMMENDED ACTIONS\n───────────────────────────────────────────────────────────\n1. [Rep Name] — call [Deal Name] today; no activity in [n] days, closes this week\n2. Move [Deal Name] from Committed to Best Case — budget not confirmed\n3. Accelerate [Deal Name] — strong signals, could be a pull-in to this quarter\n═══════════════════════════════════════════════════════════\n```\n\n### Output Format\nDeliver a three-part output:\n1. **Executive summary** — one-line forecast vs quota\n2. **Tabular rep rollup** — every rep's committed \u002F best case \u002F forecast vs quota\n3. **Deal-level detail** — Committed and Best Case deals with health signals, risks, and upside\n\n### Example Interaction\n\n**User Input:**\n\"Generate the Q1 2026 forecast for the West team.\"\n\n**Skill Output:**\n```\nSALES FORECAST — Q1 2026 | West Team\n═══════════════════════════════════════════════════════════\nQuota: $1,200,000\nWon (Actuals): $380,000 (32% attainment)\nCommitted: $420,000 | Best Case: $180,000 (w) | Pipeline: $95,000 (w)\nTotal Forecast: $980,000 — 82% of quota\nGap to close: $220,000\n\nFORECAST BY REP\n─────────────────────────────────────────────────────\nSarah J.  | $400K quota | $150K won | $180K commit | Fcst: $370K | 93%\nMike P.   | $400K quota | $120K won | $140K commit | Fcst: $295K | 74% ⚠️\nLisa C.   | $400K quota | $110K won | $100K commit | Fcst: $245K | 61% 🔴\n\nRISKS\n🔴 Northwind ($85K, Committed) — no activity 12 days, close date March 3\n🟡 Fabrikam ($42K, Committed) — budget unconfirmed\n\nUPSIDE\n⬆️ Alpine Ski ($65K, Best Case) — BANT 9\u002F10, meeting yesterday\n```\n\n### Dataverse Tables Used\n| Table | Purpose |\n|-------|---------|\n| `opportunity` | Pipeline data, categories, and values |\n| `activitypointer` | Activity recency per deal |\n| `account` | Account name for display |\n| `systemuser` | Rep names and rollup |\n| `msdyn_forecastdefinition` | Quota data (if Sales Insights enabled) |\n\n### Key Fields Reference\n**opportunity:**\n- `estimatedvalue` (MONEY) - Deal value\n- `estimatedclosedate` (DATE) - Expected close\n- `closeprobability` (INT) - Win probability % (0-100)\n- `msdyn_forecastcategory` (CHOICE) - Pipeline(100000001), Best Case(100000002), Committed(100000003), Omitted(100000004), Won(100000005), Lost(100000006)\n- `salesstage` (CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)\n- `statecode` (STATE) - Open(0), Won(1), Lost(2)\n- `ownerid` (LOOKUP) - Assigned rep (systemuser)\n\n### Configurable Parameters\n- Forecast period (default: current quarter)\n- Committed weighting method (full value vs probability-weighted)\n- Activity recency alert threshold for Committed deals (default: 7 days)\n- Minimum deal size to include in report (default: $0)\n- Quota source (Dataverse table or user-provided input)\n- Coverage ratio warning threshold (default: below 3x pipeline to quota)\n\n## Examples\n\n### Example 1: Personal Forecast\n\n**User says:** \"What's my forecast for this quarter?\"\n\n**Actions:**\n1. Determine current quarter boundaries\n2. Query open opportunities for current user\n3. Segment by forecast category\n4. Calculate weighted totals\n5. Flag risks and upside\n\n**Result:**\n```\nQ1 2026 FORECAST - Sarah Johnson\n\nQUOTA: $400,000\n\nACTUALS (Won): $150,000 (38%)\nCOMMITTED: $180,000\nBEST CASE: $65,000\nPIPELINE: $120,000\n\nWEIGHTED FORECAST: $370,000 (93%)\nGAP TO QUOTA: $50,000\n\nRISKS:\n🟡 Northwind ($85K) - no activity 12 days\n🟡 Fabrikam ($42K) - budget unconfirmed\n\nUPSIDE:\n⬆️ Alpine Ski ($65K) - BANT 9\u002F10, strong momentum\n```\n\n### Example 2: Team Forecast Rollup\n\n**User says:** \"Show me the team forecast\"\n\n**Actions:**\n1. Query all reps reporting to current user (or team)\n2. Aggregate opportunities by owner\n3. Compare each rep to quota\n4. Generate team summary with risk indicators\n\n**Result:**\n```\nQ1 2026 TEAM FORECAST\n\nTEAM TOTAL: $1.2M quota | $910K forecast | 76%\n\nBY REP:\n| Rep      | Quota  | Won    | Commit | Fcst   | %   |\n|----------|--------|--------|--------|--------|-----|\n| Sarah J. | $400K  | $150K  | $180K  | $370K  | 93% |\n| Mike P.  | $400K  | $120K  | $140K  | $295K  | 74% ⚠️|\n| Lisa C.  | $400K  | $110K  | $100K  | $245K  | 61% 🔴|\n\nAT RISK: Lisa C. needs $155K more to hit quota\nCOVERAGE: Mike P. has only 2.1x pipeline (below 3x threshold)\n```\n\n### Example 3: Next Quarter Planning\n\n**User says:** \"What's the pipeline look like for Q2?\"\n\n**Actions:**\n1. Calculate Q2 date boundaries\n2. Query opportunities with Q2 close dates\n3. Analyze coverage and stage distribution\n4. Generate forward-looking view\n\n**Result:**\n```\nQ2 2026 PIPELINE PREVIEW\n\nOPEN PIPELINE: $850,000 (32 deals)\n\nBY CATEGORY:\nCommitted: $120K (early commits)\nBest Case: $280K\nPipeline: $450K\n\nSTAGE DISTRIBUTION:\n| Stage    | Count | Value  |\n|----------|-------|--------|\n| Qualify  | 12    | $180K  |\n| Develop  | 14    | $420K  |\n| Propose  | 6     | $250K  |\n\nCOVERAGE: 2.1x to Q2 quota ($400K)\n⚠️ ALERT: Need $350K more qualified pipeline by April 1\n```\n\n## Troubleshooting\n\n### Error: Quota data not available\n**Cause:** msdyn_forecastdefinition table not configured or empty\n**Solution:**\n- Ask user to provide quota amount manually\n- Display forecast totals without % to quota\n- Note that Sales Insights forecasting not enabled\n\n### Error: Forecast categories not populated\n**Cause:** Reps not setting msdyn_forecastcategory on opportunities\n**Solution:**\n- Fall back to probability-based categorization\n- >80% = Committed, 50-80% = Best Case, \u003C50% = Pipeline\n- Recommend enabling forecast category enforcement\n\n### Error: Stale pipeline data\n**Cause:** Many deals have old modifiedon dates\n**Solution:**\n- Flag deals not updated in 30+ days\n- Recommend pipeline hygiene review\n- Apply discount factor to stale deals in weighted calc",{"data":37,"body":41},{"name":4,"description":6,"metadata":38},{"author":24,"version":39,"category":40},"1.0.0","sales-analytics",{"type":42,"children":43},"root",[44,52,58,65,72,77,123,128,173,180,192,197,203,211,220,228,237,243,256,264,405,410,428,433,441,450,455,461,466,497,505,523,549,558,563,569,574,582,610,618,636,642,647,656,661,667,676,682,687,721,727,737,745,754,760,867,873,881,960,966,999,1005,1011,1021,1029,1057,1065,1074,1080,1089,1096,1119,1126,1135,1141,1150,1157,1180,1187,1196,1202,1208,1223,1241,1247,1260,1285,1291,1304],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":51},"text","Forecast",{"type":45,"tag":53,"props":54,"children":55},"p",{},[56],{"type":50,"value":57},"Sales forecasting requires aggregating pipeline data across reps, applying probability weighting, and identifying where the number is at risk or has upside. This skill automates that process from Dataverse opportunity records — producing a structured forecast with committed, best-case, and pipeline totals broken down by owner and by forecast category, with risk and upside annotations.",{"type":45,"tag":59,"props":60,"children":62},"h2",{"id":61},"instructions",[63],{"type":50,"value":64},"Instructions",{"type":45,"tag":66,"props":67,"children":69},"h3",{"id":68},"step-1-define-forecast-parameters",[70],{"type":50,"value":71},"Step 1: Define Forecast Parameters",{"type":45,"tag":53,"props":73,"children":74},{},[75],{"type":50,"value":76},"Accept input from the user:",{"type":45,"tag":78,"props":79,"children":80},"ul",{},[81,93,103,113],{"type":45,"tag":82,"props":83,"children":84},"li",{},[85,91],{"type":45,"tag":86,"props":87,"children":88},"strong",{},[89],{"type":50,"value":90},"Period:",{"type":50,"value":92}," Current quarter (default), next quarter, current month, or custom date range",{"type":45,"tag":82,"props":94,"children":95},{},[96,101],{"type":45,"tag":86,"props":97,"children":98},{},[99],{"type":50,"value":100},"Scope:",{"type":50,"value":102}," Individual rep, team\u002Fmanager rollup, or full organization",{"type":45,"tag":82,"props":104,"children":105},{},[106,111],{"type":45,"tag":86,"props":107,"children":108},{},[109],{"type":50,"value":110},"Owner filter:",{"type":50,"value":112}," Specific systemuserid, team, or all",{"type":45,"tag":82,"props":114,"children":115},{},[116,121],{"type":45,"tag":86,"props":117,"children":118},{},[119],{"type":50,"value":120},"Currency:",{"type":50,"value":122}," Use organization default",{"type":45,"tag":53,"props":124,"children":125},{},[126],{"type":50,"value":127},"Calculate period boundaries:",{"type":45,"tag":78,"props":129,"children":130},{},[131,141,158],{"type":45,"tag":82,"props":132,"children":133},{},[134,139],{"type":45,"tag":86,"props":135,"children":136},{},[137],{"type":50,"value":138},"Current quarter start\u002Fend",{"type":50,"value":140}," based on today's date and fiscal calendar",{"type":45,"tag":82,"props":142,"children":143},{},[144,149,151],{"type":45,"tag":86,"props":145,"children":146},{},[147],{"type":50,"value":148},"Period start:",{"type":50,"value":150}," ",{"type":45,"tag":152,"props":153,"children":155},"code",{"className":154},[],[156],{"type":50,"value":157},"[quarter_start]T00:00:00Z",{"type":45,"tag":82,"props":159,"children":160},{},[161,166,167],{"type":45,"tag":86,"props":162,"children":163},{},[164],{"type":50,"value":165},"Period end:",{"type":50,"value":150},{"type":45,"tag":152,"props":168,"children":170},{"className":169},[],[171],{"type":50,"value":172},"[quarter_end]T23:59:59Z",{"type":45,"tag":174,"props":175,"children":177},"h4",{"id":176},"step-2-fetch-open-opportunities-in-period",[178],{"type":50,"value":179},"Step 2: Fetch Open Opportunities in Period",{"type":45,"tag":181,"props":182,"children":186},"pre",{"className":183,"code":185,"language":50},[184],"language-text","SELECT opportunityid, name, estimatedvalue, estimatedclosedate, closeprobability,\n       salesstage, msdyn_forecastcategory, ownerid, customerid, accountid,\n       budgetstatus, decisionmaker, need, purchasetimeframe, purchaseprocess,\n       createdon, modifiedon, description\nFROM opportunity\nWHERE statecode = 0\nAND estimatedclosedate >= '[period_start]'\nAND estimatedclosedate \u003C= '[period_end]'\nORDER BY ownerid, estimatedvalue DESC\n",[187],{"type":45,"tag":152,"props":188,"children":190},{"__ignoreMap":189},"",[191],{"type":50,"value":185},{"type":45,"tag":53,"props":193,"children":194},{},[195],{"type":50,"value":196},"Apply owner filter if specified.",{"type":45,"tag":174,"props":198,"children":200},{"id":199},"step-3-fetch-already-closed-deals-in-period",[201],{"type":50,"value":202},"Step 3: Fetch Already-Closed Deals in Period",{"type":45,"tag":53,"props":204,"children":205},{},[206],{"type":45,"tag":86,"props":207,"children":208},{},[209],{"type":50,"value":210},"Won this period (actuals):",{"type":45,"tag":181,"props":212,"children":215},{"className":213,"code":214,"language":50},[184],"SELECT opportunityid, name, estimatedvalue, actualclosedate, ownerid, customerid\nFROM opportunity\nWHERE statecode = 1\nAND actualclosedate >= '[period_start]'\nAND actualclosedate \u003C= '[period_end]'\nORDER BY ownerid, actualclosedate DESC\n",[216],{"type":45,"tag":152,"props":217,"children":218},{"__ignoreMap":189},[219],{"type":50,"value":214},{"type":45,"tag":53,"props":221,"children":222},{},[223],{"type":45,"tag":86,"props":224,"children":225},{},[226],{"type":50,"value":227},"Lost this period (for win rate context):",{"type":45,"tag":181,"props":229,"children":232},{"className":230,"code":231,"language":50},[184],"SELECT COUNT(opportunityid) as lost_count, SUM(estimatedvalue) as lost_value, ownerid\nFROM opportunity\nWHERE statecode = 2\nAND actualclosedate >= '[period_start]'\nAND actualclosedate \u003C= '[period_end]'\nGROUP BY ownerid\n",[233],{"type":45,"tag":152,"props":234,"children":235},{"__ignoreMap":189},[236],{"type":50,"value":231},{"type":45,"tag":174,"props":238,"children":240},{"id":239},"step-4-segment-by-forecast-category",[241],{"type":50,"value":242},"Step 4: Segment by Forecast Category",{"type":45,"tag":53,"props":244,"children":245},{},[246,248,254],{"type":50,"value":247},"Group open opportunities by ",{"type":45,"tag":152,"props":249,"children":251},{"className":250},[],[252],{"type":50,"value":253},"msdyn_forecastcategory",{"type":50,"value":255},":",{"type":45,"tag":53,"props":257,"children":258},{},[259],{"type":45,"tag":86,"props":260,"children":261},{},[262],{"type":50,"value":263},"Forecast category values:",{"type":45,"tag":265,"props":266,"children":267},"table",{},[268,292],{"type":45,"tag":269,"props":270,"children":271},"thead",{},[272],{"type":45,"tag":273,"props":274,"children":275},"tr",{},[276,282,287],{"type":45,"tag":277,"props":278,"children":279},"th",{},[280],{"type":50,"value":281},"Code",{"type":45,"tag":277,"props":283,"children":284},{},[285],{"type":50,"value":286},"Label",{"type":45,"tag":277,"props":288,"children":289},{},[290],{"type":50,"value":291},"Description",{"type":45,"tag":293,"props":294,"children":295},"tbody",{},[296,315,333,351,369,387],{"type":45,"tag":273,"props":297,"children":298},{},[299,305,310],{"type":45,"tag":300,"props":301,"children":302},"td",{},[303],{"type":50,"value":304},"100000001",{"type":45,"tag":300,"props":306,"children":307},{},[308],{"type":50,"value":309},"Pipeline",{"type":45,"tag":300,"props":311,"children":312},{},[313],{"type":50,"value":314},"Early stage, uncertain",{"type":45,"tag":273,"props":316,"children":317},{},[318,323,328],{"type":45,"tag":300,"props":319,"children":320},{},[321],{"type":50,"value":322},"100000002",{"type":45,"tag":300,"props":324,"children":325},{},[326],{"type":50,"value":327},"Best Case",{"type":45,"tag":300,"props":329,"children":330},{},[331],{"type":50,"value":332},"Possible with favorable conditions",{"type":45,"tag":273,"props":334,"children":335},{},[336,341,346],{"type":45,"tag":300,"props":337,"children":338},{},[339],{"type":50,"value":340},"100000003",{"type":45,"tag":300,"props":342,"children":343},{},[344],{"type":50,"value":345},"Committed",{"type":45,"tag":300,"props":347,"children":348},{},[349],{"type":50,"value":350},"Rep has high confidence in close",{"type":45,"tag":273,"props":352,"children":353},{},[354,359,364],{"type":45,"tag":300,"props":355,"children":356},{},[357],{"type":50,"value":358},"100000004",{"type":45,"tag":300,"props":360,"children":361},{},[362],{"type":50,"value":363},"Omitted",{"type":45,"tag":300,"props":365,"children":366},{},[367],{"type":50,"value":368},"Excluded from forecast",{"type":45,"tag":273,"props":370,"children":371},{},[372,377,382],{"type":45,"tag":300,"props":373,"children":374},{},[375],{"type":50,"value":376},"100000005",{"type":45,"tag":300,"props":378,"children":379},{},[380],{"type":50,"value":381},"Won",{"type":45,"tag":300,"props":383,"children":384},{},[385],{"type":50,"value":386},"Already closed won (use for actuals)",{"type":45,"tag":273,"props":388,"children":389},{},[390,395,400],{"type":45,"tag":300,"props":391,"children":392},{},[393],{"type":50,"value":394},"100000006",{"type":45,"tag":300,"props":396,"children":397},{},[398],{"type":50,"value":399},"Lost",{"type":45,"tag":300,"props":401,"children":402},{},[403],{"type":50,"value":404},"Already closed lost",{"type":45,"tag":53,"props":406,"children":407},{},[408],{"type":50,"value":409},"For each category, calculate:",{"type":45,"tag":78,"props":411,"children":412},{},[413,418,423],{"type":45,"tag":82,"props":414,"children":415},{},[416],{"type":50,"value":417},"Count of opportunities",{"type":45,"tag":82,"props":419,"children":420},{},[421],{"type":50,"value":422},"Total value (sum of estimatedvalue)",{"type":45,"tag":82,"props":424,"children":425},{},[426],{"type":50,"value":427},"Weighted value (sum of estimatedvalue × closeprobability \u002F 100)",{"type":45,"tag":53,"props":429,"children":430},{},[431],{"type":50,"value":432},"Run separate queries per category:",{"type":45,"tag":53,"props":434,"children":435},{},[436],{"type":45,"tag":86,"props":437,"children":438},{},[439],{"type":50,"value":440},"Committed:",{"type":45,"tag":181,"props":442,"children":445},{"className":443,"code":444,"language":50},[184],"SELECT COUNT(opportunityid) as count, SUM(estimatedvalue) as total,\n       ownerid\nFROM opportunity\nWHERE statecode = 0\nAND msdyn_forecastcategory = 100000003\nAND estimatedclosedate >= '[period_start]'\nAND estimatedclosedate \u003C= '[period_end]'\nGROUP BY ownerid\n",[446],{"type":45,"tag":152,"props":447,"children":448},{"__ignoreMap":189},[449],{"type":50,"value":444},{"type":45,"tag":53,"props":451,"children":452},{},[453],{"type":50,"value":454},"Repeat for Best Case (100000002) and Pipeline (100000001).",{"type":45,"tag":174,"props":456,"children":458},{"id":457},"step-5-calculate-weighted-forecast",[459],{"type":50,"value":460},"Step 5: Calculate Weighted Forecast",{"type":45,"tag":53,"props":462,"children":463},{},[464],{"type":50,"value":465},"For each opportunity, compute:",{"type":45,"tag":78,"props":467,"children":468},{},[469,478,488],{"type":45,"tag":82,"props":470,"children":471},{},[472,476],{"type":45,"tag":86,"props":473,"children":474},{},[475],{"type":50,"value":440},{"type":50,"value":477}," Use full estimatedvalue (rep has high confidence)",{"type":45,"tag":82,"props":479,"children":480},{},[481,486],{"type":45,"tag":86,"props":482,"children":483},{},[484],{"type":50,"value":485},"Best Case:",{"type":50,"value":487}," estimatedvalue × closeprobability \u002F 100",{"type":45,"tag":82,"props":489,"children":490},{},[491,496],{"type":45,"tag":86,"props":492,"children":493},{},[494],{"type":50,"value":495},"Pipeline:",{"type":50,"value":487},{"type":45,"tag":53,"props":498,"children":499},{},[500],{"type":45,"tag":86,"props":501,"children":502},{},[503],{"type":50,"value":504},"Total forecast by rep:",{"type":45,"tag":78,"props":506,"children":507},{},[508,513,518],{"type":45,"tag":82,"props":509,"children":510},{},[511],{"type":50,"value":512},"Forecast = Won (actuals) + Committed (full value) + Best Case (weighted)",{"type":45,"tag":82,"props":514,"children":515},{},[516],{"type":50,"value":517},"Upside = Pipeline weighted value above Committed + Best Case",{"type":45,"tag":82,"props":519,"children":520},{},[521],{"type":50,"value":522},"Gap to quota = Quota − Forecast (if quota data available)",{"type":45,"tag":53,"props":524,"children":525},{},[526,531,533,539,541,547],{"type":45,"tag":86,"props":527,"children":528},{},[529],{"type":50,"value":530},"Note:",{"type":50,"value":532}," Quota data may be stored in ",{"type":45,"tag":152,"props":534,"children":536},{"className":535},[],[537],{"type":50,"value":538},"msdyn_quotas",{"type":50,"value":540}," or ",{"type":45,"tag":152,"props":542,"children":544},{"className":543},[],[545],{"type":50,"value":546},"msdyn_forecastconfiguration",{"type":50,"value":548}," if Sales Insights forecasting is enabled. Query if available:",{"type":45,"tag":181,"props":550,"children":553},{"className":551,"code":552,"language":50},[184],"SELECT msdyn_forecastdefinitionid, msdyn_forecastdefinitionname, msdyn_quotasource\nFROM msdyn_forecastdefinition\nWHERE statecode = 0\n",[554],{"type":45,"tag":152,"props":555,"children":556},{"__ignoreMap":189},[557],{"type":50,"value":552},{"type":45,"tag":53,"props":559,"children":560},{},[561],{"type":50,"value":562},"If quota is not in Dataverse, accept as a user-provided input.",{"type":45,"tag":174,"props":564,"children":566},{"id":565},"step-6-check-forecast-accuracy-signals",[567],{"type":50,"value":568},"Step 6: Check Forecast Accuracy Signals",{"type":45,"tag":53,"props":570,"children":571},{},[572],{"type":50,"value":573},"For each deal in Committed category, validate:",{"type":45,"tag":53,"props":575,"children":576},{},[577],{"type":45,"tag":86,"props":578,"children":579},{},[580],{"type":50,"value":581},"Red flags (may deflate number):",{"type":45,"tag":78,"props":583,"children":584},{},[585,590,595,600,605],{"type":45,"tag":82,"props":586,"children":587},{},[588],{"type":50,"value":589},"No activity in last 7 days (check activitypointer)",{"type":45,"tag":82,"props":591,"children":592},{},[593],{"type":50,"value":594},"Close date in current week but stage is Qualify or Develop",{"type":45,"tag":82,"props":596,"children":597},{},[598],{"type":50,"value":599},"Budget not confirmed (budgetstatus = 0 or 1)",{"type":45,"tag":82,"props":601,"children":602},{},[603],{"type":50,"value":604},"Decision maker not identified (decisionmaker = false\u002Fnull)",{"type":45,"tag":82,"props":606,"children":607},{},[608],{"type":50,"value":609},"Close date has slipped before (compare createdon to estimatedclosedate gap)",{"type":45,"tag":53,"props":611,"children":612},{},[613],{"type":45,"tag":86,"props":614,"children":615},{},[616],{"type":50,"value":617},"Upside signals (may inflate number):",{"type":45,"tag":78,"props":619,"children":620},{},[621,626,631],{"type":45,"tag":82,"props":622,"children":623},{},[624],{"type":50,"value":625},"Deal in Best Case with strong qualification (BANT score ≥ 8\u002F10)",{"type":45,"tag":82,"props":627,"children":628},{},[629],{"type":50,"value":630},"Deal with recent positive activity (meeting or call in last 3 days)",{"type":45,"tag":82,"props":632,"children":633},{},[634],{"type":50,"value":635},"Accelerated stage velocity (moved two stages in less than 2 weeks)",{"type":45,"tag":174,"props":637,"children":639},{"id":638},"step-7-calculate-activity-recency-for-each-deal",[640],{"type":50,"value":641},"Step 7: Calculate Activity Recency for Each Deal",{"type":45,"tag":53,"props":643,"children":644},{},[645],{"type":50,"value":646},"For each Committed and Best Case opportunity:",{"type":45,"tag":181,"props":648,"children":651},{"className":649,"code":650,"language":50},[184],"SELECT TOP 1 activityid, activitytypecode, actualend, subject\nFROM activitypointer\nWHERE regardingobjectid = '[opportunityid]'\nAND statecode = 1\nORDER BY actualend DESC\n",[652],{"type":45,"tag":152,"props":653,"children":654},{"__ignoreMap":189},[655],{"type":50,"value":650},{"type":45,"tag":53,"props":657,"children":658},{},[659],{"type":50,"value":660},"Flag if last activity > 7 days ago for Committed deals.",{"type":45,"tag":174,"props":662,"children":664},{"id":663},"step-8-generate-forecast-report",[665],{"type":50,"value":666},"Step 8: Generate Forecast Report",{"type":45,"tag":181,"props":668,"children":671},{"className":669,"code":670,"language":50},[184],"SALES FORECAST REPORT\nPeriod: Q[n] [Year] ([Start Date] – [End Date])\nScope: [Rep Name \u002F Team \u002F Organization]\nGenerated: [Today's Date]\n═══════════════════════════════════════════════════════════\n\nPERIOD SUMMARY\n───────────────────────────────────────────────────────────\nQuota:            $[quota]\nWon (Actuals):    $[won_value]    ([n] deals)\nCommitted:        $[committed]    ([n] deals)\nBest Case:        $[best_case_w]  ([n] deals, weighted)\nPipeline:         $[pipeline_w]   ([n] deals, weighted)\n─────────────────────────────────────────────\nTotal Forecast:   $[won + committed + best_case_weighted]\nUpside Potential: $[pipeline_weighted]\nForecast vs Quota: [n]% | [Gap: $X above\u002Fbelow]\n\nFORECAST BY REP\n───────────────────────────────────────────────────────────\nRep Name          | Quota    | Won     | Commit  | Best    | Fcst    | vs Quota\n[Rep 1]           | $[quota] | $[won]  | $[com]  | $[bc]   | $[tot]  | [+\u002F-n]%\n[Rep 2]           | $[quota] | $[won]  | $[com]  | $[bc]   | $[tot]  | [+\u002F-n]%\n\nCOMMITTED DEALS ([n] deals, $[value])\n───────────────────────────────────────────────────────────\n🟢 [Deal Name] — $[Value] | [Stage] | Close: [Date] | Rep: [Name]\n   Last activity: [n] days ago | BANT: [score]\u002F10\n\n⚠️  [Deal Name] — $[Value] | [Stage] | Close: [Date] | Rep: [Name]\n   ⚠️ No activity in 14 days | Budget not confirmed\n\nBEST CASE DEALS ([n] deals, $[weighted_value] weighted)\n───────────────────────────────────────────────────────────\n[Deal Name] — $[Value] ([prob]%) = $[weighted] | [Stage] | Close: [Date]\n...\n\nPIPELINE (Unweighted: $[value] | Weighted: $[weighted])\n───────────────────────────────────────────────────────────\n[n] deals in pipeline category for period\nTop 3 by value: [Deal 1], [Deal 2], [Deal 3]\n\nFORECAST RISKS\n───────────────────────────────────────────────────────────\n🔴 [Deal Name] — $[Value] | Committed but no activity in [n] days\n🔴 [Deal Name] — $[Value] | Close date today, stage = Qualify\n🟡 [Deal Name] — $[Value] | Budget unconfirmed, in Committed\n\nUPSIDE OPPORTUNITIES\n───────────────────────────────────────────────────────────\n⬆️  [Deal Name] — $[Value] | Best Case, BANT 9\u002F10, meeting 2 days ago\n⬆️  [Deal Name] — $[Value] | Pipeline, strong qualification, close date pull-in possible\n\nRECOMMENDED ACTIONS\n───────────────────────────────────────────────────────────\n1. [Rep Name] — call [Deal Name] today; no activity in [n] days, closes this week\n2. Move [Deal Name] from Committed to Best Case — budget not confirmed\n3. Accelerate [Deal Name] — strong signals, could be a pull-in to this quarter\n═══════════════════════════════════════════════════════════\n",[672],{"type":45,"tag":152,"props":673,"children":674},{"__ignoreMap":189},[675],{"type":50,"value":670},{"type":45,"tag":66,"props":677,"children":679},{"id":678},"output-format",[680],{"type":50,"value":681},"Output Format",{"type":45,"tag":53,"props":683,"children":684},{},[685],{"type":50,"value":686},"Deliver a three-part output:",{"type":45,"tag":688,"props":689,"children":690},"ol",{},[691,701,711],{"type":45,"tag":82,"props":692,"children":693},{},[694,699],{"type":45,"tag":86,"props":695,"children":696},{},[697],{"type":50,"value":698},"Executive summary",{"type":50,"value":700}," — one-line forecast vs quota",{"type":45,"tag":82,"props":702,"children":703},{},[704,709],{"type":45,"tag":86,"props":705,"children":706},{},[707],{"type":50,"value":708},"Tabular rep rollup",{"type":50,"value":710}," — every rep's committed \u002F best case \u002F forecast vs quota",{"type":45,"tag":82,"props":712,"children":713},{},[714,719],{"type":45,"tag":86,"props":715,"children":716},{},[717],{"type":50,"value":718},"Deal-level detail",{"type":50,"value":720}," — Committed and Best Case deals with health signals, risks, and upside",{"type":45,"tag":66,"props":722,"children":724},{"id":723},"example-interaction",[725],{"type":50,"value":726},"Example Interaction",{"type":45,"tag":53,"props":728,"children":729},{},[730,735],{"type":45,"tag":86,"props":731,"children":732},{},[733],{"type":50,"value":734},"User Input:",{"type":50,"value":736},"\n\"Generate the Q1 2026 forecast for the West team.\"",{"type":45,"tag":53,"props":738,"children":739},{},[740],{"type":45,"tag":86,"props":741,"children":742},{},[743],{"type":50,"value":744},"Skill Output:",{"type":45,"tag":181,"props":746,"children":749},{"className":747,"code":748,"language":50},[184],"SALES FORECAST — Q1 2026 | West Team\n═══════════════════════════════════════════════════════════\nQuota: $1,200,000\nWon (Actuals): $380,000 (32% attainment)\nCommitted: $420,000 | Best Case: $180,000 (w) | Pipeline: $95,000 (w)\nTotal Forecast: $980,000 — 82% of quota\nGap to close: $220,000\n\nFORECAST BY REP\n─────────────────────────────────────────────────────\nSarah J.  | $400K quota | $150K won | $180K commit | Fcst: $370K | 93%\nMike P.   | $400K quota | $120K won | $140K commit | Fcst: $295K | 74% ⚠️\nLisa C.   | $400K quota | $110K won | $100K commit | Fcst: $245K | 61% 🔴\n\nRISKS\n🔴 Northwind ($85K, Committed) — no activity 12 days, close date March 3\n🟡 Fabrikam ($42K, Committed) — budget unconfirmed\n\nUPSIDE\n⬆️ Alpine Ski ($65K, Best Case) — BANT 9\u002F10, meeting yesterday\n",[750],{"type":45,"tag":152,"props":751,"children":752},{"__ignoreMap":189},[753],{"type":50,"value":748},{"type":45,"tag":66,"props":755,"children":757},{"id":756},"dataverse-tables-used",[758],{"type":50,"value":759},"Dataverse Tables Used",{"type":45,"tag":265,"props":761,"children":762},{},[763,779],{"type":45,"tag":269,"props":764,"children":765},{},[766],{"type":45,"tag":273,"props":767,"children":768},{},[769,774],{"type":45,"tag":277,"props":770,"children":771},{},[772],{"type":50,"value":773},"Table",{"type":45,"tag":277,"props":775,"children":776},{},[777],{"type":50,"value":778},"Purpose",{"type":45,"tag":293,"props":780,"children":781},{},[782,799,816,833,850],{"type":45,"tag":273,"props":783,"children":784},{},[785,794],{"type":45,"tag":300,"props":786,"children":787},{},[788],{"type":45,"tag":152,"props":789,"children":791},{"className":790},[],[792],{"type":50,"value":793},"opportunity",{"type":45,"tag":300,"props":795,"children":796},{},[797],{"type":50,"value":798},"Pipeline data, categories, and values",{"type":45,"tag":273,"props":800,"children":801},{},[802,811],{"type":45,"tag":300,"props":803,"children":804},{},[805],{"type":45,"tag":152,"props":806,"children":808},{"className":807},[],[809],{"type":50,"value":810},"activitypointer",{"type":45,"tag":300,"props":812,"children":813},{},[814],{"type":50,"value":815},"Activity recency per deal",{"type":45,"tag":273,"props":817,"children":818},{},[819,828],{"type":45,"tag":300,"props":820,"children":821},{},[822],{"type":45,"tag":152,"props":823,"children":825},{"className":824},[],[826],{"type":50,"value":827},"account",{"type":45,"tag":300,"props":829,"children":830},{},[831],{"type":50,"value":832},"Account name for display",{"type":45,"tag":273,"props":834,"children":835},{},[836,845],{"type":45,"tag":300,"props":837,"children":838},{},[839],{"type":45,"tag":152,"props":840,"children":842},{"className":841},[],[843],{"type":50,"value":844},"systemuser",{"type":45,"tag":300,"props":846,"children":847},{},[848],{"type":50,"value":849},"Rep names and rollup",{"type":45,"tag":273,"props":851,"children":852},{},[853,862],{"type":45,"tag":300,"props":854,"children":855},{},[856],{"type":45,"tag":152,"props":857,"children":859},{"className":858},[],[860],{"type":50,"value":861},"msdyn_forecastdefinition",{"type":45,"tag":300,"props":863,"children":864},{},[865],{"type":50,"value":866},"Quota data (if Sales Insights enabled)",{"type":45,"tag":66,"props":868,"children":870},{"id":869},"key-fields-reference",[871],{"type":50,"value":872},"Key Fields Reference",{"type":45,"tag":53,"props":874,"children":875},{},[876],{"type":45,"tag":86,"props":877,"children":878},{},[879],{"type":50,"value":880},"opportunity:",{"type":45,"tag":78,"props":882,"children":883},{},[884,895,906,917,927,938,949],{"type":45,"tag":82,"props":885,"children":886},{},[887,893],{"type":45,"tag":152,"props":888,"children":890},{"className":889},[],[891],{"type":50,"value":892},"estimatedvalue",{"type":50,"value":894}," (MONEY) - Deal value",{"type":45,"tag":82,"props":896,"children":897},{},[898,904],{"type":45,"tag":152,"props":899,"children":901},{"className":900},[],[902],{"type":50,"value":903},"estimatedclosedate",{"type":50,"value":905}," (DATE) - Expected close",{"type":45,"tag":82,"props":907,"children":908},{},[909,915],{"type":45,"tag":152,"props":910,"children":912},{"className":911},[],[913],{"type":50,"value":914},"closeprobability",{"type":50,"value":916}," (INT) - Win probability % (0-100)",{"type":45,"tag":82,"props":918,"children":919},{},[920,925],{"type":45,"tag":152,"props":921,"children":923},{"className":922},[],[924],{"type":50,"value":253},{"type":50,"value":926}," (CHOICE) - Pipeline(100000001), Best Case(100000002), Committed(100000003), Omitted(100000004), Won(100000005), Lost(100000006)",{"type":45,"tag":82,"props":928,"children":929},{},[930,936],{"type":45,"tag":152,"props":931,"children":933},{"className":932},[],[934],{"type":50,"value":935},"salesstage",{"type":50,"value":937}," (CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)",{"type":45,"tag":82,"props":939,"children":940},{},[941,947],{"type":45,"tag":152,"props":942,"children":944},{"className":943},[],[945],{"type":50,"value":946},"statecode",{"type":50,"value":948}," (STATE) - Open(0), Won(1), Lost(2)",{"type":45,"tag":82,"props":950,"children":951},{},[952,958],{"type":45,"tag":152,"props":953,"children":955},{"className":954},[],[956],{"type":50,"value":957},"ownerid",{"type":50,"value":959}," (LOOKUP) - Assigned rep (systemuser)",{"type":45,"tag":66,"props":961,"children":963},{"id":962},"configurable-parameters",[964],{"type":50,"value":965},"Configurable Parameters",{"type":45,"tag":78,"props":967,"children":968},{},[969,974,979,984,989,994],{"type":45,"tag":82,"props":970,"children":971},{},[972],{"type":50,"value":973},"Forecast period (default: current quarter)",{"type":45,"tag":82,"props":975,"children":976},{},[977],{"type":50,"value":978},"Committed weighting method (full value vs probability-weighted)",{"type":45,"tag":82,"props":980,"children":981},{},[982],{"type":50,"value":983},"Activity recency alert threshold for Committed deals (default: 7 days)",{"type":45,"tag":82,"props":985,"children":986},{},[987],{"type":50,"value":988},"Minimum deal size to include in report (default: $0)",{"type":45,"tag":82,"props":990,"children":991},{},[992],{"type":50,"value":993},"Quota source (Dataverse table or user-provided input)",{"type":45,"tag":82,"props":995,"children":996},{},[997],{"type":50,"value":998},"Coverage ratio warning threshold (default: below 3x pipeline to quota)",{"type":45,"tag":59,"props":1000,"children":1002},{"id":1001},"examples",[1003],{"type":50,"value":1004},"Examples",{"type":45,"tag":66,"props":1006,"children":1008},{"id":1007},"example-1-personal-forecast",[1009],{"type":50,"value":1010},"Example 1: Personal Forecast",{"type":45,"tag":53,"props":1012,"children":1013},{},[1014,1019],{"type":45,"tag":86,"props":1015,"children":1016},{},[1017],{"type":50,"value":1018},"User says:",{"type":50,"value":1020}," \"What's my forecast for this quarter?\"",{"type":45,"tag":53,"props":1022,"children":1023},{},[1024],{"type":45,"tag":86,"props":1025,"children":1026},{},[1027],{"type":50,"value":1028},"Actions:",{"type":45,"tag":688,"props":1030,"children":1031},{},[1032,1037,1042,1047,1052],{"type":45,"tag":82,"props":1033,"children":1034},{},[1035],{"type":50,"value":1036},"Determine current quarter boundaries",{"type":45,"tag":82,"props":1038,"children":1039},{},[1040],{"type":50,"value":1041},"Query open opportunities for current user",{"type":45,"tag":82,"props":1043,"children":1044},{},[1045],{"type":50,"value":1046},"Segment by forecast category",{"type":45,"tag":82,"props":1048,"children":1049},{},[1050],{"type":50,"value":1051},"Calculate weighted totals",{"type":45,"tag":82,"props":1053,"children":1054},{},[1055],{"type":50,"value":1056},"Flag risks and upside",{"type":45,"tag":53,"props":1058,"children":1059},{},[1060],{"type":45,"tag":86,"props":1061,"children":1062},{},[1063],{"type":50,"value":1064},"Result:",{"type":45,"tag":181,"props":1066,"children":1069},{"className":1067,"code":1068,"language":50},[184],"Q1 2026 FORECAST - Sarah Johnson\n\nQUOTA: $400,000\n\nACTUALS (Won): $150,000 (38%)\nCOMMITTED: $180,000\nBEST CASE: $65,000\nPIPELINE: $120,000\n\nWEIGHTED FORECAST: $370,000 (93%)\nGAP TO QUOTA: $50,000\n\nRISKS:\n🟡 Northwind ($85K) - no activity 12 days\n🟡 Fabrikam ($42K) - budget unconfirmed\n\nUPSIDE:\n⬆️ Alpine Ski ($65K) - BANT 9\u002F10, strong momentum\n",[1070],{"type":45,"tag":152,"props":1071,"children":1072},{"__ignoreMap":189},[1073],{"type":50,"value":1068},{"type":45,"tag":66,"props":1075,"children":1077},{"id":1076},"example-2-team-forecast-rollup",[1078],{"type":50,"value":1079},"Example 2: Team Forecast Rollup",{"type":45,"tag":53,"props":1081,"children":1082},{},[1083,1087],{"type":45,"tag":86,"props":1084,"children":1085},{},[1086],{"type":50,"value":1018},{"type":50,"value":1088}," \"Show me the team forecast\"",{"type":45,"tag":53,"props":1090,"children":1091},{},[1092],{"type":45,"tag":86,"props":1093,"children":1094},{},[1095],{"type":50,"value":1028},{"type":45,"tag":688,"props":1097,"children":1098},{},[1099,1104,1109,1114],{"type":45,"tag":82,"props":1100,"children":1101},{},[1102],{"type":50,"value":1103},"Query all reps reporting to current user (or team)",{"type":45,"tag":82,"props":1105,"children":1106},{},[1107],{"type":50,"value":1108},"Aggregate opportunities by owner",{"type":45,"tag":82,"props":1110,"children":1111},{},[1112],{"type":50,"value":1113},"Compare each rep to quota",{"type":45,"tag":82,"props":1115,"children":1116},{},[1117],{"type":50,"value":1118},"Generate team summary with risk indicators",{"type":45,"tag":53,"props":1120,"children":1121},{},[1122],{"type":45,"tag":86,"props":1123,"children":1124},{},[1125],{"type":50,"value":1064},{"type":45,"tag":181,"props":1127,"children":1130},{"className":1128,"code":1129,"language":50},[184],"Q1 2026 TEAM FORECAST\n\nTEAM TOTAL: $1.2M quota | $910K forecast | 76%\n\nBY REP:\n| Rep      | Quota  | Won    | Commit | Fcst   | %   |\n|----------|--------|--------|--------|--------|-----|\n| Sarah J. | $400K  | $150K  | $180K  | $370K  | 93% |\n| Mike P.  | $400K  | $120K  | $140K  | $295K  | 74% ⚠️|\n| Lisa C.  | $400K  | $110K  | $100K  | $245K  | 61% 🔴|\n\nAT RISK: Lisa C. needs $155K more to hit quota\nCOVERAGE: Mike P. has only 2.1x pipeline (below 3x threshold)\n",[1131],{"type":45,"tag":152,"props":1132,"children":1133},{"__ignoreMap":189},[1134],{"type":50,"value":1129},{"type":45,"tag":66,"props":1136,"children":1138},{"id":1137},"example-3-next-quarter-planning",[1139],{"type":50,"value":1140},"Example 3: Next Quarter Planning",{"type":45,"tag":53,"props":1142,"children":1143},{},[1144,1148],{"type":45,"tag":86,"props":1145,"children":1146},{},[1147],{"type":50,"value":1018},{"type":50,"value":1149}," \"What's the pipeline look like for Q2?\"",{"type":45,"tag":53,"props":1151,"children":1152},{},[1153],{"type":45,"tag":86,"props":1154,"children":1155},{},[1156],{"type":50,"value":1028},{"type":45,"tag":688,"props":1158,"children":1159},{},[1160,1165,1170,1175],{"type":45,"tag":82,"props":1161,"children":1162},{},[1163],{"type":50,"value":1164},"Calculate Q2 date boundaries",{"type":45,"tag":82,"props":1166,"children":1167},{},[1168],{"type":50,"value":1169},"Query opportunities with Q2 close dates",{"type":45,"tag":82,"props":1171,"children":1172},{},[1173],{"type":50,"value":1174},"Analyze coverage and stage distribution",{"type":45,"tag":82,"props":1176,"children":1177},{},[1178],{"type":50,"value":1179},"Generate forward-looking view",{"type":45,"tag":53,"props":1181,"children":1182},{},[1183],{"type":45,"tag":86,"props":1184,"children":1185},{},[1186],{"type":50,"value":1064},{"type":45,"tag":181,"props":1188,"children":1191},{"className":1189,"code":1190,"language":50},[184],"Q2 2026 PIPELINE PREVIEW\n\nOPEN PIPELINE: $850,000 (32 deals)\n\nBY CATEGORY:\nCommitted: $120K (early commits)\nBest Case: $280K\nPipeline: $450K\n\nSTAGE DISTRIBUTION:\n| Stage    | Count | Value  |\n|----------|-------|--------|\n| Qualify  | 12    | $180K  |\n| Develop  | 14    | $420K  |\n| Propose  | 6     | $250K  |\n\nCOVERAGE: 2.1x to Q2 quota ($400K)\n⚠️ ALERT: Need $350K more qualified pipeline by April 1\n",[1192],{"type":45,"tag":152,"props":1193,"children":1194},{"__ignoreMap":189},[1195],{"type":50,"value":1190},{"type":45,"tag":59,"props":1197,"children":1199},{"id":1198},"troubleshooting",[1200],{"type":50,"value":1201},"Troubleshooting",{"type":45,"tag":66,"props":1203,"children":1205},{"id":1204},"error-quota-data-not-available",[1206],{"type":50,"value":1207},"Error: Quota data not available",{"type":45,"tag":53,"props":1209,"children":1210},{},[1211,1216,1218],{"type":45,"tag":86,"props":1212,"children":1213},{},[1214],{"type":50,"value":1215},"Cause:",{"type":50,"value":1217}," msdyn_forecastdefinition table not configured or empty\n",{"type":45,"tag":86,"props":1219,"children":1220},{},[1221],{"type":50,"value":1222},"Solution:",{"type":45,"tag":78,"props":1224,"children":1225},{},[1226,1231,1236],{"type":45,"tag":82,"props":1227,"children":1228},{},[1229],{"type":50,"value":1230},"Ask user to provide quota amount manually",{"type":45,"tag":82,"props":1232,"children":1233},{},[1234],{"type":50,"value":1235},"Display forecast totals without % to quota",{"type":45,"tag":82,"props":1237,"children":1238},{},[1239],{"type":50,"value":1240},"Note that Sales Insights forecasting not enabled",{"type":45,"tag":66,"props":1242,"children":1244},{"id":1243},"error-forecast-categories-not-populated",[1245],{"type":50,"value":1246},"Error: Forecast categories not populated",{"type":45,"tag":53,"props":1248,"children":1249},{},[1250,1254,1256],{"type":45,"tag":86,"props":1251,"children":1252},{},[1253],{"type":50,"value":1215},{"type":50,"value":1255}," Reps not setting msdyn_forecastcategory on opportunities\n",{"type":45,"tag":86,"props":1257,"children":1258},{},[1259],{"type":50,"value":1222},{"type":45,"tag":78,"props":1261,"children":1262},{},[1263,1268,1280],{"type":45,"tag":82,"props":1264,"children":1265},{},[1266],{"type":50,"value":1267},"Fall back to probability-based categorization",{"type":45,"tag":82,"props":1269,"children":1270},{},[1271],{"type":45,"tag":1272,"props":1273,"children":1274},"blockquote",{},[1275],{"type":45,"tag":53,"props":1276,"children":1277},{},[1278],{"type":50,"value":1279},"80% = Committed, 50-80% = Best Case, \u003C50% = Pipeline",{"type":45,"tag":82,"props":1281,"children":1282},{},[1283],{"type":50,"value":1284},"Recommend enabling forecast category enforcement",{"type":45,"tag":66,"props":1286,"children":1288},{"id":1287},"error-stale-pipeline-data",[1289],{"type":50,"value":1290},"Error: Stale pipeline data",{"type":45,"tag":53,"props":1292,"children":1293},{},[1294,1298,1300],{"type":45,"tag":86,"props":1295,"children":1296},{},[1297],{"type":50,"value":1215},{"type":50,"value":1299}," Many deals have old modifiedon dates\n",{"type":45,"tag":86,"props":1301,"children":1302},{},[1303],{"type":50,"value":1222},{"type":45,"tag":78,"props":1305,"children":1306},{},[1307,1312,1317],{"type":45,"tag":82,"props":1308,"children":1309},{},[1310],{"type":50,"value":1311},"Flag deals not updated in 30+ days",{"type":45,"tag":82,"props":1313,"children":1314},{},[1315],{"type":50,"value":1316},"Recommend pipeline hygiene review",{"type":45,"tag":82,"props":1318,"children":1319},{},[1320],{"type":50,"value":1321},"Apply discount factor to stale deals in weighted calc",{"items":1323,"total":1427},[1324,1341,1355,1368,1384,1398,1410],{"slug":1325,"name":1325,"fn":1326,"description":1327,"org":1328,"tags":1329,"stars":26,"repoUrl":27,"updatedAt":1340},"account-briefing-generator","generate account briefings for sales meetings","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\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1330,1331,1332,1335,1336,1337],{"name":18,"slug":19,"type":15},{"name":24,"slug":25,"type":15},{"name":1333,"slug":1334,"type":15},"Meetings","meetings",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"name":1338,"slug":1339,"type":15},"Summarization","summarization","2026-04-06T18:36:32.277939",{"slug":1342,"name":1342,"fn":1343,"description":1344,"org":1345,"tags":1346,"stars":26,"repoUrl":27,"updatedAt":1354},"account-risk-early-warning","identify account churn risks from engagement signals","Identifies accounts showing warning signs of churn by analyzing activity trends, support cases, and engagement signals. Scores risk and prioritizes intervention targets. Use when user asks \"which accounts are at risk\", \"churn risk analysis\", \"find accounts that might leave\", \"customer health check\", \"at-risk customers\", \"retention warning signs\", or \"account health score\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1347,1348,1349,1350,1353],{"name":18,"slug":19,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":1351,"slug":1352,"type":15},"Risk Assessment","risk-assessment",{"name":21,"slug":22,"type":15},"2026-04-06T18:36:28.462732",{"slug":1356,"name":1356,"fn":1357,"description":1358,"org":1359,"tags":1360,"stars":26,"repoUrl":27,"updatedAt":1367},"competitive-intelligence","generate competitive intelligence from sales data","Analyzes opportunity data and activity notes to generate competitive intelligence including win\u002Floss rates by competitor, patterns, and rep-ready battlecard talking points. Use when user asks \"how are we doing against [competitor]\", \"competitive analysis\", \"competitor win rate\", \"battlecard for [competitor]\", \"competitive landscape\", \"why are we losing to [competitor]\", or \"competitor intelligence\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1361,1363,1364,1365,1366],{"name":1362,"slug":1356,"type":15},"Competitive Intelligence",{"name":18,"slug":19,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-04-06T18:36:23.280253",{"slug":1369,"name":1369,"fn":1370,"description":1371,"org":1372,"tags":1373,"stars":26,"repoUrl":27,"updatedAt":1383},"create-an-asset","generate customized sales assets from Dataverse","Generates customized sales assets including one-pagers, proposals, executive summaries, ROI summaries, and mutual action plans from Dataverse context. Use when user says \"create a one-pager\", \"draft a proposal\", \"generate executive summary\", \"build ROI summary\", \"create mutual action plan\", \"sales asset for [account]\", \"proposal outline\", or \"customer-facing document\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1374,1377,1378,1381,1382],{"name":1375,"slug":1376,"type":15},"Content Creation","content-creation",{"name":24,"slug":25,"type":15},{"name":1379,"slug":1380,"type":15},"Marketing","marketing",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-04-06T18:36:24.562421",{"slug":1385,"name":1385,"fn":1386,"description":1387,"org":1388,"tags":1389,"stars":26,"repoUrl":27,"updatedAt":1397},"cross-sell-target-identifier","identify cross-sell targets from customer patterns","Analyzes successful product customers to identify patterns, then finds similar accounts that are good cross-sell candidates with fit scores and reasoning. Use when user asks \"who should I pitch this product to\", \"find cross-sell opportunities\", \"which customers should buy Product X\", \"identify upsell targets\", \"product expansion candidates\", or \"who else would buy this\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1390,1393,1394,1395,1396],{"name":1391,"slug":1392,"type":15},"Analytics","analytics",{"name":18,"slug":19,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-04-06T18:36:37.380929",{"slug":1399,"name":1399,"fn":1400,"description":1401,"org":1402,"tags":1403,"stars":26,"repoUrl":27,"updatedAt":1409},"daily-briefing","prepare daily business briefings from Dataverse","Delivers a prioritized morning summary covering today's meetings, overdue tasks, pipeline alerts, and recommended actions from Dataverse. Use when user says \"what's on my plate today\", \"daily briefing\", \"morning summary\", \"what do I need to focus on today\", \"start my day\", \"daily digest\", \"today's priorities\", or \"what's happening today\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1404,1405,1406,1407,1408],{"name":18,"slug":19,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"name":1338,"slug":1339,"type":15},"2026-04-06T18:36:31.028078",{"slug":1411,"name":1411,"fn":1412,"description":1413,"org":1414,"tags":1415,"stars":26,"repoUrl":27,"updatedAt":1426},"draft-outreach","draft personalized sales outreach from Dataverse","Generates personalized outreach messages by pulling context from Dataverse records. Creates tailored emails for new prospects, re-engagement, follow-ups, or cross-sell. Use when user says \"draft an email to [contact]\", \"write outreach for\", \"help me reach out to\", \"compose email\", \"re-engage this contact\", \"follow-up email\", \"prospecting email\", or \"outreach message for\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1416,1417,1418,1421,1422,1425],{"name":18,"slug":19,"type":15},{"name":24,"slug":25,"type":15},{"name":1419,"slug":1420,"type":15},"Email","email",{"name":9,"slug":8,"type":15},{"name":1423,"slug":1424,"type":15},"Outreach","outreach",{"name":21,"slug":22,"type":15},"2026-04-06T18:36:36.103544",16,{"items":1429,"total":1622},[1430,1452,1473,1492,1507,1524,1535,1548,1563,1578,1597,1610],{"slug":1431,"name":1431,"fn":1432,"description":1433,"org":1434,"tags":1435,"stars":1449,"repoUrl":1450,"updatedAt":1451},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1436,1439,1442,1443,1446],{"name":1437,"slug":1438,"type":15},"Engineering","engineering",{"name":1440,"slug":1441,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1444,"slug":1445,"type":15},"Project Management","project-management",{"name":1447,"slug":1448,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1453,"name":1453,"fn":1454,"description":1455,"org":1456,"tags":1457,"stars":1470,"repoUrl":1471,"updatedAt":1472},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1458,1461,1464,1467],{"name":1459,"slug":1460,"type":15},".NET","net",{"name":1462,"slug":1463,"type":15},"Agents","agents",{"name":1465,"slug":1466,"type":15},"Azure","azure",{"name":1468,"slug":1469,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":1474,"name":1474,"fn":1475,"description":1476,"org":1477,"tags":1478,"stars":1470,"repoUrl":1471,"updatedAt":1491},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1479,1480,1481,1484,1487,1488],{"name":1391,"slug":1392,"type":15},{"name":1465,"slug":1466,"type":15},{"name":1482,"slug":1483,"type":15},"Data Analysis","data-analysis",{"name":1485,"slug":1486,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":1489,"slug":1490,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":1493,"name":1493,"fn":1494,"description":1495,"org":1496,"tags":1497,"stars":1470,"repoUrl":1471,"updatedAt":1506},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1498,1501,1502,1503],{"name":1499,"slug":1500,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1465,"slug":1466,"type":15},{"name":1485,"slug":1486,"type":15},{"name":1504,"slug":1505,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":1508,"name":1508,"fn":1509,"description":1510,"org":1511,"tags":1512,"stars":1470,"repoUrl":1471,"updatedAt":1523},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1513,1514,1517,1518,1519,1522],{"name":1465,"slug":1466,"type":15},{"name":1515,"slug":1516,"type":15},"Compliance","compliance",{"name":1468,"slug":1469,"type":15},{"name":9,"slug":8,"type":15},{"name":1520,"slug":1521,"type":15},"Python","python",{"name":1504,"slug":1505,"type":15},"2026-07-18T05:14:23.017504",{"slug":1525,"name":1525,"fn":1526,"description":1527,"org":1528,"tags":1529,"stars":1470,"repoUrl":1471,"updatedAt":1534},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1530,1531,1532,1533],{"name":1391,"slug":1392,"type":15},{"name":1465,"slug":1466,"type":15},{"name":1468,"slug":1469,"type":15},{"name":1520,"slug":1521,"type":15},"2026-07-31T05:54:29.068751",{"slug":1536,"name":1536,"fn":1537,"description":1538,"org":1539,"tags":1540,"stars":1470,"repoUrl":1471,"updatedAt":1547},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1541,1544,1545,1546],{"name":1542,"slug":1543,"type":15},"API Development","api-development",{"name":1465,"slug":1466,"type":15},{"name":9,"slug":8,"type":15},{"name":1520,"slug":1521,"type":15},"2026-07-18T05:14:16.988376",{"slug":1549,"name":1549,"fn":1550,"description":1551,"org":1552,"tags":1553,"stars":1470,"repoUrl":1471,"updatedAt":1562},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1554,1555,1558,1561],{"name":1465,"slug":1466,"type":15},{"name":1556,"slug":1557,"type":15},"Computer Vision","computer-vision",{"name":1559,"slug":1560,"type":15},"Images","images",{"name":1520,"slug":1521,"type":15},"2026-07-18T05:14:18.007737",{"slug":1564,"name":1564,"fn":1565,"description":1566,"org":1567,"tags":1568,"stars":1470,"repoUrl":1471,"updatedAt":1577},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1569,1570,1573,1576],{"name":1465,"slug":1466,"type":15},{"name":1571,"slug":1572,"type":15},"Configuration","configuration",{"name":1574,"slug":1575,"type":15},"Feature Flags","feature-flags",{"name":1485,"slug":1486,"type":15},"2026-07-03T16:32:01.278468",{"slug":1579,"name":1579,"fn":1580,"description":1581,"org":1582,"tags":1583,"stars":1470,"repoUrl":1471,"updatedAt":1596},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1584,1587,1590,1593],{"name":1585,"slug":1586,"type":15},"Cosmos DB","cosmos-db",{"name":1588,"slug":1589,"type":15},"Database","database",{"name":1591,"slug":1592,"type":15},"NoSQL","nosql",{"name":1594,"slug":1595,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":1598,"name":1598,"fn":1580,"description":1599,"org":1600,"tags":1601,"stars":1470,"repoUrl":1471,"updatedAt":1609},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1602,1603,1604,1605,1606],{"name":1585,"slug":1586,"type":15},{"name":1588,"slug":1589,"type":15},{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},{"name":1607,"slug":1608,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":1611,"name":1611,"fn":1612,"description":1613,"org":1614,"tags":1615,"stars":1470,"repoUrl":1471,"updatedAt":1621},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1616,1617,1618,1619,1620],{"name":1465,"slug":1466,"type":15},{"name":1585,"slug":1586,"type":15},{"name":1588,"slug":1589,"type":15},{"name":1485,"slug":1486,"type":15},{"name":1591,"slug":1592,"type":15},"2026-05-13T06:14:17.582229",267]