How it works

One minute a day.

Employees post the way they already do, in chat. InRoots does the rest, in your language, on your infrastructure. This page shows each step in enough detail to judge it.

1. Post or speak

A check-in is a short message in K9 Chat, Slack or Microsoft Teams, or a sentence spoken to the assistant. The structured form looks like this:

Yesterday:
- Fixed the invoice export for large accounts
- Reviewed 2 PRs
Today:
- Migrate staging certificates
Issues: blocked on the PDF renderer licence

What the parser extracts

The structured parser reads the headings; when a message does not fit, a language model extracts the same fields from free text. Typos are forgiven.

YesterdayCompleted work; each item becomes a closed task and counts toward Progress
TodayPlanned work; a task stays open only while you keep listing it
IssuesThe blocker, if any; starts the SLA timer and the routing chain
Sign-in / sign-offTime and status; fuzzy keywords, a small-hours sign-off closes the day it belongs to
LocationOffice, home or on the go, only for people who consented, classified on-host

2. The AI reads and verifies

Named tasks are cross-checked against Jira, GitHub and GitLab activity. Presence is confirmed with a consented ping answered by any short reply; a reply is never rejected, only classified by device and network on-host, and an impossibly fast reply is not counted. Coordination items ("meeting with X") earn a small capped credit; vague items earn none, and the report lists exactly which ones and why.

Days beyond a ceiling (12 hours by default) are capped and placed in a review queue with the evidence: sign-in, sign-off, messages sent, pings answered. A person confirms or rejects; the decision is logged.

3. Goals and coaching

Personal objectives get automatic follow-ups. A task open two or more days gets one "need help?" message a day, never on a day off, and at most one proactive message per person per day. Below-target goals trigger a coaching nudge to the person first, then the lead.

Recommendations come from a rule engine that reads the period's pillars, the person's own task log and their role catalogue. Each carries its evidence: "12 of 30 pings were late replies", "3 items earned no progress credit". An optional AI pass may re-word the text but never adds or removes a recommendation.

4. One fair score

The score is deterministic arithmetic over the period's signals. Weights are normalised over the pillars that apply, so someone who carries no on-call load is not penalised for it.

  • Per-role profiles shift the weights (sales 45/15/10/10/20, managers 25/25/15/10/25, and nine more), all overridable per team
  • Approved leave, sick days and holidays are excused; a week mostly on leave is drawn as a gap, never as zero
  • Day-off work and genuine overtime are capped additive bonuses; a confirmed integrity red flag caps the score at 50
Progress · 40Completed work, weighted by specificity; coordination capped, vague items excluded
Presence · 25Credited hours against the person's own expected hours, full credit from 97%
Reliability · 15Sign-offs, hand-off before planned leave, punctuality inside a rolling 30-day allowance
Integrity · 10Availability pings answered on time; late replies earn partial credit
Responsibility · 10On-call coverage and ticket ownership; dropped when the person carries none
Manager feedback · ~5, optionalA manager's rating; the pillar drops when nobody rated the person

What is math and what is a model

The score never depends on a model's mood. Parsing free text, writing the weekly narrative, answering Ask AI, routing a question to a bot and the neural decision layer use the model you configure; scoring, coaching rules, SLA timers and leave rules are deterministic code with unit tests. If every provider is down, the structured parser, keyword routing and the score keep working.

Who sees what, and when

  • The employee sees their own scorecard first, and can type "/pulse me" in chat at any time
  • Leads and the team see the same number; weights are public
  • Managers get a weekly digest and a monthly report with a "why" table behind every deduction
  • Employee report copies carry outcomes only; the full version with weights and estimates is marked confidential

What it runs on

  • One container, SQLite or Postgres, self-hosted or hosted by us
  • 448 API routes and 64 scheduled jobs running the workday: reminders, rollups, digests, reconciliation
  • 16 AI providers with an admin-ordered failover chain, including local Ollama for air-gapped installs (with spoken replies off)
  • Matrix-native; Slack and Teams bridged; WhatsApp for on-call reach; SendGrid or any SMTP server for email