Start

Check-ins

A check-in is a short message in the standup room or in a direct message with the bot. Everything else in InRoots is derived from it.

The format

A sign-in has a section for what you did since the last working day, a section for what you plan today, and a line for blockers. Header spellings are flexible: Yesterday, Last-sign, Sign-in, Check-in and their variants are all accepted; Today and Tod; Issues, Blockers, Problems, Challenges or Help.

  • NPs, none, nothing or similar on the Issues line means no blocker. Anything else opens a blocker with its own clock.
  • Bullet and emoji prefixes from rich chat clients are tolerated; indented continuation lines belong to the item above them.
  • Admins choose whether the Issues line and a location tag are mandatory (signin.require_issues_line, signin.require_location_tag).
Yesterday:
- refined the card components
- organised the data-centre section
Today:
- continue the storage section
Issues: NPs

Sign-off and quick sign-in

Sign-off is a single message. The keyword is configurable and fuzzy: sign off, signoff, signing off, signed off, sign out, clock out and checkout all work, and a one-character typo such as sign-of or sing off is accepted. A two-character slip is not guessed at; the bot asks whether you meant sign-off. Ordinary words that merely look similar (sign it, signal, resign) are never treated as attendance.

  • A sign-off after midnight closes the day it belongs to, as long as no new sign-in has happened and the shift stays under 18 hours (attendance.max_retro_session_hours).
  • Signing in again after a sign-off reopens the day; a day left open that way costs half the missed-sign-off deduction, not the full one.
  • If the bot cannot decrypt a message from a tracked person it retries, then tells the sender the message did not register and should be re-sent. A sign-off with no sign-in that day gets a heads-up in the room acknowledgement.
sign off
sign in @office
sign in @home

What is extracted

When the structured parser cannot make sense of a message that still looks like a standup attempt, the AI fallback parser extracts the same fields from free text. It is a non-essential call, so it is subject to the daily AI budget and degrades to the plain parser when the budget is spent.

  • Sign-in and sign-off times in your own timezone, and the hours between them.
  • Each line under Today becomes a task; each line under Yesterday closes one.
  • The Issues line becomes a blocker with an owner and an opened-at time.
  • A location tag (@office, @home) when present; otherwise the network is classified on-host if location is enabled and consented.
  • A progress-quality score for the day: specific, well-broken tasks score high; vague items (continue, ongoing, stuff) earn almost nothing; coordination items (meeting with X) earn a small capped credit; the same tasks repeating day after day are penalised.

Task lifecycle

You never type close. A task only stays open while you keep listing it. Tasks open two or more days get one nudge a day at 09:30 covering all of them, never on a day off, never more than one proactive message per person per day, and not again for three days.

Activelisted under Today, in progress
Blockedexplicitly marked blocked
Stalledthe same text two or more consecutive days without completion
Repeatedthe same text three or more days in the window
Completedlisted once under Yesterday and dropped from Today; counts toward Progress
Auto-closedsimply stopped being mentioned; closed on the next standup that omits it and never counted as a completion

Strikes

Format strikes are a hygiene nudge and are capped so they can never dominate a score. Attendance strikes (a genuine no-show or missed sign-off on a working day) carry the real weight. Strikes use a three-step ladder.

  • A late sign-in asks for a reason. A valid circumstance (medical, family emergency, transit, outage) waives the late mark; the reason is judged by the strongest model configured, and a classifier outage can never produce a strike.
  • Replying np keeps the late mark and adds no strike. Answering a presence check instead of the reason is never mistaken for an excuse.
  • Admins can forgive one strike or all of them from the employee card; the scorer also waives strikes on days later excused by leave or a holiday.
1 of 3a one-time pass, explained in a direct message
2 of 3last warning
3 of 3an admin is notified

Machine-written standups

A fast heuristic estimates whether a standup was generated by an AI assistant from its vocabulary and phrasing; only when the heuristic is high does the product ask the configured model for a second opinion. The combined score is stored on the check-in and used to decide whether to ask the person for specifics. Nothing is rejected automatically.