Reflective-writing analysis — metacognition, criticality, depth (Moon-style bands)
Project description
reflection-analyser
Reflective-writing analysis — the lens-family member that reads a learning journal / reflection / portfolio entry as reflection, not just as prose.
document-analyserreads readability; this reads reflective depth. Different signals from the same words. Explicit-only (auto_routable: false) — same pattern asconversation-analyser: text and prose extensions auto-route todocument-analyser; invokereflection-analyserdeliberately when you want the reflective-depth interpretation.
Built around the markers commonly used in reflective-writing rubrics (Moon's depth scale, Gibbs' reflective cycle, the SOLO taxonomy): metacognition, criticality, evidence linkage, affect language, and forward-looking action.
Install
pip install reflection-analyser
Optional: read .pdf / .docx / .pptx journals (otherwise plain-text / .md only):
pip install 'reflection-analyser[documents]'
Use
Python:
from reflection_analyser import ReflectionAnalyser
# From text directly
result = ReflectionAnalyser().analyse_text("Looking back, I realised that…")
# From a file (composes on document-analyser for binary docs when [documents] is installed)
result = ReflectionAnalyser().analyse("journal.md")
result = ReflectionAnalyser().analyse("journal.docx") # requires [documents]
print(result.depth_band) # "dialogic"
print(result.composite_depth_score) # 0.62
print(result.metacognition.count) # 7
print(result.criticality.count) # 3
CLI:
reflection-analyser journal.md
reflection-analyser journal.txt --json
reflection-analyser journal.docx # needs [documents] extra
echo "Looking back…" | reflection-analyser -
reflection-analyser serve
reflection-analyser manifest
HTTP (reflection-analyser serve on port 8015):
curl -F file=@journal.md http://localhost:8015/analyse
Signals
For a piece of reflective writing:
- Metacognition — first-person + cognitive verbs (
I realised,I noticed,looking back,on reflection). Surface depth indicator. - Criticality — contrast/qualification phrases (
however,in contrast,that said,on the other hand). Marker of dialogic vs descriptive reflection. - Evidence — references to specific moments, sources, dates, quotes — proper-noun and citation density. Concrete vs abstract.
- Affect — emotion words (
frustrated,surprised,confident,uncertain). Too few = clinical; presence indicates engagement. - Action / forward-looking —
next time,going forward,I will, future-tense intent. Marker of transformative reflection.
Composite depth score (0–1) combines per-marker coverages; mapped to a Moon-style band:
| Band | Score | Description |
|---|---|---|
| descriptive | 0.0–0.25 | "What happened" only — events recounted, little interpretation |
| dialogic | 0.25–0.5 | Some self-questioning + critical thought |
| critical | 0.5–0.75 | Multiple perspectives, evidence linkage, qualification |
| transformative | 0.75–1.0 | Forward-looking insight, evidence-linked, change-oriented |
The score is a signal, not a grade — it's meant to inform human judgement, not replace it.
The family
| What you want | Use |
|---|---|
| Document text + readability | document-analyser |
| Reflective depth on that text | reflection-analyser (this) |
| Human-AI conversation analysis | conversation-analyser |
| Any file → right engine | auto-analyser |
Limits
- Lexicon-based v1 — fast, transparent, but catches phrasing not meaning. A reflective sentence
without our trigger words underscores; a non-reflective sentence with
I realisedoverscores. - English-only for v1.
- Calibrated against generic reflective-writing rubrics; tune the band thresholds in
_BAND_THRESHOLDSfor your unit's specific rubric if needed. - Vision/LLM-augmented depth scoring is a possible follow-on; not in v1.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reflection_analyser-0.2.0.tar.gz.
File metadata
- Download URL: reflection_analyser-0.2.0.tar.gz
- Upload date:
- Size: 182.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
860863f667c62d7b88029cfba8b6162a24704e37e8cdf4dc3e43ff47ba535e09
|
|
| MD5 |
f8928f8e24bea8c1a9ca775701a6a9a3
|
|
| BLAKE2b-256 |
6aa8af4101a7cdb9ae4c17ceaceb5f0ecc79a237b20aa0ba362dfd69627814eb
|
File details
Details for the file reflection_analyser-0.2.0-py3-none-any.whl.
File metadata
- Download URL: reflection_analyser-0.2.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80aa65e6403ceefff22919e309f20566cb9bc5358b379eec8551fac630fc59a4
|
|
| MD5 |
ba3f17515bb9b1d428a056110202a55a
|
|
| BLAKE2b-256 |
79c11470e83252458d2890e050119fab37fa0fc7a626f528fba8843a850de059
|