Theme Coverage Report
Analysis: {{ result.analysis_name }}
Summary
Themes
{{ result.themes|length }}
Documents
{{ result.documents|length }}
Total Chunks
{{ result.config.n_chunks }}
Chunks/Doc
{{ (result.config.n_chunks / result.documents|length)|round(0)|int }}
-
{% for theme in result.themes %}
-
{{ theme.name }}
{{ theme.description }}
{% endfor %}
Document-Level Coverage
Coverage scores aggregated across each entire document ({{ result.config.aggregation }} of chunk similarities).
Colour scale from 30th percentile to maximum coverage score.
Red = above {{ threshold }}, Grey = below {{ threshold }}.
Chunk-Level Coverage
Shows where theme matches occur within documents. Each panel represents one theme. Max similarity within each bin.
Each document is divided into {{ n_bins }} equal bins (0-100% of document). All documents have the same width.
Z-scored values with negative scores truncated to 0. Highlights above-average regions.
Chunks grouped by absolute position (groups of ~{{ (result.config.n_chunks / result.documents|length / n_bins)|round(0)|int }} chunks). Documents have variable widths based on length.
Theme Trajectories
How theme coverage varies across document position (LOESS-smoothed average across all documents).
Within-Document Variation
Statistics on max-binned similarity values within each document, averaged across all documents.
| Theme | Avg | Max | P95 |
|---|---|---|---|
| {{ theme_name[:50] }}{% if theme_name|length > 50 %}...{% endif %} | {{ "%.3f"|format(stats.avg) }} | {{ "%.3f"|format(stats.max) }} | {{ "%.3f"|format(stats.p95) }} |
Group-Level Coverage
Mean coverage scores aggregated by document group.
Top Matching Chunks Per Theme
For each theme, the 50 highest-similarity chunks across all documents.
{{ theme.description }}
{% if theme_name in result.top_chunks_per_theme %}-
{% for chunk in result.top_chunks_per_theme[theme_name] %}
-
{{ chunk.filename }} {{ "%.3f"|format(chunk.similarity) }}{{ chunk.chunk_text }}
{% endfor %}
No chunks available.
{% endif %}Group Statistics
Coverage statistics aggregated by document group.
| Group | N Docs | {% for theme_name in result.theme_names %}{{ theme_name[:15] }}{% if theme_name|length > 15 %}...{% endif %} | {% endfor %}
|---|---|---|
| {{ group.group_name }} | {{ group.n_documents }} | {% for theme_name in result.theme_names %}
{{ "%.2f"|format(group.theme_scores[theme_name]) }}
±{{ "%.2f"|format(group.theme_scores_std[theme_name]) }} |
{% endfor %}
Document Details
Coverage scores for each document across all themes.
| Document | {% if result.groups %}Group | {% endif %}Chunks | {% for theme_name in result.theme_names %}{{ theme_name[:12] }}{% if theme_name|length > 12 %}...{% endif %} | {% endfor %}
|---|---|---|---|
| {{ doc.filename }} | {% if result.groups %}{{ doc.group or '-' }} | {% endif %}{{ doc.n_chunks }} | {% for theme_name in result.theme_names %}{{ "%.2f"|format(doc.theme_scores[theme_name]) }} | {% endfor %}
Configuration
- Chunk Size
- {{ result.config.chunk_size }} {{ result.config.split_unit }}
- Overlap
- {{ result.config.overlap }} {{ result.config.split_unit }}
- Aggregation Method
- {{ result.config.aggregation }}
- Embedding Model
- {{ result.config.embedding_model }}
- Embed Source
- {{ result.config.embed_source }}{% if result.config.n_quotes %} ({{ result.config.n_quotes }} quotes){% endif %}
- Embedding Template
{{ result.config.embedding_template }}- Heatmap Threshold
- {{ threshold }}
- Normalised Bins
- {{ n_bins }}
- Total Documents
- {{ result.config.n_documents }}
- Total Chunks
- {{ result.config.n_chunks_total }}{% if result.config.n_chunks_sampled != result.config.n_chunks_total %} (sampled: {{ result.config.n_chunks_sampled }}){% endif %}
- Total Themes
- {{ result.config.n_themes }}