Stakeholder Engagement Plan
Generate a Project+ SEP .docx. Draft-first. Only interview if the user explicitly asks.
Hard rules
- Never invent stakeholders, positions, or concerns. Unknown →
[TBD — reason]. Do not paraphrase "skeptical about the budget" into "concerns about budget overrun" — those are different claims. If the user said "skeptical," write "skeptical." Fabricated concerns become fabricated comms pitched at problems the stakeholder never raised.
- Reporting-line managers are NOT stakeholders. "Noor reports to Elena" → Elena does NOT get a row unless the user separately described her as someone the project needs to engage. The sponsor IS a stakeholder by definition. Check every row before running the script.
- Do NOT invent stakeholders from project description keywords. "Finance dashboard project" does NOT create a "Finance Team" stakeholder. "Auth service" does NOT create a "Security Team". Only add rows for people/groups the user explicitly named as needing to be informed, influenced, or consulted.
- Engagement levels are a controlled vocabulary. Use only
Unaware | Resistant | Neutral | Supportive | Leading. No "Skeptical" or "Enthusiastic". Each stakeholder gets a current and desired level.
- Group "the X team" as one row rather than inventing individuals. "Security team approves" → one row "Security Team", not 3 invented engineers.
- Quadrants:
Manage Closely (hi power/hi interest), Keep Satisfied (hi/lo), Keep Informed (lo/hi), Monitor (lo/lo). Must match stated power + interest — don't contradict.
Run it
python3 scripts/create_sep.py --output "<dir>/<ProjectName>_Stakeholder_Engagement_Plan_v1.docx" <<'JSON'
{ ...schema... }
JSON
Script handles formatting, Draft Gaps callout, power/interest grid, engagement matrix, comms plan, and open_questions.md when TBDs ≥ 5.
JSON schema
{
"header": {
"project_name": "string",
"project_manager": "string or [TBD]",
"sponsor": "string or [TBD]",
"date": "YYYY-MM-DD",
"version": "v1"
},
"stakeholders": [
{
"name": "string or [TBD]",
"role_or_title": "string or [TBD]",
"organization": "string or [TBD]",
"interest": "what they care about (1–2 sentences) or [TBD]",
"power": "High | Medium | Low | [TBD]",
"interest_level": "High | Medium | Low | [TBD]",
"quadrant": "Manage Closely | Keep Satisfied | Keep Informed | Monitor | [TBD]",
"current_engagement": "Unaware | Resistant | Neutral | Supportive | Leading | [TBD]",
"desired_engagement": "Unaware | Resistant | Neutral | Supportive | Leading | [TBD]",
"concerns_or_risks": "string or [TBD]",
"communication": {
"frequency": "string or [TBD]",
"channel": "string or [TBD]",
"message_type": "string or [TBD]",
"owner": "string or [TBD]"
}
}
]
}
Stakeholders may be empty. Any string may be [TBD — reason]. Keep prose fields ≤ 2 sentences.
Before running the script, for every specific rating, concern, or comms detail ask: can I point to a verbatim phrase in the user's message? If not, replace with [TBD].
1---2name: stakeholder-engagement-plan3description: Generate a Project+ style Stakeholder Engagement Plan as a .docx, with a stakeholder register, power/interest grid, current-vs-desired engagement levels, and a communication plan per stakeholder. Use whenever a user needs to plan how to manage, communicate with, or influence project stakeholders — triggers include "stakeholder engagement plan", "stakeholder register", "stakeholder analysis", "power/interest grid", "communication plan", "stakeholder management", "SEP". Enforces Project+ engagement-level vocabulary and prevents fabrication of stakeholders, positions, or concerns.4---56# Stakeholder Engagement Plan78Generate a Project+ SEP .docx. Draft-first. Only interview if the user explicitly asks.910## Hard rules11121. **Never invent stakeholders, positions, or concerns.** Unknown → `[TBD — reason]`. Do not paraphrase *"skeptical about the budget"* into *"concerns about budget overrun"* — those are different claims. If the user said "skeptical," write "skeptical." Fabricated concerns become fabricated comms pitched at problems the stakeholder never raised.132. **Reporting-line managers are NOT stakeholders.** *"Noor reports to Elena"* → Elena does NOT get a row unless the user separately described her as someone the project needs to engage. The sponsor IS a stakeholder by definition. Check every row before running the script.143. **Do NOT invent stakeholders from project description keywords.** *"Finance dashboard project"* does NOT create a "Finance Team" stakeholder. *"Auth service"* does NOT create a "Security Team". Only add rows for people/groups the user explicitly named as needing to be informed, influenced, or consulted.154. **Engagement levels are a controlled vocabulary.** Use only `Unaware | Resistant | Neutral | Supportive | Leading`. No *"Skeptical"* or *"Enthusiastic"*. Each stakeholder gets a `current` and `desired` level.165. **Group "the X team"** as one row rather than inventing individuals. *"Security team approves"* → one row "Security Team", not 3 invented engineers.176. **Quadrants:** `Manage Closely` (hi power/hi interest), `Keep Satisfied` (hi/lo), `Keep Informed` (lo/hi), `Monitor` (lo/lo). Must match stated power + interest — don't contradict.1819## Run it2021```bash22python3 scripts/create_sep.py --output "<dir>/<ProjectName>_Stakeholder_Engagement_Plan_v1.docx" <<'JSON'23{ ...schema... }24JSON25```2627Script handles formatting, Draft Gaps callout, power/interest grid, engagement matrix, comms plan, and `open_questions.md` when TBDs ≥ 5.2829## JSON schema3031```json32{33 "header": {34 "project_name": "string",35 "project_manager": "string or [TBD]",36 "sponsor": "string or [TBD]",37 "date": "YYYY-MM-DD",38 "version": "v1"39 },40 "stakeholders": [41 {42 "name": "string or [TBD]",43 "role_or_title": "string or [TBD]",44 "organization": "string or [TBD]",45 "interest": "what they care about (1–2 sentences) or [TBD]",46 "power": "High | Medium | Low | [TBD]",47 "interest_level": "High | Medium | Low | [TBD]",48 "quadrant": "Manage Closely | Keep Satisfied | Keep Informed | Monitor | [TBD]",49 "current_engagement": "Unaware | Resistant | Neutral | Supportive | Leading | [TBD]",50 "desired_engagement": "Unaware | Resistant | Neutral | Supportive | Leading | [TBD]",51 "concerns_or_risks": "string or [TBD]",52 "communication": {53 "frequency": "string or [TBD]",54 "channel": "string or [TBD]",55 "message_type": "string or [TBD]",56 "owner": "string or [TBD]"57 }58 }59 ]60}61```6263Stakeholders may be empty. Any string may be `[TBD — reason]`. Keep prose fields ≤ 2 sentences.6465Before running the script, for every specific rating, concern, or comms detail ask: *can I point to a verbatim phrase in the user's message?* If not, replace with `[TBD]`.