Skip to content

docooley/stakeholder-update-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stakeholder Update Agent

A profile-driven Declarative Agent for M365 Copilot that automates recurring stakeholder updates by aggregating data from multiple sources — Teams meetings, Slack discussions, Azure DevOps work items, and Loop notes — then outputting a voice-calibrated, structured update to a Loop page.

Built for the monthly Foundation Stakeholder Meeting, but designed to be adaptable to any update purpose, cadence, or audience via swappable profiles, templates, and voice profiles.

Architecture

User (M365 Copilot Chat)
  │
  ▼
Declarative Agent
  │
  ├─ instruction.txt        → Profile-aware workflow, voice calibration, few-shot examples
  │
  ├─ profiles/              → JSON configs per meeting type (cadence, audience, data sources)
  │   ├─ foundation-stakeholder.json
  │   ├─ weekly-team-sync.json
  │   └─ example-profile.json
  │
  ├─ templates/             → Output format templates per profile
  │   ├─ foundation-stakeholder.txt
  │   ├─ weekly-team-sync.txt
  │   └─ example-template.txt
  │
  ├─ voice-profiles/        → Writing style guides (tone, structure, language)
  │   ├─ default.txt
  │   └─ example-voice.txt
  │
  └─ plugins/               → MCP data source connectors
      ├─ workiqPlugin.json   → Teams meetings, messages, documents (via WorkIQ)
      ├─ adoFlowPlugin.json  → Work items, sprints, boards (via Azure DevOps)
      ├─ loopPagesPlugin.json→ Raw notes input + formatted output (via Loop)
      └─ slackPlugin.json    → Channel discussions, announcements (via Slack)

How It Works

  1. You trigger the agent from M365 Copilot Chat: "Generate my monthly update"
  2. Agent loads profile — determines lookback period, data sources, template, and voice
  3. Agent reads raw notes from your Loop page (primary grounding context)
  4. Agent gathers meeting context via WorkIQ (Teams meetings, messages, docs)
  5. Agent pulls work item status via ADO-Flow (Azure DevOps)
  6. Agent searches Slack for relevant discussions, decisions, and announcements
  7. Agent synthesizes everything using your template and voice profile
  8. Agent writes the formatted update to your output Loop page

Prerequisites

Quick Start

1. Clone and Open

git clone https://github.com/docooley/stakeholder-update-agent.git
cd stakeholder-update-agent
code .

2. Configure Environment

cp env/.env.dev.example env/.env.dev

Edit env/.env.dev and fill in your MCP server URLs and Loop page IDs. See the setup guides for each data source.

3. Customize Your Profile

Edit or copy a profile in appPackage/profiles/:

  • Set your ADO organization, project, and team
  • Set your Slack channels and search queries
  • Set your Loop page IDs
  • Choose your template and voice profile

4. Provision

Open in VS Code → Teams Toolkit sidebar → Provision (select dev environment).

Note: Some organizations block CLI-based auth. See Provisioning Guide for VS Code-based provisioning.

5. Test

Open M365 Copilot Chat → find "Stakeholder Update" agent → "Generate my monthly update"

Customization

Create Your Own Profile

  1. Copy appPackage/profiles/example-profile.json
  2. Rename it (e.g., quarterly-okr-review.json)
  3. Set the id, name, cadence, audience, and lookbackDays
  4. Configure dataSources — choose which sources to pull from
  5. Point to your template and voice profile
  6. Fill in sourceConfig with your Slack channels, ADO project, Loop pages, etc.

Create Your Own Template

  1. Copy appPackage/templates/example-template.txt
  2. Define the sections your audience expects
  3. Use placeholder tokens ({Month}, {Workstream Name}, etc.)
  4. Reference it in your profile's template field

Calibrate Your Voice

  1. Copy appPackage/voice-profiles/example-voice.txt
  2. Describe your tone, structure patterns, and language preferences
  3. Paste 2-3 excerpts from your own past updates as few-shot examples
  4. Reference it in your profile's voiceProfile field

Project Structure

Path Description
appPackage/declarativeAgent.json Agent config — name, instructions, plugin references
appPackage/instruction.txt System prompt — profile-aware workflow, voice, few-shot examples
appPackage/manifest.json Teams app manifest
appPackage/profiles/ Profile configs (one per meeting type)
appPackage/templates/ Output format templates
appPackage/voice-profiles/ Writing style guides
appPackage/plugins/ MCP data source plugin manifests
docs/ Setup guides for MCP servers and provisioning
env/.env.dev.example Template environment file
env/.env.dev Your environment variables (gitignored secrets in .env.dev.user)
teamsapp.yml Teams Toolkit lifecycle config

Data Sources

Plugin Source What It Provides
WorkIQ Teams meetings, messages, docs Meeting decisions, action items, shared documents
ADO-Flow Azure DevOps Work item status, sprint progress, blockers
Loop Pages Microsoft Loop Raw notes (input) + formatted update (output)
Slack Slack workspace Channel discussions, announcements, decisions

Each data source is optional — configure only the ones relevant to your workflow.

Contributing

See CONTRIBUTING.md for guidelines on adding profiles, templates, voice profiles, plugins, and documentation.

License

MIT

References

About

Profile-driven M365 Copilot Declarative Agent that generates structured stakeholder updates by aggregating Teams meetings, Slack, ADO work items, and Loop notes.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors