Skip to content

Daily Digests & Triage

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.

WorkflowTriggerRole
Daily GitHub Triage (25n)07:30 + /triageSync issues, deadline-based promotion, AI triage
Daily Todo Digest (24n)08:00 + /todoPaginated summary of tasks per horizon
Project Progress Reporter (8n)Sunday 10:00Weekly per-project review
Estimation Coverage Weekly (9n)Monday 09:00Estimation quality tracking
Triage Interactive API (13n)Session-start hookInteractive 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.

07:30 · Daily GitHub Triage

08:00 · Daily Todo Digest

Sunday 10:00 · Project Progress Reporter

Monday 09:00 · Estimation Coverage Weekly

Sync missing GitHub issues → Odoo

Promote stages by deadline

AI Issue Triage · codex-yolo

Bucketing by horizon · stages 07:30

Weekly per-project review

Estimation quality tracking


ProblemWithout digestsWith digests
Forgotten issuesGitHub issue created, never triagedAuto sync + AI triage
No priorityEverything is “to do” with no horizonBucketing by urgency
Project visibilityOpen Odoo for every projectPushed weekly summary
Tedious triage20 min every morning in the UIAutomatic, AI + deadline

Triage operates on two independent dimensions:

DimensionQuestionValues
Project stageWhere is this task?Backlog, To Do, In Progress, In Review, Blocked
Personal horizonWhen 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.


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:

DeadlinePromote to
Past dueToday
Within 7 daysThis week
Within 30 daysThis month
Further outNo 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”.

Arriving at 08:00 (or via /todo in Telegram), this digest displays tasks by urgency. Each task earns a composite score:

SignalPoints
High priority+20
Days overduex3 (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.

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

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.

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.


LimitImpactMitigation
AI cache fixed at 7 daysNo invalidation if the Odoo deadline changesInvalidation on GitHub events only
Single userNo triage delegationSufficient for solo use
Pagination zero-stateRe-query Odoo on every pageFresh data but slower

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