play icon for videos
← Academy
Strategy · Training

How to run a training needs assessment

Find the skill and behavior gap your training must close, before you design it, and turn that same baseline into your Level 2 pre-measure.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> @keyframes pd{0%,100%{opacity:1}50%{opacity:.35}} *{box-sizing:border-box} body{margin:0;font-family:'Hanken Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;background:#F7F4EC;padding:24px;display:flex;justify-content:center} .card{width:600px;max-width:100%;background:#FFFFFF;border:1px solid #ECE4D4;border-radius:20px;box-shadow:0 24px 60px -34px rgba(74,52,38,.36),0 2px 4px rgba(74,52,38,.05);overflow:hidden} .hdr{display:flex;align-items:center;gap:11px;padding:16px 20px;border-bottom:1px solid #F1EADD;background:#FBF8F1} .hdr .ic{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border:2px solid #C05B3F;border-radius:50%;color:#C05B3F;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:#2C2318;letter-spacing:-.2px;line-height:1.25} .hdr .t .s{font-size:12px;color:#8A7B66} .hdr .pill{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:#C05B3F;background:#F6E6E0;padding:5px 10px;border-radius:20px;white-space:nowrap} .hdr .pill .d{width:6px;height:6px;border-radius:50%;background:#C05B3F;animation:pd 2s infinite} .tabs{display:flex;gap:0;padding:12px 16px 0;background:#FBF8F1;flex-wrap:wrap} .tab{flex:1;min-width:70px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:700;color:#8A7B66;background:transparent;border:none;border-bottom:2px solid transparent;padding:8px 4px 10px} .tab.on{font-weight:800;color:#C05B3F;border-bottom-color:#C05B3F} .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:#8A7B66;background:#F1EADD} .tab.on .num{color:#fff;background:#C05B3F} .divider{height:1px;background:#F1EADD} .body{padding:20px} .eyebrow{font-size:10.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#C05B3F;margin-bottom:6px} .headline{font-family:'Newsreader',Georgia,serif;font-size:18px;font-weight:600;line-height:1.3;color:#2C2318;margin-bottom:14px} .promptlbl{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#B3A58E;margin-bottom:7px} .promptbox{position:relative;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:11.5px;line-height:1.55;color:#3A3022;background:#F7F4EC;border:1px solid #ECE4D4;border-left:3px solid #C05B3F;border-radius:11px;padding:13px 14px 13px 15px} .promptbox .car{color:#C05B3F;font-weight:800} .copy{display:inline-flex;align-items:center;gap:6px;margin-top:11px;cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:800;color:#8A7B66;background:#F1EADD;border:1px solid #E4D9C4;border-radius:8px;padding:7px 12px} .copy:hover{color:#C05B3F} .copy.done{color:#15884F;border-color:#BBE3C9;background:#EAF6EE} .foot{display:flex;align-items:center;gap:12px;background:#2C2318;border-radius:13px;padding:13px 15px;margin-top:16px} .foot .rt{flex:1;min-width:0} .foot .rt .n{font-size:12.5px;font-weight:800;color:#F7F0E4} .foot .rt .s{font-size:11px;color:#C7B79E} .foot a.go{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:800;color:#2C2318;background:#E7A98F;text-decoration:none;padding:8px 14px;border-radius:20px;white-space:nowrap} .foot a.go:hover{background:#F0BEA6} </style> </head> <body> <div class="card"> <div class="hdr"> <span class="ic">&#9670;</span> <div class="t"> <div class="n">How to run a training needs assessment</div> <div class="s">Sopact Sense &middot; copy a prompt, run it on your data</div> </div> <span class="pill"><span class="d"></span>Needs</span> </div> <div class="tabs" id="tabs"></div> <div class="divider"></div> <div class="body" id="body"></div> </div> <script> (function(){ var TABS = ["Gap", "Baseline", "Rank", "Reuse"]; var CONTENT = [{"tab": "Gap", "what": "Map desired vs current capability per role to find the real skill gap.", "prompt": "You are the Sopact Sense Assistant working over the training needs-assessment dataset (clean data + persistent participant IDs). For each role, compare desired capability against current capability and surface the biggest gaps."}, {"tab": "Baseline", "what": "Run one short instrument: self-skill rating + manager rating + one open “what is hardest right now” — all on the same ID.", "prompt": "Design a short baseline instrument on one persistent ID combining a self-skill rating, a manager rating of the same skill, and one open-ended “what is hardest right now.” Keep the rating scale identical to the one I will reuse post-training."}, {"tab": "Rank", "what": "Turn the results into a prioritized gap list and the 3 objectives the training should target.", "prompt": "From this needs-assessment data for [ROLE/COHORT], rank the capability gaps by size and business relevance, summarize the top open-ended barriers with a representative quote each, and recommend the 3 learning objectives the training should target."}, {"tab": "Reuse", "what": "This baseline becomes the Level 2 (Learning) pre-measure so needs, learning, and behavior stay on one record.", "prompt": "Store this needs baseline on each participant’s persistent ID so it becomes the Level 2 (Learning) pre-measure. Keep the same skill scale so the pre→post learning gain is a true change on one record."}]; var phase = 0; var tabsEl = document.getElementById('tabs'); var bodyEl = document.getElementById('body'); 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 out='<div class="eyebrow">Step '+(phase+1)+' &middot; '+c.tab+'</div>'; out+='<div class="headline">'+c.what+'</div>'; out+='<div class="promptlbl">Copy-paste prompt</div>'; out+='<div class="promptbox"><span class="car">&gt; </span><span id="ptxt"></span></div>'; out+='<button type="button" class="copy" id="copyBtn"><span>&#128203;</span><span id="copyLbl">Copy prompt</span></button>'; out+='<div class="foot"><div class="rt"><div class="n">Run it in Sopact Sense</div><div class="s">Clean data + persistent IDs, graded in one pass</div></div><a class="go" href="https://www.sopact.com/request-demo" target="_blank" rel="noopener">Request a demo &rarr;</a></div>'; bodyEl.innerHTML=out; document.getElementById('ptxt').textContent=c.prompt; var btn=document.getElementById('copyBtn'); btn.addEventListener('click',function(){ var txt=c.prompt; function done(){btn.classList.add('done');document.getElementById('copyLbl').textContent='Copied';setTimeout(function(){btn.classList.remove('done');document.getElementById('copyLbl').textContent='Copy prompt';},1600);} if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(txt).then(done,function(){fb(txt);done();});}else{fb(txt);done();} }); function fb(t){var ta=document.createElement('textarea');ta.value=t;ta.style.position='fixed';ta.style.opacity='0';document.body.appendChild(ta);ta.select();try{document.execCommand('copy');}catch(e){}document.body.removeChild(ta);} } function render(){renderTabs();renderBody();} render(); })(); </script> </body> </html>

In short: A training needs assessment finds the capability gap a program must close before it is designed by comparing the skill or behavior each role is expected to have against what people can do today. In Sopact Sense you capture that gap with a short baseline instrument (a self-skill rating, a manager rating, and one open "what is hardest right now") tied to one persistent participant ID, so the same record later becomes your Level 2 (Learning) pre-measure and needs, learning, and behavior all stay connected.

1 · Define the gap: desired vs current capability by role

Start with the role, not the course. For each role or cohort, write the capability you need people to have ("can handle an escalated customer complaint without a supervisor," "can build a pivot table from raw export") and rate where they are now against it. The gap is the distance between desired and current capability, and it is what the training exists to close. Do this per role so a program aimed at frontline staff is not diluted by needs that really belong to team leads.

2 · Build a short baseline instrument on one participant ID

Keep it to three parts so people actually finish it, and attach every response to the participant's persistent ID from enrollment: a self-skill rating (how confident/capable the person feels on each target capability), a manager rating of the same person on the same capabilities, and one open-ended question, "what is hardest for you right now?" The self and manager ratings on a shared scale expose blind spots (people who rate themselves high where their manager sees a gap), and the open text surfaces barriers a rating scale never captures.

3 · Turn the results into a prioritized gap list

Rank the gaps by size and business relevance rather than by whatever scored lowest. A moderate gap on a capability tied to a core outcome outranks a large gap on something peripheral. Read the open-ended answers alongside the ratings to understand why a gap exists, then pull out the handful of gaps the training should actually target. This is the point where a needs assessment becomes a design brief.

Paste this into the Sopact Assistant against your needs-assessment data:

From this needs-assessment data for [ROLE/COHORT], rank the capability gaps by size and business relevance, summarize the top open-ended barriers with a representative quote each, and recommend the 3 learning objectives the training should target.

Expected output: a ranked table of capability gaps (desired vs current, gap size, business relevance), a short list of the top barriers each backed by a representative participant quote, and three recommended learning objectives the program should be designed to hit.

Input fields: participant ID, role/cohort, per-capability self-skill rating, per-capability manager rating, open-ended "what is hardest right now." Output fields: gap size per capability, priority rank, barrier themes with quotes, three recommended learning objectives.

Grade your gap list before you design anything. Use the chips below to judge whether the assessment is ready to drive design.

GRADE: green | Ready | gaps ranked by size and relevance, tied to IDs; amber | Almost | ratings captured but no manager view or open text; red | Redo | interest measured instead of capability, or no participant ID

A Green result has gaps ranked by size and business relevance, self and manager ratings on the same scale, and barriers evidenced by quotes, all on persistent IDs. Amber means you have some data but are missing the manager view or the open-ended barrier, so the priorities are shaky. Red means you measured what people are interested in rather than what they can do, or the responses are not tied to a participant ID, and the assessment cannot safely drive design.

4 · Make this baseline your Level 2 (Learning) pre-measure

Because every rating lives on the participant ID, the needs assessment is not throwaway: the capability scores you captured here become the pre-measure for Kirkpatrick Level 2 (Learning). After training you re-ask the same capability items on the same scale for the same person, and the pre-to-post change is your learning gain. Reusing one instrument and one ID is what keeps needs, learning, and later behavior on a single record instead of three disconnected surveys you can never join.

Tricks, tips, and troubleshooting

Measure capability, not interest. "How interested are you in this topic?" tells you attendance appeal, not need. Ask what people can do against a defined standard; interest can be a secondary tie-breaker, never the gap itself.

Lock the rating scale you will reuse. Whatever scale you set for the baseline (for example a 1–5 capability scale with anchored labels) is the scale you must re-use post-training. Change the wording or the points later and your pre-to-post comparison stops being valid.

Pair self-ratings with a manager rating. Self-assessment alone drifts, in both directions. A manager rating on the identical capabilities, joined on the same ID, turns a soft self-report into a defensible gap and flags the blind spots worth probing in the open text.

Frequently asked questions

What is a training needs assessment?

A training needs assessment is the step that identifies the capability gap a program must close before the program is designed, by comparing the skill or behavior each role is expected to have against what people can currently do. The gap, ranked by size and business relevance, becomes the design brief for the training.

What questions should a training needs assessment include?

At minimum a self-skill rating on each target capability, a manager rating of the same person on the same capabilities, and one open-ended "what is hardest for you right now." Keep it short, use a defined capability standard rather than interest, and tie every response to the participant's persistent ID.

How does a needs assessment connect to training evaluation later?

Because the baseline capability ratings sit on the participant ID, they become the Level 2 (Learning) pre-measure. Re-asking the same items on the same scale after training gives you the pre-to-post learning gain, and keeping everything on one record lets needs, learning, and behavior be analyzed together instead of as separate surveys.

Related from the Academy

Ready to try it for yourself?

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

Try in Sopact