Skip to content

Results Framework

Overview

The Results Framework is the logical backbone of ImpactMEL. It models the causal chain from field activities to long-term development impact using a tree of Result Nodes.

Impact
  └── Outcome 1
       ├── Output 1.1
       │    └── Activity A  (linked to Output)
       └── Output 1.2
            └── Activity B

Every indicator and activity can be linked to a node in this tree, giving you a complete picture of what is contributing to each result.


Result Node Levels

LevelDescriptionExample
ImpactLong-term change in people's lives"Improved water security in rural Rwanda"
OutcomeMedium-term behavioral or institutional change"Communities adopt safe hygiene practices"
OutputDirect deliverables from project activities"500 households have access to clean water points"

Activities are linked to Output nodes — they describe the work done to produce an output.


Data Structure

ts
ResultNode {
  id: uuid
  orgId: uuid
  programId: uuid
  parentId: uuid | null   // null for Impact nodes (roots)
  level: 'impact' | 'outcome' | 'output'
  title: string
  description: text
  orderIndex: number      // sort order within parent
}

Building a Results Framework

Via the UI

  1. Navigate to Results Framework in the sidebar
  2. Click Add Impact to create a root node
  3. Click the + button on any node to add child outcomes/outputs
  4. Drag nodes to reorder them
  5. Click a node to edit its title and description

Via the API

http
POST /orgs/:orgId/programs/:programId/result-nodes
{
  "level": "outcome",
  "parentId": "impact-node-uuid",
  "title": "Communities adopt safe hygiene practices",
  "description": "..."
}

Linking Indicators to Result Nodes

When creating or editing an indicator, set resultNodeId to pin it to an Output or Outcome:

http
PATCH /orgs/:orgId/indicators/:id
{ "resultNodeId": "output-node-uuid" }

In reports, indicators are grouped by their result node, making it clear which outputs are on track.


Linking Activities to Result Nodes

Activities are linked to Output nodes via outputId:

http
POST /orgs/:orgId/projects/:projectId/activities
{
  "title": "Community training session",
  "outputId": "output-node-uuid",
  ...
}

API Reference

MethodPathDescription
GET/orgs/:orgId/programs/:programId/result-nodesList all nodes (tree)
POST/orgs/:orgId/programs/:programId/result-nodesCreate a node
PATCH/orgs/:orgId/result-nodes/:idUpdate node
DELETE/orgs/:orgId/result-nodes/:idDelete node (cascades children)
PATCH/orgs/:orgId/result-nodes/reorderBulk reorder nodes

ImpactMEL — Enterprise M&E Platform