How to Document Mentoring Sessions Without Inventing Emotion
'She seems confident' is unevidenced. This shows how to structure mentor session notes in Sopact Sense — extracting topics, progress, blockers, and actions with evidence, and never inferring emotion.
<!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}
/* chain / timeline */
.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}
/* matrix */
.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">📝</span>
<div class="t">
<div class="n">Mentorship & LMS program · Structure Mentor Notes</div>
<div class="s">DEMO-09 · Sopact Sense · Mentorship</div>
</div>
<span class="pill"><span class="d"></span>Structuring</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">></span><span id="promptTxt"></span></div>
</div>
</div>
<script>
(function(){
var TABS = ["Setup", "Structure", "Fix", "Report"];
var CONTENT = [{"eyebrow": "Step 1 · Load the Decision Brief", "headline": "'She seems confident' is unevidenced.", "lede": "The Assistant works only from the Mentorship & LMS dataset (DEMO-09) — without inventing emotion.", "prompt": "You are the Sopact Sense Assistant working over the [DEMO] dataset (clean data + persistent contact IDs). Load my Decision Brief (decision, audience, outcomes, indicators, evidence standard) first, then wait for my task."}, {"eyebrow": "Step 2 · Extract topics, progress, blockers, action items", "headline": "Evidence per field, no inferred emotion.", "lede": "Each field is extracted with evidence and graded <strong style=\"color:#15884F\">green</strong>, <strong style=\"color:#C9820A\">amber</strong>, <strong style=\"color:#C63E2B\">red</strong> on whether it's stated or inferred.", "prompt": "From the mentor note, extract topics, progress, blockers, action items, relationship signal with evidence. Don't infer unexpressed emotion. Grade green/amber/red."}, {"eyebrow": "Step 3 · One-fix follow-up", "headline": "Ground the signal.", "lede": "The relationship signal sits at AMBER — inferred, not stated. The Assistant names the single data point that moves it to green.", "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/edit that moves it to green."}, {"eyebrow": "Step 4 · Missing & incomplete report", "headline": "Actions yes; emotion inferred, blockers missing.", "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 [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."}];
var BODIES = {
setup: "<div class=\"row\"><span class=\"emoji\">📝</span><div class=\"rt\"><div class=\"n\">Decision Brief</div><div class=\"s\">Decision, audience, outcomes, indicators, evidence standard loaded first</div></div><span class=\"pillsm\">Pasted</span></div><div class=\"row\"><span class=\"emoji\">📋</span><div class=\"rt\"><div class=\"n\">Five elements</div><div class=\"s\">Dataset · the fields · evidence per field · no inferred emotion · grade G/A/R</div></div><span class=\"pillsm gray\">Structure</span></div><div class=\"row\"><span class=\"emoji\">🔒</span><div class=\"rt\"><div class=\"n\">No hallucination rule</div><div class=\"s\">Don't infer unexpressed emotion; only what the program states</div></div><span class=\"pillsm gray\">Required</span></div>",
build: "<div class=\"mxwrap\"><div class=\"mxhead\"><div></div><div>Extracted</div><div>Note</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Action items</div><div>send 2 job links<span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div><div>explicit</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Relationship signal</div><div>"seems more confident"</div><div>inferred<span class=\"mxchip\" style=\"background:#C9820A;color:#fff\">AMBER</span></div></div><div class=\"mxrow\"><div class=\"mxlabel\">Blockers</div><div>none captured<span class=\"mxchip\" style=\"background:#C63E2B;color:#fff\">RED</span></div><div></div></div></div>",
fix: "<div class=\"mxwrap\"><div class=\"mxhead\"><div></div><div>Extracted</div><div>Note</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Action items</div><div>send 2 job links<span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div><div>explicit</div></div><div class=\"mxrow\"><div class=\"mxlabel\">Relationship signal</div><div>Capture an explicit confidence check at session end</div><div>inferred<span class=\"mxchip\" style=\"background:#15884F;color:#fff\">GREEN</span></div></div><div class=\"mxrow\"><div class=\"mxlabel\">Blockers</div><div>none captured<span class=\"mxchip\" style=\"background:#C63E2B;color:#fff\">RED</span></div><div></div></div></div><div class=\"cnote\" style=\"color:#15884F;margin-left:0\"><span class=\"plus\">+</span><strong>Fix applied:</strong> Capture an explicit confidence check at session end — moves the relationship signal from AMBER (inferred, not stated) to GREEN (evidenced).</div>",
reportFlags: "<div class=\"flagrow\" style=\"border-left-color:#C9820A\"><span class=\"flagtag\" style=\"color:#C9820A;background:#FBF0DA\">AMBER</span><div class=\"flagtxt\">Relationship signal: inferred ('seems confident'). Fix: add an explicit end-of-session check.</div></div><div class=\"flagrow\" style=\"border-left-color:#C63E2B\"><span class=\"flagtag\" style=\"color:#C63E2B;background:#FCE9E7\">RED</span><div class=\"flagtxt\">Blockers: none captured. Fix: prompt mentors to log blockers each session.</div></div>",
lpTitle: "Missing & incomplete report · shareable link",
lpSub: "Decision-first · Sopact branding · Mentorship & LMS program · Structure Mentor Notes",
summaryBefore: "Grade: 1 green · 1 amber · 1 red. confidence inferred, not stated",
summaryAfter: "Grade: 2 green · 0 amber · 1 red. explicit check-in, 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">📄</span><div class="rt"><div class="n">' + BODIES.lpTitle + '</div><div class="s">' + BODIES.lpSub + '</div></div><span class="open">Open →</span></div>';
}
bodyEl.innerHTML = out;
promptEl.textContent = c.prompt;
}
function render(){ renderTabs(); renderBody(); }
render();
})();
</script>
</body>
</html>
In short: Mentor notes go wrong when they record a feeling no one expressed. In Sopact Sense the extraction pulls topics, progress, blockers, action items, and any relationship signal — but only where a verbatim line supports it. 'She seems confident' with no quote behind it gets caught, not recorded.
1 · Set up over your data
Point the Assistant at clean mentor notes with persistent contact IDs so every session stays tied to the same mentee over time. Load your Decision Brief first — the decision, the audience, the fields you track, and your evidence standard — so the extraction fills the right structure and holds itself to evidence.
2 · Write the prompt
From the mentor note, extract topics, progress, blockers, action items, relationship signal with evidence. Don't infer unexpressed emotion. Grade green/amber/red.
The prompt carries five elements. The dataset is the loaded mentor notes. The fields are topics, progress, blockers, action items, and relationship signal. Evidence per field ties each value to a quoted line. No inferred emotion forbids reading confidence or mood into the note. Grade G/A/R rates how well-evidenced each field is.
3 · What Sense produces
Run on the Mentorship & LMS dataset (DEMO 09) already loaded in Sopact Sense.
GRADE: green | 1 | Explicit action; amber | 1 | Inferred emotion; red | 1 | Blocker not captured
Sense returns each field with its supporting quote. An explicit action item the mentor wrote down comes back green. A confidence read with no quote behind it comes back amber — it is an inference, not evidence. A blocker that was raised in session but never recorded comes back red: the field is simply missing.
4 · Turn a weak link green
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.
For the missing blocker, the fix is structural: make blocker a required field in the mentor note template. That single change turns a silently dropped red into a captured, evidenced field every session.
5 · Make the report and share it
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
Quote or leave blank. A relationship signal without a verbatim line is a guess. If there's no quote, the field stays empty — that is the discipline.
Separate progress from feeling. 'Completed the draft' is progress; 'seemed proud of the draft' is inferred emotion. Keep them in different columns.
Make blockers mandatory. Notes that only capture wins quietly hide the things that need escalation. Require the field.
Watch for flattering drift. Models tend to round up toward positive readings.
Audit a sample of notes for any emotion word that has no quote behind it, and strip it before it reaches a report.
Frequently asked questions
How do you document mentoring sessions?
Extract a fixed set of fields — topics, progress, blockers, action items, and relationship signal — and tie each to a quoted line from the note. Sopact Sense does this in one prompt and refuses to infer emotion, so the record stays evidenced rather than impressionistic.
Why shouldn't mentor notes infer emotion?
Because an unevidenced feeling like 'she seems confident' becomes data the program can't defend. Recording only what a quote supports keeps the note credible and protects the mentee from being mischaracterised.
What's the most common gap in mentor notes?
Blockers that were raised in session but never written down. The fix is to make blocker a required field in the note template so it is captured every time.
Ready to try it for yourself?
Open Sopact Sense, paste your program description, and put it to work.