Skip to content

Executive View

The Executive View provides a high-level summary optimized for executive stakeholders and decision-makers.

Purpose

The Exec View distills the PRD into:

  • Quick go/no-go signals
  • Investment decision support
  • Risk awareness
  • Resource planning

Structure

type ExecView struct {
    Header      ExecHeader    `json:"header"`
    Decision    string        `json:"decision"`     // approve, revise, reject
    Confidence  string        `json:"confidence"`   // High, Medium, Low
    Summary     string        `json:"summary"`
    KeyActions  []ExecAction  `json:"key_actions"`
    Strengths   []string      `json:"strengths"`
    Concerns    []string      `json:"concerns"`
    Risks       []ExecRisk    `json:"risks"`
    ScoreSummary string       `json:"score_summary,omitempty"`
}

Generate Executive View

import "github.com/grokify/structured-plan/prd"

// Score the PRD first
scores := prd.Score(doc)

// Generate exec view with scores
execView := prd.GenerateExecView(doc, scores)

fmt.Printf("Decision: %s\n", execView.Decision)
fmt.Printf("Confidence: %s\n", execView.Confidence)

Render as Markdown

markdown := prd.RenderExecMarkdown(execView)
fmt.Println(markdown)

Example Output

# Executive Summary: Customer Portal Redesign

**Status:** Draft | **Decision:** REVISE | **Confidence:** Medium

---

## Recommendation

**REVISE** - The PRD shows promise but needs additional detail in key areas.

## Summary

Customer Portal Redesign aims to reduce bounce rate from 40% to under 20%
through a modern, responsive redesign.

## Strengths

- Clear problem statement with data
- Well-defined success metrics
- Strong persona research

## Concerns

- Limited technical feasibility analysis
- No competitive analysis included
- Risk mitigation plans need detail

## Key Actions Required

1. Add technical architecture section
2. Include competitive analysis
3. Detail risk mitigation strategies

## Risk Summary

| Risk | Impact | Status |
|------|--------|--------|
| Migration complexity | High | Identified |
| Resource constraints | Medium | Mitigating |

## Score Summary

Overall: 68% | Problem: 85% | Users: 70% | Solution: 55%

Decision Logic

The decision is derived from scoring:

Score Range Decision Meaning
≥80% APPROVE Ready for development
60-79% REVISE Needs improvements
<60% REJECT Significant rework needed

Blockers Override Score

If critical blockers exist, decision becomes REJECT regardless of score.

Confidence Levels

func determineConfidence(score float64, blockers int) string {
    if blockers > 0 {
        return "Low"
    }
    if score >= 0.8 {
        return "High"
    }
    if score >= 0.6 {
        return "Medium"
    }
    return "Low"
}

ExecView Fields

ExecHeader

type ExecHeader struct {
    Title       string `json:"title"`
    Status      string `json:"status"`
    Author      string `json:"author"`
    LastUpdated string `json:"last_updated"`
}

ExecAction

type ExecAction struct {
    Action   string `json:"action"`
    Owner    string `json:"owner,omitempty"`
    Priority string `json:"priority,omitempty"`
}

ExecRisk

type ExecRisk struct {
    Description string `json:"description"`
    Impact      string `json:"impact"`
    Status      string `json:"status"`
}

Without Scores

If you don't have scores, the view still works:

// Generate without scores (nil)
execView := prd.GenerateExecView(doc, nil)

// Decision will be based on content analysis only
fmt.Printf("Decision: %s\n", execView.Decision)

Use Cases

Board Presentation

execView := prd.GenerateExecView(doc, scores)
markdown := prd.RenderExecMarkdown(execView)

// Include in presentation
slides.AddSlide("PRD Review", markdown)

Automated Review

scores := prd.Score(doc)
execView := prd.GenerateExecView(doc, scores)

if execView.Decision == "REJECT" {
    notifyAuthors(doc.Metadata.Authors, execView.Concerns)
}

Next Steps