Skip to content

Reporting ​

Reporting decides what comes back from the work Kadmo does for you. It has two parts: Agent reports, the shape of the report each agent step writes on the ticket and the pull request, and Kadmo's notices, what Kadmo itself writes back when work starts, needs someone and is done: on the ticket, in Slack, in Microsoft Teams and by e-mail. Both are set once for the account; a workflow, a playbook and a playbook step can set their own.

Nothing changes until someone changes it. An account that never opens the page keeps exactly the reports and notices it had: the defaults below are that behaviour, written down.

Where it is ​

Open Settings → Task setup → Reporting (app.kadmo.ai/tasks/reporting). It is the last of the five Task setup tabs: Issue type routing, Run configuration, Task statuses, Validation and Reporting.

  • Every member can read the page. Only admins can change it; members see Only admins can change how agents report. and Only admins can change Kadmo's notices.
  • There is no Save button. Every control saves as you change it, and the status line under the section reads Saving..., then Saved. A change the server refuses puts the controls back and shows why.
  • Only what differs from the defaults is stored. Picking a default again stores nothing.

Agent reports ​

The shape of every agent's report, for the whole account. A playbook step can set its own on its card. It shapes the report of every agent step of a playbook run. The step's verdict, which the gate reads, is never changed by it.

Report shape ​

Four cards, under Report shape:

CardWhat the step leaves
Readable comment (default)One comment on the ticket that a person reads top to bottom.
Comment + report fileA short comment that links the full report, published as a Markdown file.
BothThe readable comment, and the full report as a file beside it.
QuietNothing on the ticket: the report and its verdict stay on the run page.

The details ​

ControlOptionsDefault
Comment length150 characters, 400 characters, 800 characters, No capNo cap
LanguageThe ticket's, English, DeutschThe ticket's
LinksPublic (share links that open without signing in), Sign-in (links into the app)Public
Pull request descriptionStandard, Reviewer note (what to read first, the risk, how to test)Standard
Follow-up workSuggests on the PR, Files tickets (one ticket per follow-up, linked in the comment)Suggests on the PR

The length counts prose only: links, the report link and the verdict line do not count.

The report preview ​

Under Preview, the shape you chose is drawn from sample content, with a tab for each kind of step: Plan, Implement, Review (FAIL) and Pull request. It redraws on every change and shows the comment, the report file and the pull request description as they would look. A comment cut by the length reads Shortened to the comment length.

What Quiet means ​

With Quiet, the agent posts nothing on the ticket. It hands its report to Kadmo, and the report and its verdict stay on the run page. The gate reads that recorded verdict first, before it looks at the ticket, so a quiet step moves the run on as a comment would, on a ticketless run too. If the agent has no way to hand the report over, it posts the comment after all, so a step never stalls for want of evidence.

Quiet silences the agents' reports only. Kadmo's own notices, such as the comment when a run stops, are set in Kadmo's notices.

What the agent is told ​

What the agent is told shows the instruction your choices add to each agent step. On the defaults it reads Nothing: on today's behaviour no instruction is added, and each step's prompt decides the report. Otherwise it is a short block with one line per choice that differs from the default, for example Comment + report file with 400 characters:

text
REPORTING: the account's report policy. It shapes the body only; the prompt's sections, links and verdict line stay as written.
- Report: publish the full report as a Markdown file with publish_artifact, cite it as "Report: <link>" and keep the comment a short summary.
- Comment length: at most 400 characters of prose; links, the Report line and the verdict line don't count.

The block is at most 700 characters (the page counts them) and goes ahead of the operator's hint on every agent step. It names no verdict, so it can never change what a gate reads.

A playbook step can set its own shape: see A playbook step's report shape.

Kadmo's notices ​

What Kadmo writes back on its own when work starts, needs someone and is done. These are Kadmo's messages, not the agents' reports: the acknowledgement of a request, a question, the comment when a run stops, the result, a goal's message to its owner.

Presets ​

Three cards, under What Kadmo writes back. Each fills the whole matrix below:

CardOn the cardIn the matrix
StandardWhat Kadmo writes back today: an acknowledgement, a question when it needs someone, the result.Every cell follows the defaults. This is the account's state until someone changes it.
Only when neededNothing when work starts or ends; a comment, a DM and an e-mail with a mention when someone is needed.Started and Done: nothing anywhere. Needs you: a comment on the ticket, a Slack DM, a reply in Teams and an e-mail, with Mention the person on.
SilentNothing anywhere. Everything stays in Kadmo.Every cell is Nothing.

Picking a card replaces the whole matrix. When the matrix matches none of them, no card is marked and the page reads Custom: the matrix below differs from every preset.

The matrix ​

The matrix has a row per moment and a column per destination:

