How activity, hours, and ratings are computed — fully transparent.
Every few hours (and on demand via Sync) we read the Tournated-com GitHub org and record, per person per day: commits across all branches (including unmerged WIP), lines added/removed, repos touched, tickets referenced in messages (DEV-123), and open PRs. Bots and AI co-author commits are excluded; secondary GitHub accounts are merged to one person.
/wrap in Slack adds the human layer on top: self-reported hours, calls/meetings, and an auto-generated summary. Nobody has to submit for us to see their work — submissions just enrich it.
Each commit is classified from its message, then scored as base + cappedLines ÷ divisor. It's a fixed formula — the same commits always produce the same number (no AI, no randomness).
| Commit type | Base + lines | Why |
|---|---|---|
feature | 0.50h + L/900 | building is denser; lines carry signal |
fix | 0.45h + L/1400 | debugging time isn't in the line count |
refactor | 0.30h + L/1600 | big but mechanical — lines discounted |
migration | 0.20h + L/3000 | largely generated — hard discount |
test | 0.25h + L/1200 | |
docs / chore | 0.15h + L/2000+ | config, deps, docs — small |
trivial | 0.05h | merges, reverts, version bumps — near free |
L = additions + 0.25×deletions) so generated files, migrations and lockfiles can't inflate effort.It's a floor on active coding from commit evidence — it can't see debugging that left no commit, meetings, reviews or research. Best used to compare people consistently and sanity-check self-reported hours, not as payroll-exact truth.
Effort hours = self-logged where someone ran /wrap that day, otherwise the estimate. So it blends real reported time with estimates for the gaps.
Activity score (0–100), normalised to the period's leader:
A red Logged value flags when self-reported hours exceed estimated effort by >50% — worth a look.
Role (Frontend / Backend / Fullstack / Mobile) and the product split (Backend, Web Client, Manager, Admin, Mobile, Auth Portal…) are derived deterministically from which repos a person committed to.
The AI rating (0–100) on a profile is the one place we use a model — it judges the quality/impact of the work from commit messages (feature vs fix vs chore, breadth, consistency). It rates work, not hours.