Monthly Support Report — $month $year
Run the full report cycle for $month $year. Follow every step in order.
Step 1 — Re-fetch all live data sources
Do NOT use YAML values from a prior session. Always fetch fresh.
FeatureOS ideas (board 17437):
featureos-cli posts list --query "sort=votes_count&order=desc&per_page=25&status=all" --json
Update both new_this_month and top_alltime in data/$month_$year.yaml.
new_this_month: cross-reference with Lisa's FeatureOS board filtered by creation date for this monthtop_alltime: top 5 by votes_count from CLI output- JSON key is
feature_requests, notposts - Ideas can be removed from the board between sessions — verify all entries still exist
SUMO data (Roland's reports):
- Desktop:
https://thunderbird.github.io/thunderbird-metrics-and-reports/html_reports/desktop/$year-$month_num-sumo-desktop-report.html - Android:
https://thunderbird.github.io/thunderbird-metrics-and-reports/html_reports/android/$year-$month_num-sumo-android-report.html - Fetch both pages and update
sumo:section in the YAML
Step 2 — Ensure current and previous Play Store CSVs are in place
Run uv run scripts/fetch_reviews.py $month $year. It fetches both the report month and
the preceding calendar month into data/input/; required stable and K-9 failures are fatal.
This must run even when the preceding month's report was skipped, because improved /
unchanged / decreased ratings are paired by Review Link against that preceding export.
Required files for both months:
reviews_net.thunderbird.android_YYYYMM.csvreviews_com.fsck.k9_YYYYMM.csv- Optional beta:
reviews_net.thunderbird.android.beta_YYYYMM.csv
CSVs are UTF-16 encoded. Use all rows — no date filtering. The export is scoped by last activity date, not submit date.
generate.py performs the same check and automatically runs the fetcher if a required file
is missing. A fetch failure must stop generation; do not publish rating changes as unavailable.
Step 3 — Confirm Zendesk metrics are in the YAML
These come from Lisa's MoM spreadsheet. If overall_csat is null, ask Lisa before proceeding.
Check for:
zendesk.overall_csat,donor_csat,tbpro_csatzendesk.total_tickets,donor_tickets,tbpro_ticketszendesk.replies_to_low_star(Zendesk is authoritative — covers all 3 apps)zendesk.tbpro_csat_noteif TB Pro sample is low
Step 4 — Run the generator
uv run scripts/generate.py $month $year
This auto-populates:
- Friction point quotes, devices, languages (from CSVs)
- K-9 Discourse forum data (fetched live)
- 3-month trends for friction points and SUMO metrics
- History updated in
data/history.json
Step 5 — Fill in remaining narrative sections
These cannot be auto-populated — fill in reports/monthly/$year/$month.md:
- Lede — 2-3 sentences. What's the headline story? CSAT trend, volume surge, K-9 signal, etc.
- Community Support key signals —
[Key signal from Roland's data]and[Key signal]placeholders - Meeting 4★+ Goal bullets — 3 priorities with stats, trends, and why they matter
- Receive / Resolve / Resound — what came in, what worked, what to celebrate
- Experiments & Iterations — Lisa fills in manually
Check the K-9 Discourse data and Play Store K-9 analysis for signals worth calling out in the lede or K-9 Churn Watch section.
Step 6 — Verify dashboard
Open reports/monthly/$year/$month.html and check:
- All stat cards show values (no
—where data should be) - Thundermail note renders as small italic, not a heading
- Quarter label on rating trend is correct (Q1=Jan-Mar, Q2=Apr-Jun, etc.)
- K-9 Forum tab shows topics, resolved %, unanswered %, top themes with 3-month trends and NEW ↑ badges, top contributors
- Theme count that more than doubles vs. the start of the 3-month window renders in red
- SUMO tables show MoM deltas and 3-month trends
Step 7 — Commit and push
Stage only report files — never the raw CSV exports:
GIT_COMMITTER_EMAIL="lisajill@users.noreply.github.com" GIT_COMMITTER_NAME="Moment" \
git commit --author="Moment <lisajill@users.noreply.github.com>" \
-m "Add $month $year support report" \
data/$month_$year.yaml reports/monthly/$year/$month.md reports/monthly/$year/$month.html \
reports/monthly/$year/$month.csv data/history.json index.md
git push
Verify live at: https://thunderbird.github.io/thunderbird-support-reports/reports/monthly/$year/$month.html
Key links
- MoM spreadsheet: internal "Support Metrics MoM" Google Sheet (access-controlled; link kept out of this public repo)
- FeatureOS board: https://ideas.tb.pro
- Roland's reports: https://thunderbird.github.io/thunderbird-metrics-and-reports/
- K-9 Forum: https://forum.k9mail.app/c/support/5
- Published reports: https://thunderbird.github.io/thunderbird-support-reports/