RowWhen
StartedThe work starts: a request is taken, a run or a job starts.
Needs youSomeone has to act: a request asks a question, a run stops at a gate or is stopped, a goal needs its owner.
DoneThe work ends, however it ended.

The columns are Ticket, Slack, Teams and E-mail. The last column, Mention the person, has a checkbox per row: whether that moment's messages mention the person they are for (who asked for the work, or the goal's owner). E-mail has no Started cell.

Each cell is a button that names what Kadmo does there (Comment, Reply + reaction, Field + reassign, Nothing). Click it to open its picker and tick the ways, with each way's details under it. Done keeps them; Nothing clears the cell. A cell holds at most three ways. A cell you changed is tinted and carries a dot.

Each cell is what Kadmo does there. A cell you leave alone keeps today's behaviour for Runs and jobs, Requests or Goals: the switch beside that sentence chooses which kind of work the untouched cells show. It changes only what you see. A cell you set applies to every kind of work: set Needs you · Ticket to Nothing, and neither a stopped run nor a request's question is written on the ticket.

The ways ​

What each cell can hold. Each way is named as the picker shows it; — means the cell does not offer it.

DestinationWayStartedNeeds youDone
TicketComment on the ticketYesYesYes
TicketAssign the ticket / Reassign the ticketTo KadmoTo The requesterTo The requester, The previous assignee or Unassigned
TicketSet a field: a field and its value, or Clear the fieldYesYesYes
TicketAdd or remove labels: up to 10 to add and 10 to remove, separated by spacesYesYesYes
SlackReply in the threadYesYesYes
Slack👀 on the asking message / ✅ on the asking message👀—✅
SlackDirect message to the person—YesYes
SlackPost in a channel—YesYes
TeamsReply in the chatYesYesYes
TeamsDirect message to the person—YesYes
E-mailE-mail the person—YesYes
  • Assign at Started hands the ticket to Kadmo's identity on the tracker; at Needs you and Done it hands it back. A Done waits until the Started notices have landed, so the ticket goes back to whoever had it.
  • Set a field offers the fields Kadmo can set on your tracker (see Fields and labels); a field with a fixed set of values offers them as a list. With no list of fields, you type the Field id, for example customfield_10042.
  • Post in a channel lists the Slack channels the Kadmo app is in. Until the app has the scopes to list them, the page says To pick a channel from a list, add the channels:read and groups:read scopes to the Slack app and reinstall it; until then a channel is typed by its name. A channel the app is not in is flagged: Kadmo isn't in #releases — invite the app, or it is skipped.
  • Assigning, fields and labels work on Jira. On another tracker the ticket offers the comment only, and the page says Assigning, setting a field and labels work on Jira for now; on this tracker the ticket gets a comment or nothing.

Fields and labels ​

On Jira, the Fields and labels disclosure says where the fields come from, for example Fields come from the edit screens of ENG: 12 can be set, and 40 labels are known. The fields are read from the edit screens of the projects your workspaces are linked to; the known labels are offered as you type.

MessageMeaning
No workspace is linked to a project yet, so no field can be offered.Link a project on a workspace's Work intake card: Tracker routing.
ENG has no issue yet, so its edit screen could not be read.Create one issue in the project, then reload the page.
The tracker did not answer in time (…); a field can still be typed by its id.Reload later, or type the field's id.
No longer on the site, skipped when Kadmo writes back: …A field the settings name is gone from Jira. Pick another, or clear the way.

A field that is not on a ticket's own edit screen is skipped for that ticket.

The notice preview ​

Under Preview, pick a moment (Started, Needs you, Done) and a destination (Ticket, Slack, Teams, E-mail) to see that cell as it would post: the message, drawn the way Kadmo renders it, and one line for every way that changes something instead of posting (Assignee → Kadmo, for example). A cell set to nothing reads Nothing is written here at this moment., and a cell that does not exist reads Not offered at this moment. Moving through the matrix previews the cell you are on.

Defaults per kind of work ​

What each kind of work gets while a cell is untouched: the Standard preset.

Kind of workStartedNeeds youDoneMention the person
Runs and jobsNothingA comment on the ticket: the run's halt or stop commentNothingOff
Requests (a Jira comment or label, a Slack message, a Teams chat)A comment on the ticket; in Slack a reply in the thread and 👀 on the asking message; a reply in TeamsA comment on the ticket; a reply in Slack; a reply in TeamsA comment on the ticket; a reply in Slack; a reply in TeamsOn
GoalsNothingA Slack DM, a Teams DM and an e-mail to the ownerA Slack DM, a Teams DM and an e-mail to the ownerOff

What a request's replies say is on The replies; a goal's messages are on The owner.

What applies today ​

Every cell can be set, but not every destination is wired for every kind of work yet. What Kadmo actually sends:

