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
Metadata
Release files for reflection-analyser 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reflection_analyser-0.3.0.tar.gz | 183.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reflection_analyser-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 197.3 kB
Release files / reflection_analyser-0.3.0.tar.gz
| Download URL | reflection_analyser-0.3.0.tar.gz |
|---|---|
| Size | 183.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4542a08283b12ceb542b4fc1fb24b23cb496af56ab783cb5a64fdb2732ce735
|
|
BLAKE2b-256 checksum How to use checksums |
a933289c76bde0342375571f86178a5a0177782151d23825841e7d38a975ceaa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|
Release files / reflection_analyser-0.3.0-py3-none-any.whl
| Download URL | reflection_analyser-0.3.0-py3-none-any.whl |
|---|---|
| Size | 14.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e5d11106b88f598baa151446a610ad3964a54b6c2674bda54bf5dea17a401945
|
|
BLAKE2b-256 checksum How to use checksums |
a5404a6400c5361265b87b413568312486199b9f4b0720d4bfdd0d2c4f885fa1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.0
|