Building Foundation Lesson 1.4: Theory of Change

Quality Assessment Checklist

Check your theory against quality indicators and common weaknesses before you finalize it.

graph TB
    %% START NODE
    START(["📋 <strong>THEORY OF CHANGE<br/>QUALITY ASSESSMENT</strong><br/><br/>Assess Your Theory Across<br/>Four Critical Dimensions"])

    %% FOUR QUALITY DIMENSIONS
    subgraph DIM1 ["🔗 DIMENSION 1: LOGICAL COHERENCE"]
        direction TB
        LC1["<strong>Flow Logic</strong><br/>Elements follow logically:<br/>inputs → activities → outputs<br/>→ outcomes → impact"]
        LC2["<strong>Realistic Outcomes</strong><br/>Outcomes achievable given<br/>your activities and outputs"]
        LC3["<strong>Impact Connection</strong><br/>Impact statement connects<br/>meaningfully to outcomes"]
        LC4["<strong>Explicit Assumptions</strong><br/>All critical beliefs stated<br/>clearly and testably"]
        LC1 --> LC2 --> LC3 --> LC4
    end

    subgraph DIM2 ["📚 DIMENSION 2: EVIDENCE GROUNDING"]
        direction TB
        EG1["<strong>Problem Tree Foundation</strong><br/>Theory builds directly on<br/>refined Problem Tree analysis"]
        EG2["<strong>Community Insights</strong><br/>Stakeholder engagement<br/>findings reflected throughout"]
        EG3["<strong>Evidence-Based Activities</strong><br/>Activities informed by what<br/>works in similar contexts"]
        EG4["<strong>Validated Assumptions</strong><br/>Assumptions based on research<br/>not wishful thinking"]
        EG1 --> EG2 --> EG3 --> EG4
    end

    subgraph DIM3 ["👥 DIMENSION 3: COMMUNITY ALIGNMENT"]
        direction TB
        CA1["<strong>Community Priorities</strong><br/>Impact and outcomes reflect<br/>what stakeholders emphasized"]
        CA2["<strong>Cultural Appropriateness</strong><br/>Activities designed to work<br/>within local values"]
        CA3["<strong>Asset Recognition</strong><br/>Community strengths and<br/>resources acknowledged"]
        CA4["<strong>Local Context</strong><br/>Change pathway respects<br/>social dynamics"]
        CA1 --> CA2 --> CA3 --> CA4
    end

    subgraph DIM4 ["⚙️ DIMENSION 4: IMPLEMENTATION REALISM"]
        direction TB
        IR1["<strong>Realistic Inputs</strong><br/>Resources required match<br/>capacity and fundraising"]
        IR2["<strong>Specific Activities</strong><br/>Activities detailed enough<br/>to guide implementation"]
        IR3["<strong>Measurable Outputs</strong><br/>Outputs achievable within<br/>proposed timeline"]
        IR4["<strong>Focused Scope</strong><br/>Ambitious but achievable<br/>given constraints"]
        IR1 --> IR2 --> IR3 --> IR4
    end

    %% END NODE
    READY(["✅ <strong>QUALITY THEORY<br/>OF CHANGE</strong><br/><br/>All 16 indicators met<br/>Ready for community validation"])

    %% CONNECTIONS
    START --> DIM1
    START --> DIM2
    START --> DIM3
    START --> DIM4
    DIM1 --> READY
    DIM2 --> READY
    DIM3 --> READY
    DIM4 --> READY

    %% FESTA COLORS - 4 distinct light tints
    style START fill:#6B7280,stroke:#4B5563,stroke-width:3px,color:#fff

    style DIM1 fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px,color:#2A2A2A
    style LC1 fill:#FEF9C3,stroke:#F59E0B,stroke-width:1px,color:#2A2A2A
    style LC2 fill:#FEF9C3,stroke:#F59E0B,stroke-width:1px,color:#2A2A2A
    style LC3 fill:#FEF9C3,stroke:#F59E0B,stroke-width:1px,color:#2A2A2A
    style LC4 fill:#FEF9C3,stroke:#F59E0B,stroke-width:1px,color:#2A2A2A

    style DIM2 fill:#FED7AA,stroke:#F97316,stroke-width:2px,color:#2A2A2A
    style EG1 fill:#FFEDD5,stroke:#F97316,stroke-width:1px,color:#2A2A2A
    style EG2 fill:#FFEDD5,stroke:#F97316,stroke-width:1px,color:#2A2A2A
    style EG3 fill:#FFEDD5,stroke:#F97316,stroke-width:1px,color:#2A2A2A
    style EG4 fill:#FFEDD5,stroke:#F97316,stroke-width:1px,color:#2A2A2A

    style DIM3 fill:#D9F99D,stroke:#72B043,stroke-width:2px,color:#2A2A2A
    style CA1 fill:#ECFCCB,stroke:#72B043,stroke-width:1px,color:#2A2A2A
    style CA2 fill:#ECFCCB,stroke:#72B043,stroke-width:1px,color:#2A2A2A
    style CA3 fill:#ECFCCB,stroke:#72B043,stroke-width:1px,color:#2A2A2A
    style CA4 fill:#ECFCCB,stroke:#72B043,stroke-width:1px,color:#2A2A2A

    style DIM4 fill:#BBF7D0,stroke:#10B981,stroke-width:2px,color:#2A2A2A
    style IR1 fill:#D1FAE5,stroke:#10B981,stroke-width:1px,color:#2A2A2A
    style IR2 fill:#D1FAE5,stroke:#10B981,stroke-width:1px,color:#2A2A2A
    style IR3 fill:#D1FAE5,stroke:#10B981,stroke-width:1px,color:#2A2A2A
    style IR4 fill:#D1FAE5,stroke:#10B981,stroke-width:1px,color:#2A2A2A

    style READY fill:#007F4E,stroke:#00b369,stroke-width:4px,color:#fff

