Sopact is a technology based social enterprise committed to helping organizations measure impact by directly involving their stakeholders.
Copyright 2015-2026 © sopact. All rights reserved.
a cited impact report that is a query, not a month of copy-paste — the cohort rolled up to your theory of change, every outcome reported against a pre-committed target, every number paired with a verbatim participant quote, every claim graded evidenc
For: nonprofit program teams who owe funders and grantmakers an impact report — and dread the month it takes to produce one.
Why: the funder report is usually a year-end scramble — re-export every system, reconcile mismatched IDs for days, copy numbers into a deck that is stale on arrival, and ship claims nobody can trace to a source.
Outcome: a cited impact report that is a query, not a month of copy-paste — the cohort rolled up to your theory of change, every outcome reported against a pre-committed target, every number paired with a verbatim participant quote, every claim graded evidenced / unproven / missing.
This is Chapter 10a of the Case Intelligence series — the capstone, in its nonprofit form. In Chapter 9 you scored 108 candidate–requisition pairs against one rubric and the funnel narrowed to 29 placements. Every chapter before that was quietly stocking the shelves for this one: intake captured a baseline, midpoint tracked it, exit closed the pair, mentor notes explained the drop-offs, the SROI chapter priced the change, and matching produced the placements. This chapter is the payoff — the moment all of it becomes the report your funder asked for.
The running example finishes where it started: RiseWorks Foundation / Pathways 2027 (Train → Match → Place → Earn), funded by grants and donations. The funnel the report must tell honestly: 80 enrolled → 62 completed → 58 credentialed → 29 placed, with confidence moving 4.3 → 7.1 → 7.4 on the same scale, median wage moving $9.96 → $25.11, cost-per-outcome around $20,076, and SROI around 2.44:1.
As in every chapter, each step is tagged [DIY] or [SENSE]. Structuring the report and committing to targets is thinking work — do it in any chat window, today. Rolling the cohort up with a verbatim quote beside every number, and grading each claim against the data, is what the product does over the stores — a standalone prompt cannot quote transcripts it never received, and it cannot grade a claim against waves it cannot see.
Here is the ritual most teams know by heart. At grant close, someone exports the case-management system for the intake data. Then the survey tool, for the mid and exit numbers. Then the spreadsheet where the follow-up wages were pasted. Then the mentor’s notes, which nobody has read since March. Each export carries a different ID scheme, so reconciling them takes days. The numbers that survive get copied into a deck — and the moment they are copied, they are stale. Worst of all, the claims ship uncited: “confidence rose” with no participant’s words behind it, “82% employed” with no way to trace which participants, in which wave, measured how.
That ritual is not a staffing problem. It is the collect-then-clean architecture doing exactly what it was built to do. Traditional case management — the CRM-based tracking suites and grantee-management platforms — stores raw data and defers analysis to the end, so the end is always a scramble, and the report is always a snapshot of a moment that has already passed.
The Case Intelligence answer inverts the order, the same way every chapter in this series has. Because an Intelligent Cell scored each field the moment it arrived, and because every score and every open-text quote sits on one persistent participant ID joining eight stores by reference keys, the report does not get assembled at cohort close. It gets queried. You ask the Sopact Assistant to roll the cohort up to your theory of change, and it returns the funnel, each outcome against its target, a verbatim quote beside each number, and a grade on every claim. The report was being written the whole time — cohort close is retrieval.
A funder does not ask how many workshops you ran. They ask whether the program changed lives, at what cost, and whether you can prove it. The funder lens, in eight questions:
Activity counts are not on that list. A report structured around this lens reports change; a report structured around your program calendar reports effort. Funders can tell the difference.
What you do. Draft the report’s skeleton before you touch any data. Feed your program and grant description to any capable AI and shape an outline against the eight questions above — dropping any section that does not apply, and refusing every section that is an activity count wearing an outcome’s clothes.
What you get. A fixed section outline the rollup will fill — the same outline every reporting cycle, so this year’s report is comparable to next year’s.
Why it matters. Structure is where honesty gets decided. If “beneficiaries served” means the funnel with its drop-off, the report can be trusted; if it means the largest number anyone touched the program, it cannot. Deciding the sections before seeing results also removes the quiet temptation to organize the report around whatever happened to look good.
Real example — RiseWorks. The outline that came back: outcomes vs targets · the funnel · cost-per-outcome · SROI (carried in) · equity coverage · variance · theory-of-change rollup · citations policy (every number carries a quote or a source field). One section was cut in drafting: “training sessions delivered.” It was an activity count, and nothing downstream of it changed a life.
Prompt 1: Funder Report Outline
PROMPT 1 — FUNDER REPORT OUTLINE [DIY]
Chapter 10a · Case Intelligence series · Sopact Academy
Use in: any capable AI (Claude, ChatGPT). You structure this once, by hand.
Purpose: shape a funder / grantmaker impact report around what funders
actually ask — change, cost, proof — and refuse activity counts.
------------------------------------------------------------
You are an impact-reporting editor for a grant-funded program. Your job is
to structure a funder report around change, not effort.
TASK
From my program and grant description below, build a report outline using
ONLY these eight candidate sections (drop any that do not apply to my
program; add none):
1. Outcomes vs targets — the change the grant promised.
2. Beneficiaries served — the funnel, with honest drop-off.
3. Cost-per-outcome — the cost of one durable outcome.
4. SROI — social value per dollar (carried in from an existing, sourced
calculation — never re-derived for the report).
5. Equity / subgroup coverage — who was served, hardest-to-serve included.
6. Grant variance — where actuals diverged from the plan, named.
7. Theory-of-change rollup — every outcome tied to the funded chain.
8. Citations policy — a verbatim quote or traceable data point behind
every number.
For each section you keep, write one line stating what question it answers
for the funder and what data it requires.
ACTIVITY-COUNT TEST (apply mechanically): if a proposed section's headline
number could grow while participants' lives stayed unchanged (sessions
delivered, workshops run, hours mentored), it is an activity count —
exclude it, or demote its content to variance explanation only.
INPUT — paste between the markers:
<<<
[describe your program, the grant's promised outcomes, and your funder's
reporting requirements]
>>>
OUTPUT FORMAT
A. The kept sections, in order, one line each: Section | Funder question
it answers | Data required.
B. The dropped sections, each with the one-line reason.
C. Any section my funder requires that the eight cannot hold — flag it,
do not improvise a new one silently.
RULES
- No section may be invented beyond the eight candidates.
- Apply the activity-count test to everything, no exceptions.
- The same input must give the same output every run.
------------------------------------------------------------
What you do. From your theory of change, pick the outcomes the grant funded, and for each commit to one indicator and one target — before the results are in front of you. This is the report’s honesty mechanism, and it is a decision, not a computation, which is why it stays DIY.
What you get. A short outcome → indicator → target table, each row pointing at a store and wave that already collects the indicator.
Why it matters. A target chosen after the results is a target that cannot be missed — which is to say, not a target. Committing first means a miss gets reported as a miss, and a near-miss as a near-miss. Funders have read enough reports to recognize the difference between a program that measures itself and one that grades its own homework.
Real example — RiseWorks. The committed targets, each mapped to a collection point that already exists:
Note what the last column is doing: no target requires new data collection. If a target had pointed at an indicator no store collects, that would be a coverage gap to name in the report — not a number to improvise at close.
Prompt 2: Target Selector
PROMPT 2 — TARGET SELECTOR [DIY]
Chapter 10a · Case Intelligence series · Sopact Academy
Use in: any capable AI (Claude, ChatGPT). Run this BEFORE you see results —
that is the entire point.
Purpose: commit outcome → indicator → target, each mapped to a store and
wave that already collects it.
------------------------------------------------------------
You are helping me commit to reporting targets before results exist. A
target chosen after the results is a ratification, not a commitment.
TASK
From my theory of change below:
1. List the outcomes worth reporting to a funder — only the ones the grant
funded. Do not add outcomes the grant never promised.
2. For each outcome, name exactly ONE indicator that measures it, and ONE
target value. State the target as a number with its unit and scale
(e.g. "+2.5 points on the same 1–10 confidence scale, intake → exit";
"≥ $20/hr median wage at six-month follow-up"; "70% completion";
"30 placements accepted").
3. For each indicator, name the STORE and WAVE that already collects it
(e.g. Application/Intake, Mid-Program, Exit/Completion, Six-Month
Follow-up, Placements). If nothing collects it, write NO COLLECTION
POINT — that outcome becomes a named coverage gap in the report, not a
target.
4. Flag any indicator whose scale differs across waves — a target cannot
sit on two different scales.
INPUT — paste between the markers:
<<<
[paste your theory of change here, plus the list of stores and waves you
already collect]
>>>
OUTPUT FORMAT
One table, exactly: Outcome | Indicator | Target | Store / Wave — followed
by a COVERAGE GAPS list (outcomes with no collection point) and a SCALE
FLAGS list (indicators measured inconsistently across waves).
RULES
- One indicator and one target per outcome — no ranges of convenience, no
"directional" targets.
- Targets must be checkable numbers on collected fields; nothing aspirational
that no store measures.
- Never delete a hard-to-hit target — a reported miss is worth more than a
soft target hit.
- The same input must give the same output every run.
------------------------------------------------------------
Before the product steps, look at the raw material — because the whole argument of this chapter is that the report’s claims already exist as records. Here is the living-wage claim, exactly as it sits in the stores at cohort close:
Claim: median wage $9.96 → $25.11/hr, intake → six-month follow-up
Sources: wage at intake (Application/Intake store) · wage_current at follow-up (Six-Month Follow-up store) · joined on the persistent participant ID (email)
Where it started, in one record: RW2-004, Javier Brooks, 23, IT & Cybersecurity, Birmingham 2024-Q3 — intake wage $12.69, confidence 3.6/10, barriers: the Corolla died, daycare runs $180 a week — goal in his own words: “support my kids without working two jobs”
Quote on the ID at follow-up: “First real paycheck where I wasn’t choosing between rent and groceries.”
Grade: EVIDENCED — a quotable figure and a participant’s words, both traceable.
Nothing here was produced for the report. The intake wage was captured in Chapter 3, the follow-up wage in the follow-up wave, the quote scored on arrival, the join guaranteed by the ID. The report’s job is to retrieve this bundle — for every claim.
From here on, this is product output, not a prompt you run. A chat prompt can format a report from whatever you paste into it — but it cannot cite what it never received, and by report time nobody can re-read five waves of open text to find the right quote. Sense never has to, because the citations were built when the data landed.
Two mechanisms did the work, quietly, all cohort long. The Intelligent Cell on each field scored or classified it on arrival — the confidence numbers validated against their scale, the open text distilled to themes with the participant’s exact words preserved. The Intelligent Row assembled each participant’s per-record report: baseline, trajectory, outcomes, quotes, all on the persistent ID. Every Row is a pre-built citation unit — number and words, same record, same moment.
That is what makes Javier’s bundle above retrievable instead of reconstructable. His $12.69 and his “support my kids without working two jobs” were joined the day he applied; the follow-up wage and the paycheck quote joined the same record two waves later. Multiply by the cohort: every claim the report will make already exists as rows that carry their own evidence.
The contrast with the scramble is the point. In a collect-then-clean stack, pairing a number with a quote at report time means a human searching transcripts for something usable — slow, and quietly biased toward the most quotable participants. Here the pairing predates the report, so the citation is whatever the record actually says.
Prompt 3 — The Citation Layer
PROMPT 3 — THE CITATION LAYER [SENSE]
Chapter 10a · Case Intelligence series · Sopact Academy
This is product configuration — it runs on arrival in Sopact Sense, not in
a chat window. The report's citations are not produced at close; they are
built the moment each record lands, all cohort long.
------------------------------------------------------------
WHERE IT SITS
Intelligent Cells on the fields of every wave (Application/Intake,
Mid-Program, Exit/Completion, Mentor Weekly Notes, Six-Month Follow-up),
plus an Intelligent Row per participant. All records join on the
persistent participant ID (email), which links the eight stores by
reference keys.
THE CELLS' INSTRUCTION (the citation-building behavior)
On each arriving record:
1. Score or classify the field against its rubric (set in Chapters 2–6).
2. For every open-text field, preserve the participant's EXACT words with
the classification — never a paraphrase.
3. Validate scaled fields against the wave's scale (confidence is 1–10 in
every wave, or the trajectory claim dies here).
4. Write scores and quotes to the same record, on the persistent ID — so
the number and the words that will one day cite it are joined at birth.
THE ROW'S ASSEMBLY (Intelligent Row — per-participant report)
header: participant · track · cohort · funnel status
body: baseline → mid → exit trajectory on the same scales · wage at
intake and follow-up · credential · placement
quotes: the participant's own words per wave, verbatim, in context
Each Row is a pre-built citation unit: figure plus quote, same record,
same moment.
SAMPLE RETURN (real record — RW2-004 · Javier Brooks · IT & Cybersecurity)
intake: wage $12.69 · confidence 3.6/10 · barriers: car died, daycare
$180/wk · goal (verbatim): "support my kids without working
two jobs"
follow-up: wage on record · quote on the same ID (verbatim): "First real
paycheck where I wasn't choosing between rent and groceries."
→ the living-wage claim's citation bundle, retrievable at close because
it was assembled on arrival.
WHY THIS CAN'T BE A CHAT PROMPT
A chat prompt can format whatever you paste, but it cannot cite what it
never received — and at close, nobody re-reads five waves of open text to
find the right quote. The pairing of number and words has to predate the
report. In Sense it does, on every record, by construction.
------------------------------------------------------------
Now the close itself. The Sopact Assistant (with the Claude MCP connection) works over all eight stores at once, and the funder report comes back as answers to questions.
The rollup, against the targets you committed to. Asked to roll the cohort up to the theory of change, the Assistant returns each outcome against its pre-committed target, with a verbatim quote on the ID beside every number:
The placement row is the one to study. Twenty-nine against a target of thirty gets reported as a near-miss, with the variance explained by Chapter 9’s demand gap — 25 requisitions unfilled on citizen-only and CDL hard fails while 29 credentialed candidates sat surplus. A scramble-built report would have rounded that story off. A queried one attaches it, because the explanation is sitting in the Job Requisitions store.
The economics, carried, not re-derived. Cost-per-outcome ≈ $20,076 per durable placement; SROI ≈ 2.44:1 — Chapter 7’s numbers, with its honesty rule intact: measured value (the observed $9.96 → $25.11 wage gain) reported separately from benchmarked value (avoided public assistance, tax contribution — modeled, and labeled as modeled). The ratio in the funder report is the same defensible number the SROI chapter built, not a fresh one invented for the deck.
Equity coverage, stated. The cohort RiseWorks served: ~22% justice-involved, ~55% first-generation, with outcomes reportable inside each subgroup on the same indicators. A funder asking “did you serve the hardest-to-serve, or cream?” gets a number, not an adjective. Employment at follow-up — 82% for completers vs 45% for non-completers — carries its own honest asterisk: it is a completer/non-completer comparison, not a causal claim, and the report says so.
Then the grade, on everything. The last query is the discipline: every claim in the draft graded by mechanical rules — EVIDENCED only with a quotable figure or fact on a record; UNPROVEN when claimed without analyzed backing; MISSING when no indicator was ever collected:
Nothing unsupported ships. The unproven claim gets softened or cut before a program officer finds it; the missing one becomes a stated limit. A report that names its own gaps reads as more credible than one that pretends to none — because it is.
Prompt 4 — Rollup and Claim Grader
PROMPT 4 — ROLLUP AND CLAIM GRADER [SENSE]
Chapter 10a · Case Intelligence series · Sopact Academy
Run this in the Sopact Sense Assistant over your store. The Assistant
(with the Claude MCP connection) reads all eight stores at once — the
funder report comes back as answers to queries.
------------------------------------------------------------
ASSISTANT PROMPT A — the cited rollup, against targets
"Roll this cohort up to our theory of change. Show the funnel
enrolled → completed → credentialed → placed with drop-off. Report each
outcome against its pre-committed target (hit / miss / near, with
variance). Pair every number with a VERBATIM participant quote retrieved
from the persistent ID — never paraphrase. Keep measured values labeled
separately from benchmarked ones."
WHAT IT RETURNS (RiseWorks):
Funnel: 80 enrolled → 62 completed → 58 credentialed → 29 placed.
Confidence target +2.5 actual 4.3 → 7.4 (+3.1) HIT
"I walked in not sure I belonged in a shop. By the end I was the one
helping other people read the blueprints."
Wage target ≥ $20 actual $9.96 → $25.11 median HIT
"First real paycheck where I wasn't choosing between rent and
groceries."
Completion target 70% actual 62/80 = 78% HIT
Placement target 30 actual 29 NEAR — reported
as a miss, variance explained by the Chapter 9 demand gap (25
requisitions unfilled on citizen-only/CDL vs 29 surplus candidates).
Context: employment at follow-up 82% completers vs 45% non-completers
(comparison, not a causal claim — labeled as such).
Economics carried from Chapter 7: SROI ≈ 2.44:1 · cost-per-outcome
≈ $20,076 — measured wage gain separate from benchmarked proxies.
Equity coverage: ~22% justice-involved · ~55% first-generation, with
outcomes reportable inside each subgroup.
ASSISTANT PROMPT B — the claim grader
"Grade every claim in this report draft by mechanical rules:
EVIDENCED — only with a quotable figure or fact on a record (data + quote
on the persistent ID).
UNPROVEN — claimed without analyzed backing; state what analysis would
move it to evidenced.
MISSING — no indicator collected; list it as a named coverage gap.
Do not let any UNPROVEN or MISSING claim read as evidenced. The same draft
must grade the same way every run."
WHAT IT RETURNS (RiseWorks):
EVIDENCED confidence rise, wage gain, employment rate, completion,
placement — each with data and a quote on the ID.
UNPROVEN mentor-support quality (notes collected in Chapter 6, not yet
analyzed against outcomes at cohort scale) → soften or cut.
MISSING long-term "reduced regional talent gap" (no indicator) →
named as a coverage gap, not faked.
------------------------------------------------------------
Reporting activity instead of change. Sessions delivered, workshops run, hours mentored — funders skim past all of it looking for the outcome. Structure the report around outcomes-vs-targets and let activity appear only where it explains a variance.
Choosing targets after seeing the results. A target set at close is a ratification, not a commitment, and experienced funders can smell it. Commit in Step 2, before the rollup — and let the 29-against-30 near-miss be reported as exactly that.
Shipping numbers without words, or words without numbers. A number alone is an assertion; a moving quote alone is an anecdote. The unit of funder evidence is the pair — figure plus verbatim quote on the same ID — and the pairing has to happen on arrival, because nobody re-reads five waves of transcripts at close.
Blending measured and benchmarked value. An SROI that mixes observed wage gains with modeled proxies in one undifferentiated number invites the one diligence question that unravels the report. Keep the labels, carry Chapter 7’s split intact.
Hiding the coverage gaps. The outcome you never measured does not disappear because the report omits it — it becomes the question you cannot answer on the call. Grade every claim, and let MISSING appear in print. Stated limits build more trust than implied completeness.
A funder impact report that is a query against data scored on arrival: the cohort rolled up to your theory of change, each outcome against a target you committed to in advance, the funnel with its drop-off told honestly, cost-per-outcome and a defensible SROI carried from Chapter 7, equity coverage stated in numbers, every claim paired with a verbatim quote on the persistent ID, and every claim graded so nothing unsupported ships. Cohort close is an afternoon of queries and one human read-through — not a month of re-export and reconciliation.
Because every field was scored the moment it arrived, the analysis predates the deadline instead of colliding with it. Because every quote sits on the persistent ID beside its numbers, citation is retrieval, not archaeology. Because targets were committed before results, the report can be trusted where it flatters and where it stings. And because the grading is mechanical, the report’s weakest claim is visible to you before it is visible to your funder. The skeptic’s one-liner: the report was being written the whole time — cohort close is a query, not a month of copy-paste.
Take your most recent funder report and grade its claims with Prompt 2’s discipline in reverse: for each claim, ask — is there a figure and a participant’s own words behind this, on the same record? Count how many claims survive as EVIDENCED. That count is your current citation rate, and it is the single number this chapter exists to raise.
A screen-by-screen walkthrough — committing the targets, watching the rollup come back with quotes attached, and grading the claims live on the RiseWorks cohort — is in production. Check back on the Academy.
Program teams who lose a month every year to the report scramble and still ship claims they privately cannot source. Development directors who have watched a funder probe one uncited number and discount the rest. Evaluators who want targets committed before results, quotes beside figures, and gaps stated instead of smoothed. If your last report was assembled from six exports and hope, this is the fix.
Write your funder report in Sopact Sense — sopact.com/academy.
Next in the series: How to Turn a Cohort into a Social-Enterprise Investor Report — the same data, an investor lens: the identical RiseWorks records re-queried for blended value, unit economics, and the path to self-funding.
Open Sopact Sense, paste your program description, and put it to work.
Try in Sopact