Problem
For monthly invoicing, I need to break down the logged hours per month across a configurable set of Jira project keys. Different invoice recipients map to different project-key sets, so the grouping is not static — it needs to be configurable per use case (e.g. one customer maps to projects PROJ1, PROJ2, PROJ3, another customer maps to PROJ4).
Today this requires manual filtering and summing across budjira tempo outputs.
Proposal
1. Configurable groupings
Allow named groupings to be defined in configuration (e.g. connections.toml or a new [groupings] section), mapping a label to a list of project keys:
[groupings.customer-a]
projects = ["PROJ1", "PROJ2", "PROJ3"]
[groupings.customer-b]
projects = ["PROJ4"]
A grouping should reference a single connection (or be derivable from one), so the project keys are resolved against the right Jira instance.
2. Summary command
A new command — e.g. budjira tempo summary <YYYY-MM> --grouping <name> — that prints the breakdown:
$ budjira tempo summary 2026-04 --grouping customer-a
Group customer-a
PROJ1 42.5 h
PROJ2 30.0 h
PROJ3 15.0 h
-----
Total 87.5 h
Optional flags:
--all-groupings — print every configured grouping side-by-side
--format json|csv|table — for downstream tooling
--user <accountId> — restrict to a specific user (default: self)
3. Out of scope (for this ticket)
Direct invoice generation in an external billing tool (e.g. Spiris) is desirable but is a separate, larger piece of work. This ticket is only about producing the breakdown that an invoice can then be built from.
Why this matters
Monthly invoicing is a recurring task. Having budjira output the canonical numbers — grouped exactly the way the invoice needs them — removes a manual reconciliation step and makes the source of truth explicit (configured groupings) instead of implicit (whatever I happened to filter for that month).
Problem
For monthly invoicing, I need to break down the logged hours per month across a configurable set of Jira project keys. Different invoice recipients map to different project-key sets, so the grouping is not static — it needs to be configurable per use case (e.g. one customer maps to projects
PROJ1, PROJ2, PROJ3, another customer maps toPROJ4).Today this requires manual filtering and summing across
budjira tempooutputs.Proposal
1. Configurable groupings
Allow named groupings to be defined in configuration (e.g.
connections.tomlor a new[groupings]section), mapping a label to a list of project keys:A grouping should reference a single connection (or be derivable from one), so the project keys are resolved against the right Jira instance.
2. Summary command
A new command — e.g.
budjira tempo summary <YYYY-MM> --grouping <name>— that prints the breakdown:Optional flags:
--all-groupings— print every configured grouping side-by-side--format json|csv|table— for downstream tooling--user <accountId>— restrict to a specific user (default: self)3. Out of scope (for this ticket)
Direct invoice generation in an external billing tool (e.g. Spiris) is desirable but is a separate, larger piece of work. This ticket is only about producing the breakdown that an invoice can then be built from.
Why this matters
Monthly invoicing is a recurring task. Having budjira output the canonical numbers — grouped exactly the way the invoice needs them — removes a manual reconciliation step and makes the source of truth explicit (configured groupings) instead of implicit (whatever I happened to filter for that month).