Map an intervention.
Quantify the outcome.

QTOC is a diagram editor for theories of change. Connect populations, activities, gates, and decisions, attach probabilities and distributions, and let the canvas compute who actually reaches the end of the funnel.

malaria-itn.qtoclive preview · read-only
5 nodes·4 edges
  • 8node types
  • 10nested sub-diagrams
  • .jsonround-trip export
  • p(x)point or distribution
The vocabulary

Nine pieces. Most diagrams need three.

Every QTOC diagram is built from the same primitives. Drop them on the canvas, draw an edge, and you have a model.

Population
pop: 120k
Population
Seed the funnel with a count of people, households, or anything you can enumerate.
Budget
pop: $1.2M
Resource
Track money, supplies, or capacity flowing alongside your population.
Distribute ITN
filter
Activity
An action taken on the flow — distribute, train, screen, transform.
Adopts behavior
p = 0.62add
Probability
A point estimate or distribution that thins the population at this step.
Eligible?
Decision
Branch the flow on a question — eligibility, response, exposure.
AND gate
Require every input path to reach this node before continuing.
OR gate
Combine inputs additively — either path counts.
NOT gate
Invert a probability — model dropout, failure, or non-response.
Outcome
57,120
Outcome
The terminal node. The number you ultimately care about.
The loop

Sketch · attach · run · iterate

Designed for the way real teams build theories of change — messy first, formal second, defensible last.

  1. 01
    Sketch the flow
    Drag nodes onto an infinite canvas. Snap edges between them. Rename, recolor, flip handles when geometry gets in the way.
  2. 02
    Attach the math
    Each block carries a probability — a single point, a normal, a beta, a triangular. Each activity takes a function: add, multiply, filter, fork.
  3. 03
    Run the model
    QTOC walks the graph and tells you how many units reach every node. Hover any node for its computed population, marginal, and confidence band.
  4. 04
    Iterate, then export
    Tweak a probability, watch the outcome shift in place. Save a project, fork a template, export the whole graph as JSON when it's time to hand off.
Templates

Start from a worked example

Every project ships with a library of prebuilt diagrams. Fork one, swap the numbers, keep the shape.

Decision branching with gates
AND and OR gates combining a decision branch with multiple inputs.
Open template
  • DefensibleEvery claim about impact is grounded in an editable graph.
  • ComposableNest sub-diagrams to break monolithic flows into named pieces.
  • HonestDistributions, not single numbers, when uncertainty matters.
  • PortableJSON in, JSON out. Diff in git, hand off to engineering.

Build your first theory of change in an afternoon.

Open the demo, fork a template, and replace the numbers. No install, no SDK, no spreadsheet duct tape.