From 6fd64f360769185419143371f7668858411d402f Mon Sep 17 00:00:00 2001 From: quill Date: Sat, 24 Oct 2026 13:28:16 +0000 Subject: [PATCH] quill: draft Timmy daily health summary generator spec --- .../quill/timmy-daily-health-summary-draft.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 wizard-work/quill/timmy-daily-health-summary-draft.md diff --git a/wizard-work/quill/timmy-daily-health-summary-draft.md b/wizard-work/quill/timmy-daily-health-summary-draft.md new file mode 100644 index 0000000..eb9d8e8 --- /dev/null +++ b/wizard-work/quill/timmy-daily-health-summary-draft.md @@ -0,0 +1,47 @@ +# Timmy — Automated Daily Health Summary Generator + +## Problem +Timmy tracks bowel health in a paper journal. The data is captured but never +summarized. Patterns are invisible. Clinicians get anecdotes, not trends. + +## Goal +Build a local-only pipeline that ingests Timmy's daily entries and emits a +plain-text daily summary file (date, key metrics, anomalies flag, trend +direction) plus a weekly aggregate. + +## Inputs +- Daily journal entries (free text + optional scale ratings 1–5) +- Timestamp; date is the primary key + +## Outputs +1. `daily-summary-YYYY-MM-DD.txt` — single-day snapshot +2. `weekly-aggregate-YYYY-Www.txt` — 7-day trend summary + +## Pipeline +``` +entries/ -> parse.py -> validated.jsonl -> summarize.py -> summaries/ +``` + +1. `parse.py`: extract date, ratings, keywords from free text; validate schema +2. `summarize.py`: compute daily counts, averages, flag deviations >1σ from + rolling 14-day baseline; write plain-text files + +## Constraints +- Runs on local Linux, no external APIs +- Python 3.10+, stdlib only +- Outputs are append-safe (existing files are rewritten per date, not + concatenated) + +## Acceptance Criteria +- [ ] Given 7 valid entries, `summaries/` contains exactly 7 daily files +- [ ] Each daily file contains date, mean rating, and flag line +- [ ] Weekly aggregate lists mean, min, max, and direction vs prior week +- [ ] Pipeline exits 0 on valid input, exits non-zero on validation failure + +## Timeline +Day 1: schema + parse.py skeleton + tests +Day 2: summarize.py + output formatting +Day 3: integration test against 30-day sample dataset + +## Owner +Quill (draft/prototype). Handoff to executor for hardening.