play icon for videos
← Academy
SOPACT ACADEMY · GRANT INTELLIGENCE · ANALYZE

Score Applications on Arrival Without Bias

Score any grant proposal against a weighted rubric in seconds — and catch the high marks that rest on no evidence. Here is the exact prompt and what Sopact Sense returns.

<!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">&#9878;</span> <div class="t"> <div class="n">REC-1042 · Grant Scoring</div> <div class="s">DEMO-05 · Grant Applications · Sopact Sense</div> </div> <span class="pill"><span class="d"></span>Scoring</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", "Score", "Fix", "Report"]; var CONTENT = [{"eyebrow": "Step 1 · Load the application", "headline": "The input is the application, nothing else", "lede": "Point the Assistant at the real record — nothing inferred, nothing invented.", "prompt": "You are the Sopact Sense Assistant. Here is application REC-1042: [PASTE BUDGET + NARRATIVE]. Use only what it states; mark anything you infer as [INFERRED]. Wait for my task."}, {"eyebrow": "Step 2 · Score & cite", "headline": "Four criteria, every score cited", "lede": "Every score is graded on evidence, not confidence — <strong style=\"color:#15884F\">green</strong>, <strong style=\"color:#C9820A\">amber</strong>, <strong style=\"color:#C63E2B\">red</strong>.", "prompt": "Score REC-1042 against the rubric and validate each claim against the budget and narrative."}, {"eyebrow": "Step 3 · Turn the weak score green", "headline": "One citation changes the score", "lede": "Take the lowest-graded item and resolve it with the one thing that's realistically obtainable.", "prompt": "Take the lowest-graded criterion above and fix it using only what is in the application. Show the before → after score and the one citation that moves it to green."}, {"eyebrow": "Step 4 · Missing & incomplete report", "headline": "What the reviewer would circle 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\">&#128203;</span><div class=\"rt\"><div class=\"n\">REC-1042 application</div><div class=\"s\">Budget + narrative + rubric</div></div><span class=\"pillsm\">Loaded</span></div><div class=\"row\"><span class=\"emoji\">&#9878;</span><div class=\"rt\"><div class=\"n\">Scoring rubric</div><div class=\"s\">Need · Capacity · Impact · Budget</div></div><span class=\"pillsm gray\">Applied</span></div><div class=\"row\"><span class=\"emoji\">&#128274;</span><div class=\"rt\"><div class=\"n\">Evidence-only rule</div><div class=\"s\">Every score must cite a source</div></div><span class=\"pillsm gray\">Required</span></div>", build: "<div class=\"mxwrap\"><div class=\"mxhead\"><div></div><div>Score</div><div>Evidence cited</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Need-evidence</div><div>4/5</div><div>62% employment, n=120 (eval)<span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"mxrow\"><div class=\"mxlabel\">Capacity</div><div>3/5</div><div>team described; no track record</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Expected impact</div><div>4/5</div><div>claim strong, evidence is a testimonial<span class=\"mxchip\" style=\"background:#C9820A;color:#fff\">AMBER</span></div></div><div class=\"mxrow\"><div class=\"mxlabel\">Budget justification</div><div>—</div><div>lump-sum, no line detail<span class=\"mxchip\" style=\"background:#C63E2B;color:#fff\">RED</span></div></div></div>", fix: "<div class=\"mxwrap\"><div class=\"mxhead\"><div></div><div>Score</div><div>Evidence cited</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Need-evidence</div><div>4/5</div><div>62% employment, n=120 (eval)<span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"mxrow\"><div class=\"mxlabel\">Capacity</div><div>3/5</div><div>team described; no track record</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Expected impact</div><div>4/5</div><div>now tied to the measured 62% outcome<span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"mxrow\"><div class=\"mxlabel\">Budget justification</div><div>—</div><div>lump-sum, no line detail<span class=\"mxchip\" style=\"background:#C63E2B;color:#fff\">RED</span></div></div></div><div class=\"cnote\" style=\"color:#15884F;margin-left:0\"><span class=\"plus\">+</span><strong>Fix applied:</strong> Tie the impact claim to the measured 62% outcome (n=120, source cited).</div>", reportFlags: "<div class=\"flagrow\" style=\"border-left-color:#C9820A\"><span class=\"flagtag\" style=\"color:#C9820A;background:#FBF0DA\">AMBER</span><div class=\"flagtxt\">Expected impact — the claim is strong but the only evidence is a testimonial. Needs a tie to the measured 62% outcome.</div></div><div class=\"flagrow\" style=\"border-left-color:#C63E2B\"><span class=\"flagtag\" style=\"color:#C63E2B;background:#FCE9E7\">RED</span><div class=\"flagtxt\">Budget justification — lump-sum only, no line-item detail. Needs an itemized budget before scoring can finish.</div></div>", lpTitle: "Missing & incomplete report · shareable link", lpSub: "Decision-first · Sopact branding · REC-1042 · Grant Scoring", summaryBefore: "Grade: 1 green &middot; 1 amber &middot; 1 red. One weak link to fix.", summaryAfter: "Grade: 2 green &middot; 0 amber &middot; 1 red. One score, fully evidenced." }; 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>

How do you score a grant proposal with a rubric?

In short: To score a grant proposal with a rubric, load the application into an AI workspace, give it your weighted criteria (need-evidence, capacity, feasibility, impact, budget, sustainability), and require it to validate every claim against the attachments and cite the field behind each score. The point isn't the number. It's whether each score has a field behind it. Sopact Sense grades each element green, amber, or red so you fund on proof, not on prose.

1 · Set up over your data

Start with the grant round already loaded as clean data with persistent contact IDs, so every claim ties back to a real application field and attachment. Point the assistant at the dataset and have it read your Decision Brief first — the decision, audience, outcomes, indicators, and evidence standard — so it scores against your bar, not a generic one.

You are the Sopact Sense Assistant working over the DEMO-05 · Grant Applications dataset (clean data + persistent contact IDs). Load my Decision Brief (decision, audience, outcomes, indicators, evidence standard) first, then wait for my task.

2 · Write the scoring prompt

The scoring prompt names the rubric and forces evidence. Paste this verbatim:

Score proposal [ID] on need-evidence, capacity, feasibility, impact, budget, sustainability (1-5, weighted). Validate every claim against the attachments; cite the field behind each. Grade green/amber/red.

The prompt works because of five elements: the dataset it scores over, the rubric and its weights, the instruction to validate claims against attachments, the rule to not reward unsupported claims, and the demand to grade green/amber/red so weak links are visible.

3 · What Sense produces

Run it against the Foundation grant round demo:

Run on the Grant Applications dataset (DEMO-05) already loaded in Sopact Sense.

GRADE: green | 62% | verified outcome; amber | claim | unevidenced impact; red | budget | missing detail

The green element is a verified 62% outcome figure with a field behind it. The amber element is an impact claim that scored well but has no attachment to back it. The red element is missing budget detail — there is no line-item table to validate feasibility against.

4 · Turn a weak link green

Take the lowest-graded element and fix it with the one input that moves it. Sense shows the before → after grade and the single edit that does the work.

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/edit that moves it to green.

5 · Make the report and share it

Turn the analysis into a reviewer-ready report, then a link that opens with no login.

Create a 'missing & incomplete' report from this analysis in Sopact branding [or paste your website URL / brand guideline to apply your own]. List every element graded amber or red, what is missing, and the one input that fixes each. Lead with the decision this report informs.
Create a shareable link for this report and open it in a new tab.

Tricks, tips, and troubleshooting

Score the evidence, not the writing. A polished narrative often hides a missing number. Always require a cited field behind each score so persuasive prose can't earn green on its own.

Weight before you score. Set the rubric weights up front. If feasibility matters more than sustainability for this round, say so in the prompt — otherwise every element reads as equally important.

Flag, don't fail. A missing budget table is a request, not a rejection. Mark it red and ask for the one input that fixes it rather than scoring the whole proposal down.

Re-score after the fix. Once a weak element is repaired, re-run only that element so your final score reflects the corrected evidence.

Re-score only the budget element for proposal [ID] now that the line-item table is attached, and show the updated weighted total.

Frequently asked questions

How do you build a grant scoring rubric?

List the dimensions that drive your funding decision — typically need-evidence, capacity, feasibility, impact, budget, and sustainability — assign each a weight that reflects its importance for this round, and score each 1–5. The critical addition is an evidence rule: every score must cite the application field or attachment behind it, so a claim with no support can't earn a high mark.

Can AI score grant proposals reliably?

AI scores reliably when it is constrained to your rubric and forced to cite evidence. The risk is rewarding fluent writing; you remove it by requiring a cited field per score and grading green/amber/red so unsupported claims surface as amber instead of disappearing into the total.

What makes a grant score weak?

A score is weak when high marks rest on unevidenced claims or when a key element — like a line-item budget — is missing entirely. The fix is to flag those gaps, request the one input that resolves each, and re-score, rather than letting prose carry the proposal.

Ready to try it for yourself?

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

Try in Sopact