Kind of workTicketSlackTeamsE-mail
Runs and jobsOn a Jira issue: a run's Needs you (the halt comment, the default), and Started and Done once their cells are set (defaults: nothing)Not sent yetNot sent yetNot sent yet
Requests from a Jira ticketEvery momentThe requester's DM and a named channel (there is no Slack thread to reply in)Not sentNot sent
Requests from Slack—Every way: the thread, the reactions, the requester's DM and a named channel—Not sent
Requests from Teams——The reply, in the chat the request came from (a DM is that same chat); a job's result as the chat follow-upNot sent
Goals—The owner's DM, and a named channelThe owner's DMThe owner's e-mail
  • Runs and jobs are told on Jira issues only. On a Linear issue, a Notion card or an internal task, Kadmo posts none of its own notices for them, the halt comment included; the agents' step reports are not affected.
  • Started and Done are told for a playbook run and for a job that is not a run's step; a workflow dispatch that never became a job gets its Done.
  • A playbook run started from Teams gets no result message in the chat; a workflow job started from Teams gets the chat follow-up.

Overrides ​

A workflow and a playbook can set their own notices, and a playbook step its own report shape. Each starts out following the account, and a chip says so: Account default ▾ while nothing is changed, Custom · 2 changes with Reset once something is. Reset follows the account again. Only admins change an override; members can open it and read it. A seeded playbook is read-only, so its steps follow the account's report shape.

A workflow's notices ​

On a workflow's page, the header carries Reporting: and the chip. It opens Reporting: What Kadmo writes back on its own for this workflow's runs. A cell left alone follows the account's (Task setup › Reporting); a changed cell is marked, and Reset follows the account again. Below it is the same matrix, saved as you change it.

In the workflow list, each agent workflow shows the account's report shape as a chip that links here, and each workflow shows Notices with Account default or Custom · N, linking the workflow's page.

A playbook's notices ​

In the playbook editor, Playbook settings has a Reporting field with the chip: What is written back on the ticket and in Slack when this playbook's runs start, need someone and are done. The chip opens the Reporting panel under the canvas, with the matrix. A cell left alone follows the account's, or a workflow's own where one of its steps' workflows sets it; a cell set here wins over both. Each change saves at once, apart from Save playbook. A new playbook gets the field once it is saved.

A workflow's or a playbook's notices apply to its runs and jobs, and to the requests that start it. A goal's messages never read them.

A playbook step's report shape ​

In the playbook editor, an agent step has a Reporting field: a button reading Reporting: Account default ▾, or Reporting: Custom · 2 changes ▾ with Reset. It opens six pickers, one per agent-report control (Report shape, Comment length, Language, Links, Pull request description, Follow-up work). Each picker's first option is the account's choice, such as Account default (Readable comment): Each key follows the account's choice (Task setup › Reporting) until the step picks its own. The step's choices are saved with Save playbook.

Which setting wins ​

For a notice, each scope's cell replaces the one before it, a cell set to nothing included:

  1. The default for the kind of work (Defaults per kind of work)
  2. The account's cell (this page)
  3. The workflow's cell
  4. The playbook's cell
  5. The person's own choice for their DM and e-mail (My notifications)

Mention the person follows the same order, without the last step. For an agent report, each control resolves on its own: the step's choice, else the account's, else the default.

My notifications ​

Settings → My notifications (app.kadmo.ai/settings?tab=notifications) is each member's own: What reaches you directly when something needs you and when it is done. Today these come for the goals you own. A cell follows your account's choice until you pick one.

  • The matrix has two rows, Needs you and Done, and three columns, Slack DM, Teams DM and E-mail. Each cell is on or Nothing.
  • Under it, a line per cell says where it stands: Account default: on, Your choice: off.
  • A pick that matches the account's stores nothing, so the cell keeps following the account. Follow the account for all clears your choices.
  • Your choice decides only your own DM or e-mail. It never changes a ticket, a thread, a channel or anyone else's messages.
  • It applies wherever a message would reach you alone: a goal you own, and a request you asked when the account sends requests a DM.

Every member sees the tab, whatever their role. Changes save at once.

