report.html — the front end. Open it directly; it’s fully self-contained (no server needed) and seeded with this week’s real edition.generate_report.py — the backend job. Calls Claude with web search once per segment, returns structured JSON, and writes report_data.json + a dated snapshot in /history..github/workflows/weekly-report.yml — runs generate_report.py every Monday and commits the refreshed report_data.json back to the repo.requirements.txt — the one dependency (anthropic).ANTHROPIC_API_KEY with your API key.workflow_dispatch).report_data.json in pending_review status, plus a dated copy in /history so you have a full version trail.report.html wherever you like (GitHub Pages is the easiest zero-cost option) and point it at report_data.json in the same repo — right now it uses embedded demo data, so the one code change left is swapping the embedded SEGMENTS array for a fetch('report_data.json') call.report_data.json always comes out of the automated job as pending_review — nothing is auto-published. The pilot’s approve/reset buttons in report.html currently write that status to the artifact’s own storage as a stand-in; connecting that button to actually update report_data.json (e.g. via a small API endpoint or a second GitHub Action triggered by a repo dispatch event) is the natural next step once you’re happy with synthesis quality.
Before expanding to more reports, the things worth checking over the next few weekly cycles: