Assessment Lens · for educators who mark

See the evidence.
Assign the marks yourself.

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.

for this computer macOS Apple Silicon (M1–M4) for this computer macOS Intel for this computer Windows 64-bit installer for this computer Linux AppImage

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

What you see for every submission

Deterministic signals from the lens analyser family, mapped to your rubric — the same submission always yields the same observations.

📦 Deliverable checks

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.

📐 Evidence per criterion

Each rubric criterion shows the signals that speak to it, with their values cited — plus a coverage flag: is the evidence there at all?

🧭 Cohort context

How each submission sits relative to the rest — unusually distinctive or unusually similar. A neutral prompt to look, never a verdict.

Marking a cohort, not fighting a terminal

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.

Private by design

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.

Honest without AI

The observations themselves are deterministic — no LLM required at all. Narration is an opt-in layer over evidence you can always inspect directly.

Documents & reports Code AI-chat transcripts Reflective journals + the lens family

Two ways in, one engine

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.