How a notice is delivered ​

  • A run's Needs you waits two minutes. A run's halt comment is held for two minutes, then checked again before it goes, and is dropped if the run moved on in that window: resumed, re-run, overridden, ended, or past the step it stopped at. An operator's stop (cancel or mark as done) goes at once.
  • Started and Done follow a minute later. A run's or a job's Started and Done are decided about a minute after they happen. One that is more than two hours old by then, after an outage for example, is not told.
  • One voice per ticket. A run or a job that a Jira request on the same ticket started is told by the request: its Started and Done are not written a second time. Its halt comment is still the run's own.
  • A request's result is written only when a Done way writes text. Kadmo summarises the result on the account's AI provider only when a Done way posts words: a comment, a reply, a DM, a channel post or an e-mail. A Done that only assigns, sets a field, labels, reacts or is set to nothing spends nothing. With no provider, or when the call fails, the result is the facts alone: what ended and how. See What it costs.
  • A Slack message is updated, not repeated. When a moment is handled, its Slack message is edited once to its handled form, such as ✔ Answered or ✔ Done, with no button and no mention; the edit notifies nobody. Teams and e-mail messages are not edited.
  • A DM finds the person. A Slack DM goes to the person's linked Slack user (see People), else to the Slack user with their e-mail address. A Teams DM and an e-mail go to their address.
  • Retries. A notice that fails to post is tried again, up to five times in all; a request's replies (not its result) and a goal's messages are tried once, as they happen. A notice that may have landed is never sent again.

A run's page shows what became of its halt or stop notice in the Activity feed, under Ticket:

RowChipMeaning
Ticket notice queuedQueuedit goes the ways the notice settings say, within a few minutes
Ticket notifiedNotifiedThe notice went; View comment ↗ opens the comment.
Ticket not notifiedSilentthe notice settings say nothing on the ticket at this moment
Ticket notice not neededSkippedthe run moved on before the notice went
Ticket notice not deliveredNot sentNobody watching the ticket was told: no tracker credentials, no tracker issue, a Linear project run, a ticket that cannot take the ways as set, or the tracker refused the comment.

What a run writes on the ticket ​

A playbook run reports on its ticket as it goes, in the tracker the ticket lives in. The agents write their step reports; Kadmo moves the status and adds its own notices.

MomentOn the ticketSet by
A step startsThe ticket moves to that step's status, when the run's status sync is onThe playbook and the run's status sync (The editor)
A step finishesThe agent's report: one readable comment by default, a short comment with a report file, or nothing when Quiet. It carries the step's verdict, which the gate reads.Agent reports
The run stops and needs youKadmo's halt comment, about two minutes later and only if the run is still stopped: ⏸ Kadmo — run #N is paused at …, with why, what to do next and the link to the run. An operator's stop posts ⏹ Kadmo — run #N was cancelled … (or was marked as done) at once.Kadmo's notices, Needs you (default: the comment)
The run starts, the run endsNothing by default. When a cell is set: Bug Fix started; at the end Bug Fix resolved, ended without action, was handed to a person, failed, was cancelled or was sent back for rework, with each step's verdictKadmo's notices, Started and Done
The run resolvesThe ticket moves to the tracker's done stateThe playbook

A workflow job outside a playbook is told the same way when its cells are set: QA Pass started, then completed, failed or was cancelled with its pull requests, and never started for a dispatch that never became a job. A run started by a Jira request is told by the request's own replies (The replies).

Kadmo's own notices are posted on Jira issues (What applies today). How each tracker matches a status, and what counts as done there, is on its page: Jira, Linear, Notion.

Troubleshooting ​

SymptomCause and fix
The controls are greyed outOnly admins change Reporting; members read it.
A run stopped, but no comment cameThe halt comment arrives about two minutes after the stop, and not at all if the run moved on in that window. Check the run's Activity feed under Ticket: Silent means the Needs you ticket cell is set to nothing, Not sent says what failed. On Linear, Notion and internal tasks Kadmo posts no notice for runs.
A run a Jira request started has no Started or Done notice of its ownBy design: a run a Jira request started is told by the request, once.
Nothing can be started from TeamsThe Teams Needs you cell is set to nothing, for example by Silent. The Approve card is a Needs you reply, and only Approve starts work from Teams. Turn Reply in the chat or Direct message to the person back on for Needs you.
A request gets no question, menu or refusalThe Needs you cell of the place it was asked is set to nothing. The request still goes ahead when Kadmo can start it at once, but anything that needs an answer, Confirm before starting included, is never seen.
Slack, Teams or e-mail cells for runs do nothingNot sent yet: runs and jobs are told on the ticket only (What applies today).
A channel post never arrivesKadmo isn't in #… — invite the app, or it is skipped. Invite the Kadmo app to the channel.
A field way did nothing on one ticketThe field is not on that issue's edit screen, or it left the site (No longer on the site, skipped when Kadmo writes back).
Only Comment on the ticket is offeredThe account's tracker is not Jira, no tracker is connected, or the connection could not be read when the page loaded.
A step posted no commentIts report shape is Quiet, on the account or on the step. The report and the verdict are on the run page.
A DM did not reach a memberTheir own My notifications choice turned it off, or no Slack user matches them: link their Slack user under People. Stop all alerts in a goal's e-mail stops the goals' DMs to them too.