play icon for videos
← Academy
SOPACT ACADEMY · AI SKILLS

Build a Logic Model and Catch the Gaps Funders Spot

Describe your program and Sopact Sense lays out the logic model — inputs through impact — grading every box by evidence and flagging the orphan activities and gaps a funder spots first.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> @keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.35}} *{box-sizing:border-box} body{margin:0;font-family:'Hanken Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;background:#EEF2F9;padding:26px;display:flex;justify-content:center} .card{width:600px;max-width:100%;background:#FFFFFF;border:1px solid #E3E9F4;border-radius:20px;box-shadow:0 26px 64px -32px rgba(15,30,70,.34),0 2px 4px rgba(15,30,70,.05);overflow:hidden} .hdr{display:flex;align-items:center;gap:11px;padding:16px 20px;border-bottom:1px solid #EEF1F7;background:#F5F8FE} .hdr .ic{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border:2px solid #155DFC;border-radius:50%;color:#155DFC;font-size:15px;font-weight:800;flex-shrink:0} .hdr .t{min-width:0} .hdr .t .n{font-weight:800;font-size:14.5px;color:#0F172A;letter-spacing:-.2px} .hdr .t .s{font-size:12px;color:#64748B} .hdr .pill{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:#155DFC;background:#E6EEFF;padding:5px 10px;border-radius:20px;white-space:nowrap} .hdr .pill .d{width:6px;height:6px;border-radius:50%;background:#155DFC;animation:pulseDot 2s infinite} .tabs{display:flex;gap:0;padding:12px 16px 0;background:#F5F8FE} .tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:700;color:#64748B;background:transparent;border:none;border-bottom:2px solid transparent;padding:8px 4px 10px} .tab.on{font-weight:800;color:#155DFC;border-bottom-color:#155DFC} .tab .num{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:50%;font-size:11px;font-weight:800;color:#64748B;background:#EEF1F7} .tab.on .num{color:#fff;background:#155DFC} .divider{height:1px;background:#EEF1F7} .body{padding:20px} .eyebrow{font-size:10.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#155DFC;margin-bottom:5px} .eyebrow.g{color:#15884F} .headline{font-family:'Inter',Georgia,serif;font-size:18.5px;font-weight:600;line-height:1.25;color:#0F172A;margin-bottom:12px} .lede{font-size:12.5px;line-height:1.55;color:#475569;margin:0 0 14px} .rows{display:flex;flex-direction:column;gap:8px;margin-bottom:14px} .row{display:flex;align-items:center;gap:11px;background:#F5F8FE;border:1px solid #EEF1F7;border-radius:11px;padding:11px 13px} .row .emoji{font-size:17px} .row .rt{flex:1;min-width:0} .row .rt .n{font-size:13px;font-weight:700;color:#0F172A} .row .rt .s{font-size:12px;color:#64748B} .pillsm{font-size:11px;font-weight:800;color:#155DFC;background:#E6EEFF;padding:4px 9px;border-radius:6px;flex-shrink:0} .pillsm.gray{font-weight:700;color:#64748B;background:#EEF1F7} .chainwrap{position:relative;padding-left:26px} .chainline{position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:#E3E9F4} .cnode{position:relative;margin-bottom:14px} .cdot{position:absolute;left:-26px;top:4px;width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid #94A3B8} .clabel{font-size:9.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#64748B;margin-bottom:4px} .cbox{background:#F5F8FE;border:1px solid #EEF1F7;border-radius:11px;padding:10px 12px;font-size:12px;line-height:1.5;color:#334155} .cbox.graded{display:flex;align-items:flex-start;gap:9px;border-left-width:3px;border-left-style:solid} .cnote{margin:0 0 14px 4px;font-size:11px;line-height:1.5} .cnote .plus{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;background:#155DFC;color:#fff;border-radius:4px;font-size:10px;font-weight:800;flex-shrink:0;margin-right:6px} .csummary{display:flex;align-items:center;gap:12px;background:#0A1B3D;border-radius:13px;padding:11px 15px;margin-top:4px} .csummary .t{flex:1;font-size:11.5px;color:#CBD8F5} .csummary .t b{color:#F1F5FF} .mxwrap{border:1px solid #EEF1F7;border-radius:12px;overflow:hidden;margin-bottom:10px} .mxhead{display:grid;grid-template-columns:118px 1fr 1fr;background:#F5F8FE;border-bottom:1px solid #EEF1F7} .mxhead div{font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#64748B;padding:7px 9px} .mxrow{display:grid;grid-template-columns:118px 1fr 1fr;border-bottom:1px solid #EEF1F7} .mxrow:last-child{border-bottom:none} .mxrow>div{padding:9px;font-size:11.5px;line-height:1.4;color:#334155;display:flex;align-items:center;flex-wrap:wrap;gap:5px} .mxrow .mxlabel{font-weight:700;color:#0F172A;background:#FAFBFE} .mxchip{font-size:9px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;padding:3px 6px;border-radius:5px;white-space:nowrap} .promptwrap{padding:0 20px 18px} .promptlbl{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#94A3B8;margin-bottom:7px} .prompt{display:flex;align-items:flex-start;gap:9px;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:11px;line-height:1.5;color:#1E293B;background:#F5F8FE;border:1px solid #EEF1F7;border-left:3px solid #155DFC;border-radius:9px;padding:11px 12px} .prompt .car{color:#155DFC;font-weight:800;flex-shrink:0} .flagrow{display:flex;align-items:flex-start;gap:10px;background:#F5F8FE;border:1px solid #EEF1F7;border-radius:11px;padding:10px 12px;border-left-width:3px;border-left-style:solid;margin-bottom:8px} .flagtag{font-size:9.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;padding:4px 8px;border-radius:5px;white-space:nowrap;flex-shrink:0} .flagtxt{font-size:12px;line-height:1.45;color:#334155} .lp{display:flex;align-items:center;gap:12px;background:#0A1B3D;border-radius:13px;padding:14px 16px;margin-top:6px} .lp .ic{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;background:#14295C;border:1px solid #26407A;border-radius:9px;color:#7FA8FF;font-size:16px;flex-shrink:0} .lp .rt{flex:1;min-width:0} .lp .rt .n{font-size:13px;font-weight:800;color:#F1F5FF} .lp .rt .s{font-size:11.5px;color:#9DB2D9} .lp .open{font-size:11px;font-weight:800;color:#0A1B3D;background:#7FA8FF;padding:6px 11px;border-radius:7px;white-space:nowrap} </style> </head> <body> <div class="card"> <div class="hdr"> <span class="ic">&#128203;</span> <div class="t"> <div class="n">Vista Workforce Collaborative</div> <div class="s">DEMO-01 · Sopact Sense · Framework Builder</div> </div> <span class="pill"><span class="d"></span>Building</span> </div> <div class="tabs" id="tabs"></div> <div class="divider"></div> <div class="body" id="body"></div> <div class="promptwrap"> <div class="promptlbl">The prompt behind this step</div> <div class="prompt"><span class="car">&gt;</span><span id="promptTxt"></span></div> </div> </div> <script> (function(){ var TABS = ["Setup", "Build", "Fix", "Report"]; var CONTENT = [{"eyebrow": "Step 1 · Describe the program", "headline": "The input is your description, nothing else", "lede": "Use only what the program states — anything inferred gets marked, never invented.", "prompt": "You are the Sopact Sense Assistant. Here is my program description: [PASTE PROGRAM DESCRIPTION]. Use only what it states; mark anything you infer as [INFERRED]. Wait for my task."}, {"eyebrow": "Step 2 · Fill & grade the columns", "headline": "Six stages, one orphan activity flagged", "lede": "Every box is filled and graded, and gaps are flagged — <strong style=\"color:#15884F\">green</strong>, <strong style=\"color:#C9820A\">amber</strong>, <strong style=\"color:#C63E2B\">red</strong>.", "prompt": "Build a Logic Model for Vista Workforce Collaborative. Flag gaps and orphan activities, and grade every element green/amber/red."}, {"eyebrow": "Step 3 · Turn the weak link green", "headline": "The same model, one link fixed", "lede": "Take the lowest-graded link and fix it with the one indicator the program could realistically measure.", "prompt": "Take the lowest-graded element above and fix it using only what the program could realistically measure. Show the before → after grade and the single indicator that moves it to green."}, {"eyebrow": "Step 4 · Missing & incomplete report", "headline": "See what a funder circles first", "lede": "Every amber or red item becomes one named ask — the report leads with the decision it informs.", "prompt": "Create a 'missing & incomplete' report from this analysis in Sopact branding. List every element graded amber or red, what is missing, and the one input that would fix each. Lead with the decision this report informs."}]; var BODIES = { setup: "<div class=\"row\"><span class=\"emoji\">&#128221;</span><div class=\"rt\"><div class=\"n\">Program description</div><div class=\"s\">Vista Workforce Collaborative · 12-week bootcamp</div></div><span class=\"pillsm\">Pasted</span></div><div class=\"row\"><span class=\"emoji\">&#128203;</span><div class=\"rt\"><div class=\"n\">Five columns</div><div class=\"s\">Inputs · Activities · Outputs · Outcomes · Impact</div></div><span class=\"pillsm gray\">Structure</span></div><div class=\"row\"><span class=\"emoji\">&#128274;</span><div class=\"rt\"><div class=\"n\">No hallucination rule</div><div class=\"s\">Only what the program states; infer = flagged</div></div><span class=\"pillsm gray\">Required</span></div>", build: "<div class=\"chainwrap\"><div class=\"chainline\"></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#94A3B8\"></div><div class=\"clabel\" style=\"color:#64748B\">Inputs</div><div class=\"cbox\">Curriculum, instructors, mentors, employer partners, laptops, funding</div></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#94A3B8\"></div><div class=\"clabel\" style=\"color:#64748B\">Activities</div><div class=\"cbox\">200 hrs instruction · weekly 1:1 mentoring · employer demo day</div></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#94A3B8\"></div><div class=\"clabel\" style=\"color:#64748B\">Outputs</div><div class=\"cbox\">~60 complete the bootcamp; portfolios built</div></div><div class=\"cnote\" style=\"color:#C63E2B\"><strong>Gap:</strong> employer demo day feeds no output — orphan activity.</div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#C9820A\"></div><div class=\"clabel\" style=\"color:#C9820A\">Short-term outcome</div><div class=\"cbox graded\" style=\"background:#FBF0DA;border-color:#F0DBA8;border-left-color:#C9820A\"><span style=\"flex:1;color:#5C3E08\">Job-ready skills + increased confidence</span><span class=\"mxchip\" style=\"background:#C9820A;color:#fff\">AMBER</span></div></div><div class=\"cnote\" style=\"color:#C9820A\"><strong>Assumption:</strong> mentoring builds confidence — claimed, not measured.</div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#15884F\"></div><div class=\"clabel\" style=\"color:#15884F\">Medium-term outcome</div><div class=\"cbox graded\" style=\"background:#E4F3EA;border-color:#C6E7D1;border-left-color:#15884F\"><span style=\"flex:1;color:#0F3D24\">Employment within 6 months — 71%, verified</span><span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#C63E2B\"></div><div class=\"clabel\" style=\"color:#C63E2B\">Long-term / Impact</div><div class=\"cbox graded\" style=\"background:#FCE9E7;border-color:#F6C9C2;border-left-color:#C63E2B\"><span style=\"flex:1;color:#7A2A1E\">Sustained employment &amp; wage growth → economic mobility</span><span class=\"mxchip\" style=\"background:#C63E2B;color:#fff\">RED</span></div></div></div>", fix: "<div class=\"chainwrap\"><div class=\"chainline\"></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#94A3B8\"></div><div class=\"clabel\" style=\"color:#64748B\">Inputs</div><div class=\"cbox\">Curriculum, instructors, mentors, employer partners, laptops, funding</div></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#94A3B8\"></div><div class=\"clabel\" style=\"color:#64748B\">Activities</div><div class=\"cbox\">200 hrs instruction · weekly 1:1 mentoring · employer demo day</div></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#94A3B8\"></div><div class=\"clabel\" style=\"color:#64748B\">Outputs</div><div class=\"cbox\">~60 complete the bootcamp; portfolios built</div></div><div class=\"cnote\" style=\"color:#C63E2B\"><strong>Gap:</strong> employer demo day feeds no output — orphan activity.</div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#15884F\"></div><div class=\"clabel\" style=\"color:#15884F\">Short-term outcome</div><div class=\"cbox graded\" style=\"background:#E4F3EA;border-color:#C6E7D1;border-left-color:#15884F\"><span style=\"flex:1;color:#0F3D24\">Job-ready skills + increased confidence</span><span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"cnote\" style=\"color:#15884F\"><span class=\"plus\">+</span><strong>Indicator added:</strong> Confidence scale (1–5) captured at intake and at exit, on the same contact ID.</div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#15884F\"></div><div class=\"clabel\" style=\"color:#15884F\">Medium-term outcome</div><div class=\"cbox graded\" style=\"background:#E4F3EA;border-color:#C6E7D1;border-left-color:#15884F\"><span style=\"flex:1;color:#0F3D24\">Employment within 6 months — 71%, verified</span><span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"cnode\"><div class=\"cdot\" style=\"border-color:#C63E2B\"></div><div class=\"clabel\" style=\"color:#C63E2B\">Long-term / Impact</div><div class=\"cbox graded\" style=\"background:#FCE9E7;border-color:#F6C9C2;border-left-color:#C63E2B\"><span style=\"flex:1;color:#7A2A1E\">Sustained employment &amp; wage growth → economic mobility</span><span class=\"mxchip\" style=\"background:#C63E2B;color:#fff\">RED</span></div></div></div>", reportFlags: "<div class=\"flagrow\" style=\"border-left-color:#C9820A\"><span class=\"flagtag\" style=\"color:#C9820A;background:#FBF0DA\">AMBER</span><div class=\"flagtxt\">Short-term outcome — mentoring → confidence is claimed, not measured. Needs an intake/exit confidence scale.</div></div><div class=\"flagrow\" style=\"border-left-color:#C63E2B\"><span class=\"flagtag\" style=\"color:#C63E2B;background:#FCE9E7\">RED</span><div class=\"flagtxt\">Long-term / Impact — sustained employment and wage growth aren’t tracked past first placement.</div></div>", lpTitle: "Missing & incomplete report · shareable link", lpSub: "Decision-first · Sopact branding · Vista Workforce Collaborative", summaryBefore: "Grade: 1 green &middot; 1 amber &middot; 1 red. Plus one orphan activity.", summaryAfter: "Grade: 2 green &middot; 0 amber &middot; 1 red. One indicator changed the picture." }; var phase = 1; var tabsEl = document.getElementById('tabs'); var bodyEl = document.getElementById('body'); var promptEl = document.getElementById('promptTxt'); function renderTabs(){ tabsEl.innerHTML = ''; TABS.forEach(function(label, i){ var b = document.createElement('button'); b.type = 'button'; b.className = 'tab' + (i === phase ? ' on' : ''); b.innerHTML = '<span class="num">' + (i+1) + '</span><span>' + label + '</span>'; b.addEventListener('click', function(){ phase = i; render(); }); tabsEl.appendChild(b); }); } function renderBody(){ var c = CONTENT[phase]; var eyebrowClass = (phase===2) ? 'eyebrow g' : 'eyebrow'; var out = '<div class="' + eyebrowClass + '">' + c.eyebrow + '</div><div class="headline">' + c.headline + '</div><p class="lede">' + c.lede + '</p>'; if (phase === 0) { out += '<div class="rows">' + BODIES.setup + '</div>'; } else if (phase === 1) { out += BODIES.build; out += '<div class="csummary"><div class="t"><b>' + BODIES.summaryBefore + '</b></div></div>'; } else if (phase === 2) { out += BODIES.fix; out += '<div class="csummary"><div class="t"><b>' + BODIES.summaryAfter + '</b></div></div>'; } else { out += BODIES.reportFlags; out += '<div class="lp"><span class="ic">&#128196;</span><div class="rt"><div class="n">' + BODIES.lpTitle + '</div><div class="s">' + BODIES.lpSub + '</div></div><span class="open">Open &rarr;</span></div>'; } bodyEl.innerHTML = out; promptEl.textContent = c.prompt; } function render(){ renderTabs(); renderBody(); } render(); })(); </script> </body> </html>

In short: One prompt now builds a funder-ready logic model from nothing but what a program publicly states. It names the decision the reader must make, lays the program out in columns — inputs → activities → outputs → outcomes → impact — grades every box by evidence, flags the orphan activities that feed no output, and ends with a prioritized plan for the boxes a reviewer circles first. Below, we run it on a real public page and walk through what each part of the prompt produces.

Do you need a logic model for a grant application?

Usually yes — it's the framework most funders ask for, because it makes a program's logic checkable in one page. A logic model lays your program out in columns — inputs → activities → outputs → outcomes → impact — so a reviewer can trace the line from what you spend to what changes. Most logic models fail in the middle: an activity that feeds no output, or an outcome with no data behind it. That's where the eye goes first.

The prompt below turns that principle into a complete audit. It reads only what your program states publicly, grades every box Green, Amber, or Red, names the orphan activities, and tells you the one box to fix this quarter. We ran it on The Lantern Network's public mentoring-program page — the sections that follow show the prompt for each part, then what came back.

1 · Name the decision, then run one prompt

Every grade depends on who is reading. A board sees "87% placed" as a headline; a renewing funder asks what evidence sits behind it, and whether every activity actually earns its place. So the prompt's first instruction is a decision frame: before building anything, state in one line who would use this logic model and for what decision. For Lantern, that came back as a corporate sponsor deciding whether to renew its grant. Every judgment below is made from that reader's chair.

Here is the full prompt. Paste it whole, swap in your program name and source, and Sense produces all four parts in one pass:

Build a Logic Model for [PROGRAM NAME] using only what the program publicly states at [SOURCE — URL or pasted program description]. Before building, state in one line who would use this logic model and for what decision — then make every judgment from that reader's perspective. PART 1 — Lay the program out in columns: Inputs → Activities → Outputs → Short-Term Outcomes → Medium/Long-Term Outcomes → Impact. Write every outcome as a change in people, never as an activity. Flag any orphan activity (one that feeds no output) and any empty column. Color every box: GREEN = specific AND evidenced; AMBER = stated but vague, or specific but unevidenced; RED = missing, or exists only as [INFERRED]. Tag anything not explicitly stated as [INFERRED]. Include a legend, program name, source URL, and date. PART 2 — One row per box: Element | Column | Grade | Evidence (quoted, paraphrased, or "none") | one measurable indicator that would test it, phrased so the program could actually collect it (who is measured, what changes, by when). PART 3 — List every orphan activity and every AMBER and RED box, ranked by how much the model depends on it. For each: why it is weak in one sentence, what breaks downstream, and whether the fix is a program-design problem or a measurement gap. PART 4 — The top 3–5 fixes, in priority order for the decision named above. For each: current language (or "missing") → proposed rewrite, plus the single data collection step that would move it toward green. CLOSING SUMMARY — 3–4 sentences: overall strength of the logic, the weakest box a skeptical funder would circle first, and the one action to take this quarter. RULES — Source fidelity is absolute: never invent program content; if the source does not say it, mark it RED or [INFERRED]. Every green grade must be traceable to specific source language.

Example source: https://www.lanternnetwork.org/mentoring-program. The rules do the heavy lifting — no invented content, every green traceable to a quote. The model is the claim; the table in Part 2 is its evidence trail.

2 · Part 1 — the visual logic model

Lay the program out in columns: Inputs → Activities → Outputs → Short-Term Outcomes → Medium/Long-Term Outcomes → Impact. Write every outcome as a change in people, never as an activity. Flag any orphan activity that feeds no output, and any empty column. Color every box green, amber, or red. Tag anything not explicitly stated as [INFERRED]. Include a legend, program name, source URL, and date.

Two disciplines make this different from the boxes-and-arrows version on most websites. First, every outcome is written as a change in people — "mentees gain career clarity," never "we run workshops." Second, the model hunts its own weak spots: an activity that produces no output is flagged as an orphan, and any column with nothing in it is called out. For Lantern, the pattern was immediate — the left of the model is concrete (288 mentees served, 251 internships delivered, named sponsors) while the outcome columns past placement rest on three testimonials.

The rubric is strict on purpose. Green means specific and evidenced — the program names it concretely and shows data ("87% secured internships, jobs, or promotions"). Amber means stated but vague, or specific but unevidenced. Red means missing entirely, or existing only as [INFERRED].

GRADE: green | 87% placed | 288 mentees, 251 internships — output evidenced; amber | confidence & clarity | short-term outcome claimed in three stories, never measured; red | mentoring dosage | activity with no recorded output — an orphan

3 · Part 2 — the gap & indicator table

For every box, produce one row: Element | Column | Grade | Evidence (quoted, paraphrased, or "none") | one measurable indicator that would test it, phrased so the program could actually collect it — who is measured, what changes, by when.

This table is the evidence trail behind the columns — one row per box, so nothing in the model floats free of a citation. The indicator column is the practical payoff: each is phrased so the program could actually collect it. For Lantern's orphan activity — the mentoring that feeds no output — the evidence column reads "none: no sessions, hours, or dosage recorded," and the indicator that would fix it is "mentoring hours and session count per mentee, captured against a persistent participant ID." That's not a critique; it's a work order.

4 · Part 3 — the weak-link diagnosis

List every orphan activity and every amber and red box, ranked by how much the model depends on it. For each: (a) why it is weak in one sentence, (b) what breaks downstream, (c) whether the fix is a program-design problem or a measurement gap — these require different responses.

The ranking is by dependence, not column order — the question is which weakness takes the most down with it. Lantern's number one was the orphan mentoring activity: no dosage is recorded, so there's no output linking the program's central activity to any outcome. If that link stays empty, confidence, clarity, and every downstream claim rest on the 87% placement number alone.

The design-versus-measurement tag matters just as much. A measurement gap means the program plausibly works but has never measured it — the fix is data collection. A design problem means an activity genuinely leads nowhere — the fix is program thinking. Lantern's diagnosis came back mostly measurement gaps: nothing needs removing, but the mentoring needs an output.

5 · Part 4 — the improvement plan

Give the top 3–5 fixes, in priority order for the decision named above. For each: show the current language (or "missing") → a proposed rewrite, plus the single data collection step that would move it toward green.

Each fix is a before-and-after pair. Lantern's first: the mentoring activity, currently "weekly 1:1 mentoring" with no output, gains an output box — "mentoring dosage recorded per mentee" — fed by a single data step: log session count and hours against a persistent participant ID. Fixes two through five follow the same shape: give the confidence claim a baseline/endline measure, connect the demo day to a placement output, and publish the denominator behind the 87%.

6 · The closing summary — one action this quarter

Close with 3–4 sentences: the overall strength of the logic, the weakest box a skeptical funder would circle first, and the one action to take this quarter.

The summary is the executive read. Lantern's verdict: the left of the model is concrete and evidenced, but the program's central activity — mentoring — produces no recorded output, so the outcome columns float. The one action this quarter: record mentoring dosage against a persistent participant ID, so next year's renewal case shows the activity actually connecting to the change it claims.

Take the prompt with you. The full prompt pack — the master prompt plus each part as a standalone prompt you can run separately — is available to download: Download the Logic Model prompt pack.

Tricks, tips, and troubleshooting

Hunt the orphan activities first. The fastest way to spot a weak logic model is to find an activity that feeds no output — a demo day connected to no placement, mentoring with no recorded dosage. Ask Sense to list orphan activities explicitly; funders circle them first.

Logic model vs theory of change. A logic model is the columns — what goes in, what comes out. A theory of change adds the assumption under each arrow. If you've built one, ask Sense: "Turn this logic model into a theory of change and name the assumption under each link."

Turn one box green per cycle. Add the one indicator Sense suggests for your reddest box, collect it next cohort, and re-run — watch the model fill in over time.

Tighten your program page while you're here. Once Sense has graded the model, ask it to bring your public claims in line with your evidence:

Based on the grades above, suggest edits to my program page so its claims match the evidence. Flag every sentence that overstates what we can show, and rewrite it to be accurate and specific.

The same prompt works for a Theory of Change, Logframe, or Results Framework — swap the framework name and keep the parts, rubric, and rules unchanged.

Frequently asked questions

What is a logic model?

A logic model is a one-page map of a program in five columns — inputs → activities → outputs → outcomes → impact — that shows the line from the resources you put in to the change you expect out. It's the framework most funders ask for because it makes a program's logic checkable at a glance.

What's the difference between a logic model and a theory of change?

A logic model shows the columns — what goes in and what comes out, in sequence. A theory of change goes a step further and names the assumption under each arrow: why you believe one box leads to the next. The logic model is the structure; the theory of change explains why it should work. Many teams build the logic model first, then add the assumptions to turn it into a theory of change.

How do you build a logic model with AI?

Describe your program in a few sentences (or paste its web page) and ask the AI to fill the five columns, flag gaps and orphan activities, suggest one indicator per element, and grade each box green, amber or red by how much evidence supports it. In Sopact Sense this takes minutes and stays grounded only in what your program states — it marks anything inferred so it never invents outputs you don't have.

Ready to try it for yourself?

Open Sopact Sense, paste your program description, and put it to work.

Try in Sopact