AI Demo Assistant
Turns a customer name + line of business + target personas into a polished,
scenario-driven content pack for a Microsoft 365 Copilot demo: example
files plus a written delivery/provisioning plan. After operator approval, it can
optionally seed the generated Office files into a customer-named OneDrive
folder and optionally post the Teams chat scripts live — both gated on
explicit confirmation. Everything else (email threads, calendar invites, meeting
transcripts) is drafted for a human to load.
What can and can't be auto-seeded
| Asset |
Auto-seed? |
How |
| Word / PowerPoint / Excel files |
Yes |
Create a customer-named OneDrive folder and upload the files (Phase 3). |
| Teams chat messages |
Optional, with constraints |
Posts live via Graph; see Phase 4 caveats (timestamped now; one account posts only as itself). |
| Email threads |
No |
Drafted as scripts for manual paste/seed. Do not auto-send. |
| Calendar meetings |
No |
Drafted as scripts with agendas for manual creation. Do not auto-book. |
| Meeting recordings / transcripts |
No — not possible via any API |
Generate a transcript/script; to get a real recording, a person reads it aloud in a recorded Teams meeting. See Phase 4. |
The hard limits exist because Graph has no endpoint to backdate messages or to
inject a recording/transcript — those are produced only by a live recorded
meeting. Never claim a recording was seeded.
When NOT to Use
- Sending real email, booking real calendar events, or writing to a production
tenant. This skill targets demo tenants and the operator's own OneDrive with
fictional content only.
- Real customer data or PII. All generated content is fictional dummy data.
- Generic single-file asks ("make a deck", "write an email") with no demo
framing — use the docx/pptx/xlsx skills directly.
Inputs (collect before building)
| Input |
Required |
Example |
| Customer name |
Yes |
"Contoso Manufacturing" |
| Line of business (LOB) |
Yes |
"Field Service Operations" |
| Target personas / roles |
Yes |
"Service Dispatcher, Field Tech, Ops Director" |
| Segment / size |
Optional (default: Enterprise) |
"SMB", "Public Sector" |
| Region / language / tone |
Optional (default: US English, professional) |
"UK English, formal" |
| # of scenarios |
Optional (default: propose 3–5) |
"4" |
| Demo tenant domain |
Optional (default: placeholder {tenant-domain}) |
"M365x84272.onmicrosoft.com" |
| OneDrive seeding target |
Optional (default: operator's own OneDrive) |
"seed to my OneDrive" / a specific account |
| Teams seeding |
Optional (default: scripts only, no live post) |
"post the chats too" |
If customer, LOB, or personas are missing, ask one concise question to fill
the gaps. Do not over-interview — reasonable defaults cover everything else.
Seeding target and Teams seeding are only needed at Phase 3/4; don't block the
build on them.
Workflow
Phase 1 — Propose scenarios (confirmation gate)
- From the LOB + personas, infer 3–5 realistic, high-impact Copilot
scenarios that map to a day-in-the-life of the named personas. Each scenario
should show Copilot saving time across Outlook, Teams, and Office.
- Present the proposed scenarios as a short numbered list — each with a one-line
title, the persona it serves, and the Copilot "wow moment" it demonstrates.
- Stop and ask the operator to approve, edit, or swap scenarios before
building anything. Do not generate files until scenarios are confirmed.
- Pre-approval exception: if the operator supplied their own scenario list
(or explicitly said "just build it") in the initial request, treat that as
approval — restate the scenario set in one line and proceed to Phase 2. The
gate exists to prevent wasted builds, not to force a redundant round trip.
Phase 2 — Build the content pack (after approval)
For the approved scenario set, generate every asset below. Use the customer name,
LOB, and personas throughout so content feels native. Save all deliverables to
the standard output directory for the current environment (the designated
output/ folder).
Before generating any Office file, read the relevant skill's SKILL.md
(docx / pptx / xlsx) and follow it — these skills encode the validation and
rendering steps that keep files from arriving corrupted or ugly.
Persona roster (build first — everything else references it).
Create a small cast of fictional characters: name, title, which scenarios they
appear in, and a mapping column for the demo tenant account the operator will
use to seed as them (use real demo-tenant aliases if the operator provided a
tenant domain, otherwise {firstname}@{tenant-domain} placeholders the operator
can find-and-replace). Reuse this exact cast — same spellings, same titles —
across every email thread, chat script, meeting invite, and document byline.
Inconsistent names across artifacts are the fastest way to make a demo feel
fake and to confuse the person seeding the tenant.
File naming and cross-reference consistency.
Name every generated file with the pattern S<NN>_<ScenarioShortName>_<DocType>.<ext>
(e.g., S01_EscalationTriage_ServiceReport.docx). Any filename mentioned in an
email script, chat script, agenda, pre-read list, or the manifest must exactly
match a generated file — a plan that references files that don't exist (or are
named differently) breaks the operator's seeding run.
A. Office example files (dummy data, clearly fictional)
Name each file per the convention above and give it real, specific content so
the manifest descriptions (item 9) and the prompt workflows (item 8) have
something concrete to point at:
- Word: a representative document per scenario where it fits (e.g.,
S01_EscalationTriage_ServiceReport.docx — a field service report with named
sections such as Incident Summary, Root-Cause Analysis, Parts Replaced,
Customer Impact, Recommended Follow-up). Target 2–4 pages — enough substance
for Copilot to summarize impressively, no more.
- PowerPoint: a customer-branded-style deck (e.g.,
S02_QBR_Deck.pptx — a
QBR with an SLA scorecard, a ticket-volume trend slide, a cost summary, and a
roadmap). Target 8–12 slides, each with a clear, descriptive title.
- Excel: a data workbook with believable dummy rows and named sheets and
columns (e.g.,
S01_EscalationTriage_TicketLog.xlsx — a "Tickets" sheet with
TicketID, OpenedDate, Site, Priority, Status, AssignedTech, AgeDays, Resolution
columns). Target 30–80 rows — enough for Copilot to find real patterns, small
enough to stay readable.
- Compute any totals/percentages with a code tool before embedding them; never
hand-calculate numbers in a file.
These size targets exist because example files only need to be rich enough to
make the live prompts land; oversized assets slow the build and add nothing to
the demo.
B. AI Demo Delivery Plan
Default to a single Word doc (it's the operator- and customer-facing artifact);
use markdown only if the operator asks for a lighter/faster format. Contains the
provisioning recipe a human loads into the demo tenant:
Persona roster — the fictional cast with the tenant-account mapping table
described above.
Scenario overview — the approved scenarios and their personas.
Email thread scripts — for each scenario: subject, fictional participants
(from the roster), and full body text for a realistic 2–4 message thread,
ready to paste/seed. Threads should carry real substance — context, a
decision or two, and an open question — so that "summarize this thread"
produces a genuinely impressive answer. Reference the generated files as
attachments/pre-reads by exact filename.
Teams chat scripts — short, natural 1:1 and group chat exchanges per
scenario, using roster names. Keep each line attributed to a roster persona so
the optional live-post step (Phase 4) knows who would send what.
Teams structure — a single reusable team name + description, and one
channel per scenario with its purpose, so the operator builds it once and
reuses across demos.
Calendar meetings — per scenario: subject, attendees (from the roster),
relative date/time placeholders, an agenda, and pre-read links pointing to
the generated files by exact filename.
Meeting transcript/script — for the headline scenario (or each, if the
operator asks), a realistic meeting transcript in speaker-attributed form
(Name: line), 12–25 turns, covering context, a decision, and an action item
so that "summarize the meeting and list action items" lands. This is the
substitute for a recording — see Phase 4 for how it becomes a real recording.
Sample prompt workflows — for each scenario, an ordered workflow of the
exact Copilot prompts the presenter runs, written so each step builds on the
one before it into a day-in-the-life narrative (typically catch up → analyze →
draft → polish → share). Present each workflow as a numbered sequence, and
tag every prompt with the specific Copilot app it runs in so the presenter
knows exactly where to click. Use these canonical app names:
- Microsoft 365 Copilot Chat — the standalone, work-grounded chat (the
Copilot app, Teams/Edge side panel, or m365.cloud.microsoft); best for
cross-app "catch me up across everything" prompts.
- Copilot in Outlook — summarize a thread, draft a reply, coaching tips.
- Copilot in Teams — summarize a chat or channel; and Copilot in Teams
meetings for live/after-meeting recap and action items.
- Copilot in Word — draft, summarize, or rewrite a document.
- Copilot in Excel — analyze data, surface trends, build formulas.
- Copilot in PowerPoint — create or summarize a deck, or build one from a
Word file.
Write every prompt with the CRAFT framework so each one is a complete,
copy-paste-ready Copilot prompt instead of a vague ask:
- C — Context: the situation and constraints ("ahead of the Northwind QBR
on Demo Day −2…").
- R — Role: the persona Copilot should adopt ("act as a service operations
analyst…").
- A — Action: the specific task ("summarize the top three escalation
risks…").
- F — Format: the shape of the output ("as a 5-bullet list", "a two-column
table", "an email under 150 words").
- T — Target audience: who the output is for ("for the Ops Director"), which
also sets the tone.
Name the grounding file(s) inline in the prompt whenever it sharpens the
result — e.g. "In S01_EscalationTriage_TicketLog.xlsx, which open
tickets…" — in addition to the separate → grounds on: note. Naming the file
inside the prompt is what makes file-scoped prompts (Copilot in
Excel/Word/PowerPoint) reliably attach to the right artifact live on stage.
Format each step as App — "exact prompt" with a → grounds on: note naming
the artifact(s) it draws from. Example workflow:
Scenario 1 — Escalation triage (persona: Service Dispatcher)
1. Microsoft 365 Copilot Chat — "Ahead of my morning triage, act as my operations
assistant and catch me up on everything about the Northwind escalation from the
last week. Give me a short bulleted brief — what happened, current status, and
what needs my decision — in a concise, professional tone for a dispatcher."
→ grounds on: S01_EscalationTriage_EmailThread, S01_EscalationTriage_TeamsChat,
S01_EscalationTriage_StandupTranscript
2. Copilot in Outlook — "Act as a customer-facing service manager. Summarize the
Northwind escalation email thread, then draft a reply proposing the Tuesday
repair window, as a ready-to-send email under 150 words in a reassuring,
professional tone for the customer."
→ grounds on: S01_EscalationTriage_EmailThread
3. Copilot in Excel — "In S01_EscalationTriage_TicketLog.xlsx, act as a data
analyst: find the open tickets tied to the Northwind site and calculate their
average age in days. Present it as a small table sorted oldest-first, for the
Ops Director."
→ grounds on: S01_EscalationTriage_TicketLog.xlsx
4. Copilot in Word — "Using S01_EscalationTriage_ServiceReport.docx, act as a
technical writer and turn this field service report into a 5-bullet executive
summary in a crisp, outcome-focused tone for the Ops Director."
→ grounds on: S01_EscalationTriage_ServiceReport.docx
5. Copilot in Teams — "Act as a meeting scribe. Recap the escalation stand-up and
list the action items as a table with owner and due-date columns, in a clear,
neutral tone for the team."
→ grounds on: S01_EscalationTriage_StandupTranscript
Every prompt must be answerable from content that exists in this pack —
before finalizing, walk each step back to the specific thread, chat, meeting,
transcript, or file it draws on (note it inline as shown above) and strengthen
the content if the answer would be thin. A prompt with nothing behind it is a
live-demo failure waiting to happen.
File manifest / seeding checklist — a table of every generated file:
exact file name, a detailed description of the file's contents, which
scenario / prompt-workflow step it supports, and where it gets seeded
(which mailbox, channel, calendar, or OneDrive/SharePoint location). The
description must be specific enough that the operator knows exactly what each
file holds without opening it — name the Word section headings and page
count, the PowerPoint slide titles, and the Excel sheet/tab names with
their column headers and row count. One-line "a budget spreadsheet"
descriptions are not enough. Example rows:
| File name | Contents (detailed) | Supports | Seed to |
|-----------|---------------------|----------|---------|
| S01_EscalationTriage_ServiceReport.docx | 3-page field service report. Sections: Incident Summary, Root-Cause Analysis, Parts Replaced, Customer Impact, Recommended Follow-up. ~20 fictional part/labor line items. | Scenario 1, prompt 4 | Dispatcher OneDrive → "Copilot Demo - Northwind" |
| S01_EscalationTriage_TicketLog.xlsx | Single sheet "Tickets" (62 rows). Columns: TicketID, OpenedDate, Site, Priority, Status, AssignedTech, AgeDays, Resolution. Mix of open/closed across 4 sites. | Scenario 1, prompt 3 | Dispatcher OneDrive folder |
| S02_QBR_Deck.pptx | 10-slide QBR deck. Slides: Title, Agenda, SLA Scorecard, Ticket-Volume Trend, Top 5 Escalations, Cost Summary, Roadmap, Risks, Asks, Next Steps. | Scenario 2, prompts 1–2 | Ops Director OneDrive folder |
For files seeded in Phase 3, include the live OneDrive folder path/link once
created. This table is the operator's load checklist.
Seeding timing note — instruct the operator to load content 24–72
hours before the demo. Copilot answers from the Microsoft Graph semantic
index, and freshly seeded content often isn't surfaced for hours; seeding
minutes before going on stage is the most common cause of dead demos. This
applies to OneDrive-seeded files too — seed them on the same schedule.
Appendix — Sample file contents — close the Delivery Plan with an
appendix that walks through each generated sample file in detail, one
subsection per file. For every file give the exact file name, its type and size
(page / slide / row count), and a structured description of what's inside: for
Word, each section heading and what it covers; for PowerPoint, every
slide title and the key point on it; for Excel, each sheet/tab name with its
column headers and what the rows represent. Call out the two or three "hero"
details in each file that the sample prompts (item 8) rely on, so a presenter
reading only the appendix knows exactly what Copilot will find. This appendix is
the narrative companion to the seeding-checklist table (item 9): the table says
where each file goes, the appendix says what's inside it.
Date convention: use relative dates anchored to demo day ("Demo Day −5",
"Demo Day −2, 9:00 AM") in all scripts and meetings rather than hard-coded
calendar dates. This keeps the pack evergreen across runs and ensures
recency-based prompts ("summarize my recent emails about the escalation")
actually work when the operator seeds on schedule.
Phase 3 — Seed files to OneDrive (optional, on request)
Run this when the operator asks to seed/upload the files to OneDrive (e.g.,
"seed the files to my OneDrive", "put these in OneDrive"). If they didn't ask,
skip this phase and leave files in output/ for manual loading.
- Confirm the target. Default to the operator's own OneDrive
(
GetDefaultDrive, no site_id). If they named a different account/drive,
resolve it explicitly — never guess a drive. Confirm the destination in one
line before writing.
- Create the customer folder. Derive a folder name from the customer name,
prefixed for tidiness:
Copilot Demo - {Customer} (sanitize illegal
characters \ / : * ? " < > |). Place it under a stable parent
(Copilot Demos/ at the OneDrive root — create the parent first if missing).
Use CreateFolder. If a same-named folder already exists, reuse it rather
than failing; tell the operator you're reusing it.
- Upload the generated Office files from
output/ into that folder using
the available OneDrive upload capability. Upload only the demo Office files
and the Delivery Plan — not scratch/working files. If the runtime cannot
upload a given binary file directly, place it into a customer-named subfolder
of the synced workspace output and report that OneDrive-sync location instead;
never silently drop a file.
- Verify and report. List the destination folder (
GetDriveChildren) and
confirm every intended file is present. Give the operator the folder link and
the list of seeded files. Update the manifest's "where it gets seeded" column
with the live OneDrive path.
Folder-per-customer is the rule — one customer-named folder per demo so runs
don't collide and the operator can find/clean up a demo's assets in one place.
Phase 4 — Optional Teams chats & meeting recording
Teams chat seeding (optional, on explicit request). Only post live if the
operator says to (e.g., "post the chats too"). Otherwise the chat scripts in
the Delivery Plan are the deliverable. Before posting, state these constraints in
one line so expectations are right:
- Messages are timestamped now — Graph cannot backdate them. Recency prompts
work; "last Tuesday" framing in the script won't match the real timestamp.
- A signed-in account posts only as itself. A multi-persona chat looks real
only if each persona's tenant account posts its own lines; from one account,
all lines appear from that one user. Tell the operator which is happening.
- Use
PostMessage/PostChannelMessage with resolved recipients. Do not
fabricate chat IDs.
Meeting recording — generate a transcript, not a recording. There is no
API to create or upload a Teams meeting recording or transcript — they exist
only after a real recorded meeting. So:
- Deliver the meeting transcript/script from Phase 2 (item 7) as the
seedable artifact (a text/VTT file Copilot-grounded prompts can draw on if the
operator seeds it as a file).
- If a genuine recording is required, instruct the operator to start a Teams
meeting with the persona accounts, turn on recording, read the transcript
aloud, and stop — Teams then produces a real recording + transcript tied to the
event. This is the only path to an actual recording; never imply one was
generated programmatically.
Phase 5 — Deliver
- Run the delivery gate: list the output directory and verify that every
file named in the manifest exists on disk, and that no script or agenda
references a file that wasn't generated. If Phase 3 ran, also verify the
OneDrive folder contains the seeded files.
- Give the operator a short summary: scenarios built, files produced (by name),
where the Delivery Plan lives, and — if seeded — the OneDrive folder link and
what was posted to Teams. Note that content is fictional dummy data, that
email/calendar/recordings are drafted for manual loading, and the seeding
timing window (24–72h before demo).
Guardrails
- Scoped live seeding only. The only live writes this skill performs are
(a) creating a OneDrive folder and uploading the generated files (Phase 3), and
(b) optionally posting Teams chat messages (Phase 4) — both only when the
operator asks, and only with fictional content. Never auto-send email, never
auto-book calendar events, and never write to a production tenant. If asked
to do those, output the script and explain the operator loads it.
- Confirm destination before writing. Resolve and restate the target
OneDrive/account in one line before creating folders or uploading. Never guess
a drive or post to an unconfirmed chat/channel.
- No backdating, no fake recordings. Do not claim messages were backdated or
that a meeting recording/transcript was seeded — neither is possible.
- All data is fictional. Use invented names, companies, numbers, and dates.
Never use the operator's real colleagues, real customer PII, or real internal
figures. Use the demo tenant domain (or
{tenant-domain} placeholder) for all
fictional email addresses — never real-looking public domains.
- No fabricated real facts. Dummy data is fine; do not assert real-world
statistics, real people, or real quotes as fact.
- Confirmation gate on scenarios. Always get operator approval of the
scenario list before building files (Phase 1 → Phase 2), unless pre-approved
per the Phase 1 exception.
- Numeric accuracy. Compute any embedded totals/percentages with a code tool.
- Internal consistency. One persona roster, one filename convention, and
every live prompt traceable to seeded content. Consistency is what makes the
demo feel real.
- Folder-per-customer. Seed each demo into its own customer-named OneDrive
folder so runs don't collide.
- Reusable across runs. Keep customer/LOB/persona/tenant-domain/seeding
target as variables so the same flow works for any segment and LOB.
1---2name: ai-demo-assistant3description: Builds a scenario-driven content pack for a Microsoft 365 Copilot customer demo. From a customer name, line of business, and target personas, it proposes demo scenarios for operator approval, then generates fictional Word/PowerPoint/Excel example files plus an AI Demo Delivery Plan (persona roster with tenant-account mapping, email and Teams chat scripts, calendar meetings with agendas, a meeting transcript, and app-tagged Copilot prompt workflows grounded in the generated content). After approval it can OPTIONALLY seed the Office files into a customer-named OneDrive folder and optionally post the Teams chat scripts live; email, calendar, and recordings are drafted for manual loading. Use when the user asks to "set up a Copilot demo", "build demo content for a customer", "seed a demo tenant", "create a demo delivery plan", "fill a demo tenant with realistic content", or "generate demo scenarios and sample files". Do NOT use for sending real email, booking real calendar events, or production-tenant data.4---56# AI Demo Assistant78Turns a customer name + line of business + target personas into a polished,9scenario-driven **content pack** for a Microsoft 365 Copilot demo: example10files plus a written delivery/provisioning plan. After operator approval, it can11**optionally seed the generated Office files into a customer-named OneDrive12folder** and **optionally post the Teams chat scripts live** — both gated on13explicit confirmation. Everything else (email threads, calendar invites, meeting14transcripts) is drafted for a human to load.1516## What can and can't be auto-seeded1718| Asset | Auto-seed? | How |19|-------|-----------|-----|20| Word / PowerPoint / Excel files | **Yes** | Create a customer-named OneDrive folder and upload the files (Phase 3). |21| Teams chat messages | **Optional, with constraints** | Posts live via Graph; see Phase 4 caveats (timestamped now; one account posts only as itself). |22| Email threads | No | Drafted as scripts for manual paste/seed. Do not auto-send. |23| Calendar meetings | No | Drafted as scripts with agendas for manual creation. Do not auto-book. |24| Meeting **recordings / transcripts** | **No — not possible via any API** | Generate a transcript/script; to get a real recording, a person reads it aloud in a recorded Teams meeting. See Phase 4. |2526The hard limits exist because Graph has no endpoint to backdate messages or to27inject a recording/transcript — those are produced only by a live recorded28meeting. Never claim a recording was seeded.2930## When NOT to Use3132- Sending real email, booking real calendar events, or writing to a **production33 tenant**. This skill targets demo tenants and the operator's own OneDrive with34 fictional content only.35- Real customer data or PII. All generated content is fictional dummy data.36- Generic single-file asks ("make a deck", "write an email") with no demo37 framing — use the docx/pptx/xlsx skills directly.3839## Inputs (collect before building)4041| Input | Required | Example |42|-------|----------|---------|43| Customer name | Yes | "Contoso Manufacturing" |44| Line of business (LOB) | Yes | "Field Service Operations" |45| Target personas / roles | Yes | "Service Dispatcher, Field Tech, Ops Director" |46| Segment / size | Optional (default: Enterprise) | "SMB", "Public Sector" |47| Region / language / tone | Optional (default: US English, professional) | "UK English, formal" |48| # of scenarios | Optional (default: propose 3–5) | "4" |49| Demo tenant domain | Optional (default: placeholder `{tenant-domain}`) | "M365x84272.onmicrosoft.com" |50| **OneDrive seeding target** | Optional (default: operator's own OneDrive) | "seed to my OneDrive" / a specific account |51| **Teams seeding** | Optional (default: scripts only, no live post) | "post the chats too" |5253If customer, LOB, or personas are missing, ask **one** concise question to fill54the gaps. Do not over-interview — reasonable defaults cover everything else.55Seeding target and Teams seeding are only needed at Phase 3/4; don't block the56build on them.5758## Workflow5960### Phase 1 — Propose scenarios (confirmation gate)61621. From the LOB + personas, infer **3–5 realistic, high-impact Copilot63 scenarios** that map to a day-in-the-life of the named personas. Each scenario64 should show Copilot saving time across Outlook, Teams, and Office.652. Present the proposed scenarios as a short numbered list — each with a one-line66 title, the persona it serves, and the Copilot "wow moment" it demonstrates.673. **Stop and ask the operator to approve, edit, or swap scenarios** before68 building anything. Do not generate files until scenarios are confirmed.694. **Pre-approval exception:** if the operator supplied their own scenario list70 (or explicitly said "just build it") in the initial request, treat that as71 approval — restate the scenario set in one line and proceed to Phase 2. The72 gate exists to prevent wasted builds, not to force a redundant round trip.7374### Phase 2 — Build the content pack (after approval)7576For the approved scenario set, generate every asset below. Use the customer name,77LOB, and personas throughout so content feels native. Save all deliverables to78the standard output directory for the current environment (the designated79`output/` folder).8081**Before generating any Office file, read the relevant skill's SKILL.md82(docx / pptx / xlsx) and follow it** — these skills encode the validation and83rendering steps that keep files from arriving corrupted or ugly.8485**Persona roster (build first — everything else references it).**86Create a small cast of fictional characters: name, title, which scenarios they87appear in, and a mapping column for the demo tenant account the operator will88use to seed as them (use real demo-tenant aliases if the operator provided a89tenant domain, otherwise `{firstname}@{tenant-domain}` placeholders the operator90can find-and-replace). Reuse this exact cast — same spellings, same titles —91across every email thread, chat script, meeting invite, and document byline.92Inconsistent names across artifacts are the fastest way to make a demo feel93fake and to confuse the person seeding the tenant.9495**File naming and cross-reference consistency.**96Name every generated file with the pattern `S<NN>_<ScenarioShortName>_<DocType>.<ext>`97(e.g., `S01_EscalationTriage_ServiceReport.docx`). Any filename mentioned in an98email script, chat script, agenda, pre-read list, or the manifest must exactly99match a generated file — a plan that references files that don't exist (or are100named differently) breaks the operator's seeding run.101102**A. Office example files (dummy data, clearly fictional)**103Name each file per the convention above and give it **real, specific content** so104the manifest descriptions (item 9) and the prompt workflows (item 8) have105something concrete to point at:106- **Word**: a representative document per scenario where it fits (e.g.,107 `S01_EscalationTriage_ServiceReport.docx` — a field service report with named108 sections such as Incident Summary, Root-Cause Analysis, Parts Replaced,109 Customer Impact, Recommended Follow-up). Target 2–4 pages — enough substance110 for Copilot to summarize impressively, no more.111- **PowerPoint**: a customer-branded-style deck (e.g., `S02_QBR_Deck.pptx` — a112 QBR with an SLA scorecard, a ticket-volume trend slide, a cost summary, and a113 roadmap). Target 8–12 slides, each with a clear, descriptive title.114- **Excel**: a data workbook with believable dummy rows and **named sheets and115 columns** (e.g., `S01_EscalationTriage_TicketLog.xlsx` — a "Tickets" sheet with116 TicketID, OpenedDate, Site, Priority, Status, AssignedTech, AgeDays, Resolution117 columns). Target 30–80 rows — enough for Copilot to find real patterns, small118 enough to stay readable.119- Compute any totals/percentages with a code tool before embedding them; never120 hand-calculate numbers in a file.121122These size targets exist because example files only need to be rich enough to123make the live prompts land; oversized assets slow the build and add nothing to124the demo.125126**B. AI Demo Delivery Plan**127Default to a single Word doc (it's the operator- and customer-facing artifact);128use markdown only if the operator asks for a lighter/faster format. Contains the129provisioning recipe a human loads into the demo tenant:1301. **Persona roster** — the fictional cast with the tenant-account mapping table131 described above.1322. **Scenario overview** — the approved scenarios and their personas.1333. **Email thread scripts** — for each scenario: subject, fictional participants134 (from the roster), and full body text for a realistic 2–4 message thread,135 ready to paste/seed. Threads should carry real substance — context, a136 decision or two, and an open question — so that "summarize this thread"137 produces a genuinely impressive answer. Reference the generated files as138 attachments/pre-reads by exact filename.1394. **Teams chat scripts** — short, natural 1:1 and group chat exchanges per140 scenario, using roster names. Keep each line attributed to a roster persona so141 the optional live-post step (Phase 4) knows who would send what.1425. **Teams structure** — a single **reusable team** name + description, and one143 **channel per scenario** with its purpose, so the operator builds it once and144 reuses across demos.1456. **Calendar meetings** — per scenario: subject, attendees (from the roster),146 relative date/time placeholders, an agenda, and pre-read links pointing to147 the generated files by exact filename.1487. **Meeting transcript/script** — for the headline scenario (or each, if the149 operator asks), a realistic meeting transcript in speaker-attributed form150 (`Name: line`), 12–25 turns, covering context, a decision, and an action item151 so that "summarize the meeting and list action items" lands. This is the152 substitute for a recording — see Phase 4 for how it becomes a real recording.1538. **Sample prompt workflows** — for each scenario, an **ordered workflow** of the154 exact Copilot prompts the presenter runs, written so each step builds on the155 one before it into a day-in-the-life narrative (typically *catch up → analyze →156 draft → polish → share*). Present each workflow as a numbered sequence, and157 **tag every prompt with the specific Copilot app it runs in** so the presenter158 knows exactly where to click. Use these canonical app names:159 - **Microsoft 365 Copilot Chat** — the standalone, work-grounded chat (the160 Copilot app, Teams/Edge side panel, or m365.cloud.microsoft); best for161 cross-app "catch me up across everything" prompts.162 - **Copilot in Outlook** — summarize a thread, draft a reply, coaching tips.163 - **Copilot in Teams** — summarize a chat or channel; and **Copilot in Teams164 meetings** for live/after-meeting recap and action items.165 - **Copilot in Word** — draft, summarize, or rewrite a document.166 - **Copilot in Excel** — analyze data, surface trends, build formulas.167 - **Copilot in PowerPoint** — create or summarize a deck, or build one from a168 Word file.169170 **Write every prompt with the CRAFT framework** so each one is a complete,171 copy-paste-ready Copilot prompt instead of a vague ask:172 - **C — Context:** the situation and constraints ("ahead of the Northwind QBR173 on Demo Day −2…").174 - **R — Role:** the persona Copilot should adopt ("act as a service operations175 analyst…").176 - **A — Action:** the specific task ("summarize the top three escalation177 risks…").178 - **F — Format:** the shape of the output ("as a 5-bullet list", "a two-column179 table", "an email under 150 words").180 - **T — Target audience:** who the output is for ("for the Ops Director"), which181 also sets the tone.182183 **Name the grounding file(s) inline in the prompt whenever it sharpens the184 result** — e.g. *"In `S01_EscalationTriage_TicketLog.xlsx`, which open185 tickets…"* — in addition to the separate `→ grounds on:` note. Naming the file186 inside the prompt is what makes file-scoped prompts (Copilot in187 Excel/Word/PowerPoint) reliably attach to the right artifact live on stage.188189 Format each step as `App — "exact prompt"` with a `→ grounds on:` note naming190 the artifact(s) it draws from. Example workflow:191 ```192 Scenario 1 — Escalation triage (persona: Service Dispatcher)193 1. Microsoft 365 Copilot Chat — "Ahead of my morning triage, act as my operations194 assistant and catch me up on everything about the Northwind escalation from the195 last week. Give me a short bulleted brief — what happened, current status, and196 what needs my decision — in a concise, professional tone for a dispatcher."197 → grounds on: S01_EscalationTriage_EmailThread, S01_EscalationTriage_TeamsChat,198 S01_EscalationTriage_StandupTranscript199 2. Copilot in Outlook — "Act as a customer-facing service manager. Summarize the200 Northwind escalation email thread, then draft a reply proposing the Tuesday201 repair window, as a ready-to-send email under 150 words in a reassuring,202 professional tone for the customer."203 → grounds on: S01_EscalationTriage_EmailThread204 3. Copilot in Excel — "In S01_EscalationTriage_TicketLog.xlsx, act as a data205 analyst: find the open tickets tied to the Northwind site and calculate their206 average age in days. Present it as a small table sorted oldest-first, for the207 Ops Director."208 → grounds on: S01_EscalationTriage_TicketLog.xlsx209 4. Copilot in Word — "Using S01_EscalationTriage_ServiceReport.docx, act as a210 technical writer and turn this field service report into a 5-bullet executive211 summary in a crisp, outcome-focused tone for the Ops Director."212 → grounds on: S01_EscalationTriage_ServiceReport.docx213 5. Copilot in Teams — "Act as a meeting scribe. Recap the escalation stand-up and214 list the action items as a table with owner and due-date columns, in a clear,215 neutral tone for the team."216 → grounds on: S01_EscalationTriage_StandupTranscript217 ```218 **Every prompt must be answerable from content that exists in this pack** —219 before finalizing, walk each step back to the specific thread, chat, meeting,220 transcript, or file it draws on (note it inline as shown above) and strengthen221 the content if the answer would be thin. A prompt with nothing behind it is a222 live-demo failure waiting to happen.2239. **File manifest / seeding checklist** — a table of every generated file:224 exact file name, a **detailed description of the file's contents**, which225 scenario / prompt-workflow step it supports, and **where it gets seeded**226 (which mailbox, channel, calendar, or OneDrive/SharePoint location). The227 description must be specific enough that the operator knows exactly what each228 file holds without opening it — name the **Word** section headings and page229 count, the **PowerPoint** slide titles, and the **Excel** sheet/tab names with230 their column headers and row count. One-line "a budget spreadsheet"231 descriptions are not enough. Example rows:232 ```233 | File name | Contents (detailed) | Supports | Seed to |234 |-----------|---------------------|----------|---------|235 | S01_EscalationTriage_ServiceReport.docx | 3-page field service report. Sections: Incident Summary, Root-Cause Analysis, Parts Replaced, Customer Impact, Recommended Follow-up. ~20 fictional part/labor line items. | Scenario 1, prompt 4 | Dispatcher OneDrive → "Copilot Demo - Northwind" |236 | S01_EscalationTriage_TicketLog.xlsx | Single sheet "Tickets" (62 rows). Columns: TicketID, OpenedDate, Site, Priority, Status, AssignedTech, AgeDays, Resolution. Mix of open/closed across 4 sites. | Scenario 1, prompt 3 | Dispatcher OneDrive folder |237 | S02_QBR_Deck.pptx | 10-slide QBR deck. Slides: Title, Agenda, SLA Scorecard, Ticket-Volume Trend, Top 5 Escalations, Cost Summary, Roadmap, Risks, Asks, Next Steps. | Scenario 2, prompts 1–2 | Ops Director OneDrive folder |238 ```239 For files seeded in Phase 3, include the live OneDrive folder path/link once240 created. This table is the operator's load checklist.24110. **Seeding timing note** — instruct the operator to load content **24–72242 hours before the demo**. Copilot answers from the Microsoft Graph semantic243 index, and freshly seeded content often isn't surfaced for hours; seeding244 minutes before going on stage is the most common cause of dead demos. This245 applies to OneDrive-seeded files too — seed them on the same schedule.24624711. **Appendix — Sample file contents** — close the Delivery Plan with an248 **appendix that walks through each generated sample file in detail**, one249 subsection per file. For every file give the exact file name, its type and size250 (page / slide / row count), and a structured description of what's inside: for251 **Word**, each section heading and what it covers; for **PowerPoint**, every252 slide title and the key point on it; for **Excel**, each sheet/tab name with its253 column headers and what the rows represent. Call out the two or three "hero"254 details in each file that the sample prompts (item 8) rely on, so a presenter255 reading only the appendix knows exactly what Copilot will find. This appendix is256 the narrative companion to the seeding-checklist table (item 9): the table says257 *where each file goes*, the appendix says *what's inside it*.258259**Date convention:** use relative dates anchored to demo day ("Demo Day −5",260"Demo Day −2, 9:00 AM") in all scripts and meetings rather than hard-coded261calendar dates. This keeps the pack evergreen across runs and ensures262recency-based prompts ("summarize my recent emails about the escalation")263actually work when the operator seeds on schedule.264265### Phase 3 — Seed files to OneDrive (optional, on request)266267Run this when the operator asks to seed/upload the files to OneDrive (e.g.,268"seed the files to my OneDrive", "put these in OneDrive"). If they didn't ask,269skip this phase and leave files in `output/` for manual loading.2702711. **Confirm the target.** Default to the operator's own OneDrive272 (`GetDefaultDrive`, no `site_id`). If they named a different account/drive,273 resolve it explicitly — never guess a drive. Confirm the destination in one274 line before writing.2752. **Create the customer folder.** Derive a folder name from the customer name,276 prefixed for tidiness: `Copilot Demo - {Customer}` (sanitize illegal277 characters `\ / : * ? " < > |`). Place it under a stable parent278 (`Copilot Demos/` at the OneDrive root — create the parent first if missing).279 Use `CreateFolder`. If a same-named folder already exists, reuse it rather280 than failing; tell the operator you're reusing it.2813. **Upload the generated Office files** from `output/` into that folder using282 the available OneDrive upload capability. Upload only the demo Office files283 and the Delivery Plan — not scratch/working files. If the runtime cannot284 upload a given binary file directly, place it into a customer-named subfolder285 of the synced workspace output and report that OneDrive-sync location instead;286 never silently drop a file.2874. **Verify and report.** List the destination folder (`GetDriveChildren`) and288 confirm every intended file is present. Give the operator the folder link and289 the list of seeded files. Update the manifest's "where it gets seeded" column290 with the live OneDrive path.291292**Folder-per-customer is the rule** — one customer-named folder per demo so runs293don't collide and the operator can find/clean up a demo's assets in one place.294295### Phase 4 — Optional Teams chats & meeting recording296297**Teams chat seeding (optional, on explicit request).** Only post live if the298operator says to (e.g., "post the chats too"). Otherwise the chat **scripts** in299the Delivery Plan are the deliverable. Before posting, state these constraints in300one line so expectations are right:301- Messages are timestamped **now** — Graph cannot backdate them. Recency prompts302 work; "last Tuesday" framing in the script won't match the real timestamp.303- A signed-in account posts **only as itself**. A multi-persona chat looks real304 only if each persona's tenant account posts its own lines; from one account,305 all lines appear from that one user. Tell the operator which is happening.306- Use `PostMessage`/`PostChannelMessage` with resolved recipients. Do not307 fabricate chat IDs.308309**Meeting recording — generate a transcript, not a recording.** There is **no310API to create or upload a Teams meeting recording or transcript** — they exist311only after a real recorded meeting. So:312- Deliver the **meeting transcript/script** from Phase 2 (item 7) as the313 seedable artifact (a text/VTT file Copilot-grounded prompts can draw on if the314 operator seeds it as a file).315- If a genuine recording is required, instruct the operator to start a Teams316 meeting with the persona accounts, **turn on recording**, read the transcript317 aloud, and stop — Teams then produces a real recording + transcript tied to the318 event. This is the only path to an actual recording; never imply one was319 generated programmatically.320321### Phase 5 — Deliver3223231. Run the **delivery gate**: list the output directory and verify that every324 file named in the manifest exists on disk, and that no script or agenda325 references a file that wasn't generated. If Phase 3 ran, also verify the326 OneDrive folder contains the seeded files.3272. Give the operator a short summary: scenarios built, files produced (by name),328 where the Delivery Plan lives, and — if seeded — the OneDrive folder link and329 what was posted to Teams. Note that content is fictional dummy data, that330 email/calendar/recordings are drafted for manual loading, and the seeding331 timing window (24–72h before demo).332333## Guardrails334335- **Scoped live seeding only.** The only live writes this skill performs are336 (a) creating a OneDrive folder and uploading the generated files (Phase 3), and337 (b) optionally posting Teams chat messages (Phase 4) — both only when the338 operator asks, and only with fictional content. **Never auto-send email, never339 auto-book calendar events, and never write to a production tenant.** If asked340 to do those, output the script and explain the operator loads it.341- **Confirm destination before writing.** Resolve and restate the target342 OneDrive/account in one line before creating folders or uploading. Never guess343 a drive or post to an unconfirmed chat/channel.344- **No backdating, no fake recordings.** Do not claim messages were backdated or345 that a meeting recording/transcript was seeded — neither is possible.346- **All data is fictional.** Use invented names, companies, numbers, and dates.347 Never use the operator's real colleagues, real customer PII, or real internal348 figures. Use the demo tenant domain (or `{tenant-domain}` placeholder) for all349 fictional email addresses — never real-looking public domains.350- **No fabricated real facts.** Dummy data is fine; do not assert real-world351 statistics, real people, or real quotes as fact.352- **Confirmation gate on scenarios.** Always get operator approval of the353 scenario list before building files (Phase 1 → Phase 2), unless pre-approved354 per the Phase 1 exception.355- **Numeric accuracy.** Compute any embedded totals/percentages with a code tool.356- **Internal consistency.** One persona roster, one filename convention, and357 every live prompt traceable to seeded content. Consistency is what makes the358 demo feel real.359- **Folder-per-customer.** Seed each demo into its own customer-named OneDrive360 folder so runs don't collide.361- **Reusable across runs.** Keep customer/LOB/persona/tenant-domain/seeding362 target as variables so the same flow works for any segment and LOB.