Point it at a rubric and a folder of submissions. For every student you get deliverable checks, cited evidence per criterion, and how the work sits in the cohort — observations for you to weigh, never a grade.
The AI narrates and cites; it never scores.
Free & open source (MIT). No account. Student work stays on
your machine.
All versions and release notes on the
GitHub releases page.
# prefer the command line? Same engine, on PyPI:
pip install assessment-lens
Deterministic signals from the lens analyser family, mapped to your rubric — the same submission always yields the same observations.
Did each student hand in what the brief asked for — the report, the demo video, the code? Present, missing, or wrong type, at a glance.
Each rubric criterion shows the signals that speak to it, with their values cited — plus a coverage flag: is the evidence there at all?
How each submission sits relative to the rest — unusually distinctive or unusually similar. A neutral prompt to look, never a verdict.
Choose your rubric and your submissions folder.
One subfolder per student or group — a messy LMS export is fine. Rubrics are plain YAML you author once (or draft from the assignment brief).
Assess the cohort.
The local engine analyses every submission — documents, code, AI-chat transcripts, reflective journals and more — and maps the signals to your criteria. One failed submission never sinks the run.
Weigh the observations. Assign the mark. Write the feedback.
Triage the whole cohort in one sortable sheet, open any student's evidence in full, and export CSV + per-student reports. Every mark is yours — there is deliberately no score field anywhere in the tool.
First launch installs the analysis engine automatically (one time, with progress shown). After that it works offline.
Everything runs locally. The optional plain-language narration uses Ollama, a free local model — so student work never leaves your machine. No cloud, no vendor, no data-governance headaches.
The observations themselves are deterministic — no LLM required at all. Narration is an opt-in layer over evidence you can always inspect directly.
The desktop app and the PyPI
package are the same product. Use the app to mark; use
assessment-lens assess rubric.yaml submissions/ when you want
scripted, reproducible runs — the observations are identical.