Quality Dimension 1: Logical Coherence

Test whether each element follows logically from the last:

Quality Dimension 2: Evidence Grounding

Verify your theory builds on Lessons 1.1-1.3:

Quality Dimension 3: Community Alignment

Ensure your theory reflects community priorities:

Quality Dimension 4: Implementation Realism

Check your scope is achievable:

Common Theory of Change Weaknesses

Watch for these red flags:

graph TB
    %% START NODE
    DETECT(["🚩 <strong>THEORY OF CHANGE<br/>WEAKNESS DETECTION</strong><br/><br/>Watch for These<br/>Common Red Flags"])

    %% FOUR WEAKNESSES
    subgraph WEAK1 ["❌ WEAKNESS 1: WEAK LOGICAL CONNECTIONS"]
        direction TB
        WL_WARN["<strong>⚠️ Warning Signs</strong><br/><br/>• Activities don't clearly<br/>connect to intended outputs<br/><br/>• Outputs don't logically<br/>lead to stated outcomes<br/><br/>• Assumptions are vague<br/>or untestable"]
        WL_FIX["<strong>🔧 How to Fix</strong><br/><br/>Test each connection:<br/>'If X, will it lead to Y?'<br/><br/>Add intermediate steps<br/>where logic is weak"]
        WL_WARN --> WL_FIX
    end

    subgraph WEAK2 ["❌ WEAKNESS 2: POOR EVIDENCE FOUNDATION"]
        direction TB
        PE_WARN["<strong>⚠️ Warning Signs</strong><br/><br/>• Theory contradicts your<br/>Problem Tree analysis<br/><br/>• Ignores stakeholder<br/>insights about what works<br/><br/>• Assumptions based on<br/>hopes not evidence"]
        PE_FIX["<strong>🔧 How to Fix</strong><br/><br/>Return to foundation<br/>materials from Lessons 1.1-1.3<br/><br/>Document evidence<br/>connections explicitly"]
        PE_WARN --> PE_FIX
    end

    subgraph WEAK3 ["❌ WEAKNESS 3: IMPLEMENTATION UNREALISM"]
        direction TB
        IU_WARN["<strong>⚠️ Warning Signs</strong><br/><br/>• Scope too ambitious<br/>for available resources<br/><br/>• Activities too vague<br/>to guide implementation<br/><br/>• Timeline unrealistic<br/>for change complexity"]
        IU_FIX["<strong>🔧 How to Fix</strong><br/><br/>Narrow scope to what<br/>you can do well<br/><br/>Make activities specific<br/>with clear deliverables"]
        IU_WARN --> IU_FIX
    end

    subgraph WEAK4 ["❌ WEAKNESS 4: COMMUNITY DISCONNECTION"]
        direction TB
        CD_WARN["<strong>⚠️ Warning Signs</strong><br/><br/>• External priorities<br/>dominate over community<br/><br/>• Activities culturally<br/>inappropriate for context<br/><br/>• Community assets and<br/>strengths ignored"]
        CD_FIX["<strong>🔧 How to Fix</strong><br/><br/>Conduct community<br/>validation sessions<br/><br/>Adjust theory based<br/>on stakeholder feedback"]
        CD_WARN --> CD_FIX
    end

    %% END NODE
    CLEAR(["✅ <strong>WEAKNESSES<br/>ADDRESSED</strong><br/><br/>Theory strengthened<br/>Ready for stakeholder review"])

    %% CONNECTIONS
    DETECT --> WEAK1
    DETECT --> WEAK2
    DETECT --> WEAK3
    DETECT --> WEAK4
    WEAK1 --> CLEAR
    WEAK2 --> CLEAR
    WEAK3 --> CLEAR
    WEAK4 --> CLEAR

    %% FESTA COLORS - Red/Orange for weaknesses
    style DETECT fill:#6B7280,stroke:#4B5563,stroke-width:3px,color:#fff

    style WEAK1 fill:#FEE2E2,stroke:#EF4444,stroke-width:2px,color:#2A2A2A
    style WL_WARN fill:#FEF2F2,stroke:#EF4444,stroke-width:1px,color:#2A2A2A
    style WL_FIX fill:#FED7AA,stroke:#F97316,stroke-width:1px,color:#2A2A2A

    style WEAK2 fill:#FEE2E2,stroke:#EF4444,stroke-width:2px,color:#2A2A2A
    style PE_WARN fill:#FEF2F2,stroke:#EF4444,stroke-width:1px,color:#2A2A2A
    style PE_FIX fill:#FED7AA,stroke:#F97316,stroke-width:1px,color:#2A2A2A

    style WEAK3 fill:#FEE2E2,stroke:#EF4444,stroke-width:2px,color:#2A2A2A
    style IU_WARN fill:#FEF2F2,stroke:#EF4444,stroke-width:1px,color:#2A2A2A
    style IU_FIX fill:#FED7AA,stroke:#F97316,stroke-width:1px,color:#2A2A2A

    style WEAK4 fill:#FEE2E2,stroke:#EF4444,stroke-width:2px,color:#2A2A2A
    style CD_WARN fill:#FEF2F2,stroke:#EF4444,stroke-width:1px,color:#2A2A2A
    style CD_FIX fill:#FED7AA,stroke:#F97316,stroke-width:1px,color:#2A2A2A

    style CLEAR fill:#007F4E,stroke:#00b369,stroke-width:4px,color:#fff

❌ Weakness 1: Weak Logical Connections

Warning Signs:

  • Activities don't clearly connect to intended outputs
  • Assumptions are vague or untestable

How to Fix:

Test each connection: "If we achieve X, will it lead to Y?" Add intermediate steps where logic is weak.

❌ Weakness 2: Poor Evidence Foundation

Warning Signs:

  • Theory contradicts your problem analysis
  • Assumptions are based on hope, not evidence

How to Fix:

Return to your foundation materials. Document every evidence connection explicitly.

❌ Weakness 3: Implementation Unrealism

Warning Signs:

  • Scope is too ambitious for available resources
  • Timeline is unrealistic for change complexity

How to Fix:

Narrow scope to what you can implement well, and budget on real fundraising capacity.

❌ Weakness 4: Community Disconnection

Warning Signs:

  • Theory reflects external priorities, not community vision
  • Existing community assets are ignored

How to Fix:

Run a community validation session, and adjust the theory based on feedback.

Next Steps

Finish your assessment:

Lesson 1.4: Theory of Change 82%
Step 9 of 11 · Quality Checklist