Daily Digests & Triage
1. What? — Definition and context
Section titled “1. What? — Definition and context”Running a solo project with dozens of GitHub issues and as many Odoo tasks feels like permanent juggling: which issue is urgent? Which project is moving? How many hours this week? Rather than burning 20 minutes every morning sorting things by hand, five workflows take care of it in cascade.
The 5 workflows
Section titled “The 5 workflows”| Workflow | Trigger | Role |
|---|---|---|
| Daily GitHub Triage (25n) | 07:30 + /triage | Sync issues, deadline-based promotion, AI triage |
| Daily Todo Digest (24n) | 08:00 + /todo | Paginated summary of tasks per horizon |
| Project Progress Reporter (8n) | Sunday 10:00 | Weekly per-project review |
| Estimation Coverage Weekly (9n) | Monday 09:00 | Estimation quality tracking |
| Triage Interactive API (13n) | Session-start hook | Interactive triage from inside Claude Code |
The morning sequence is orchestrated: triage at 07:30 (classifies issues), digest at 08:00 (renders the result). The digest builds on what the triage already sorted.
Big picture
Section titled “Big picture”2. Why? — Stakes and motivations
Section titled “2. Why? — Stakes and motivations”Problems solved
Section titled “Problems solved”| Problem | Without digests | With digests |
|---|---|---|
| Forgotten issues | GitHub issue created, never triaged | Auto sync + AI triage |
| No priority | Everything is “to do” with no horizon | Bucketing by urgency |
| Project visibility | Open Odoo for every project | Pushed weekly summary |
| Tedious triage | 20 min every morning in the UI | Automatic, AI + deadline |
Why two-level triage?
Section titled “Why two-level triage?”Triage operates on two independent dimensions:
| Dimension | Question | Values |
|---|---|---|
| Project stage | Where is this task? | Backlog, To Do, In Progress, In Review, Blocked |
| Personal horizon | When should I work on it? | Today, Tomorrow, This week, This month, Later |
The AI suggests both. Deadlines can promote the horizon automatically (a task at D-2 jumps to “Today”), but never demote it.
3. How? — Technical implementation
Section titled “3. How? — Technical implementation”Daily GitHub Triage
Section titled “Daily GitHub Triage”The workflow runs in three phases:
Phase 1 — Sync: pulls open issues from the GitHub API and creates the missing Odoo tasks (project, labels, milestone, HTML description).
Phase 2 — Promotion: walks existing tasks and tunes the personal horizon based on deadlines:
| Deadline | Promote to |
|---|---|
| Past due | Today |
| Within 7 days | This week |
| Within 30 days | This month |
| Further out | No change |
Phase 3 — AI triage: untriaged tasks are sent in batches of 10 to Claude (codex-yolo model) which suggests a project stage and a personal horizon for each. Results are written back to Odoo and cached.
The output digest summarises the actions: “3 issues created, 5 promoted, 8 AI-triaged”.
Daily Todo Digest
Section titled “Daily Todo Digest”Arriving at 08:00 (or via /todo in Telegram), this digest displays tasks by urgency. Each task earns a composite score:
| Signal | Points |
|---|---|
| High priority | +20 |
| Days overdue | x3 (cap 30) |
| Deadline within 3 days | +15 |
| Stale (14+ days no activity) | +10 |
| Recent Claude session (less than 3 days) | +5 |
| Age (1 point/day, cap 15) | +1 to +15 |
Tasks are then split into pages:
- Page 0: urgent summary (blocked, overdue, today)
- Page 1: breakdown by horizon (Today, Tomorrow, This week, This month)
- Pages 2+: untriaged tasks
In Telegram mode, pagination is handled by inline buttons. Each click re-queries Odoo (no cache) for fresh data.
Project Progress Reporter
Section titled “Project Progress Reporter”Every Sunday at 10 AM, a per-project review is generated:
- Number of tasks per stage (In Progress, Done)
- Timesheet hours for the week
- Claude Code metrics (sessions, cost, lines changed)
- Inactive projects are excluded
Estimation Coverage Weekly
Section titled “Estimation Coverage Weekly”This workflow watches a precise goal: hit 30 “matched samples” (tasks with both a manual estimate AND real timesheets) to unlock Phase 2 of the Effort Estimator. Every Monday it shows the progress and the delta versus the previous week.
Interactive triage
Section titled “Interactive triage”When a Claude Code session starts, a hook checks whether there are untriaged tasks. If so, it offers an interactive triage through AskUserQuestion — straight in the terminal, without leaving Claude Code. The choices are pushed to N8N which updates Odoo.
4. What if? — Outlook and limits
Section titled “4. What if? — Outlook and limits”Current limits
Section titled “Current limits”| Limit | Impact | Mitigation |
|---|---|---|
| AI cache fixed at 7 days | No invalidation if the Odoo deadline changes | Invalidation on GitHub events only |
| Single user | No triage delegation | Sufficient for solo use |
| Pagination zero-state | Re-query Odoo on every page | Fresh data but slower |
Evolution scenarios
Section titled “Evolution scenarios”If a team is involved:
- Round-robin triage with assignment
- Per-role digest (dev, PM, ops)
- Targeted notification of blocked tasks
If task volume explodes:
- Group by project in the digest
- Filter by tag or milestone
- Add a “focus” mode that shows only the day
Related pages
Section titled “Related pages”Infrastructure
Section titled “Infrastructure”- Odoo 18 on Docker — Tasks backend
- Monitoring Stack — Prometheus for metrics
Workflows
Section titled “Workflows”- Notification Hub — Digest routing
- GitHub-Odoo Sync — Initial synchronisation
- Claude Code Telemetry — Claude metrics on tasks
Reference
Section titled “Reference”- Glossary — Triage, personal horizon