jtriage
Open app
channel triage // slack · discord · teams // powered by typesafe jev

Every thread.
Resolved or not.

Point jtriage at a channel. It reads the last 30 days of threads, judges each one as resolved, answered, unresolved or not a request, sorts them into buckets, and writes the open action items into a folder on your machine. About $0.001 and 1.5 seconds for a 25-thread channel.

#dev-platform // last 30 days25 threads · 2 jev calls · $0.0011 · 1.4 s
resolved28%
open items12
critical · high1 · 9
01Deploys to staging failing with ECONNRESETincident · resolved96%
02How do I run integration tests on local Postgres?question · answered, unconfirmed71%
03Write access to infra-terraform for cost taggingaccess · unresolved93%
04CLI should print estimated cost before a runfeature request · unresolved88%
05Payments webhook consumer 40 min behind (P1)incident · resolved97%
06Keep CSV in export API v2 or go JSON-only?decision · unresolved90%
07Office hours moved to Thursdays 3pmannouncement · no response needed98%
08Export jobs over 2 GB produce an empty filebug · unresolved86%
probability on the chosen statussaved to ~/reports/jtriage-slack-dev-platform-…
per thread4status · bucket · severity · follow-up
threads per jev call≤24one request judges a window of threads
sample channel1.4 s25 threads · 54 messages · 2 calls · $0.0011
stored on the server0tokens, messages and reports
how it works // four stages

Code fetches. Jev judges. Code composes.

The platform API gives us the threads. Jev does not generate text; it answers four narrow questions about each thread with a probability for every option. Code turns those probabilities into counts, a checklist and files. Judgments are calibrated estimates, not measurements, and the report shows the confidence next to each one.

1 · fetchcodehistory and thread replies from the platform API for the window
2 · judgejev · choice, score, noulfour questions per thread, many threads in one call
3 · composecodecounts, action items, suggested owners, four files
4 · savebrowserfive files written into the folder you pick, ready for an agent
the four questions // asked once per thread
  1. statuschoiceWas what the root message asked for resolved within this thread?resolved · answered, unconfirmed · unresolved · no response needed
  2. bucketchoiceWhich bucket best describes what the root message is?bug · question · feature request · incident · access · decision · announcement · discussion · social
  3. severityscoreHow severe is it for the people involved?low · medium · high · critical
  4. follow-upnoulDoes someone still need to do something because of this thread?probability of yes
what leaves your machine // and what does not
tokensent once with the request, forwarded to the platform, discarded
messagesfetched by the server, sent to jev as state, discarded when the response is streamed
judgmentsstreamed back to your browser as they arrive
reportwritten by your browser into a folder you pick, or downloaded
server storagenone: no database, no blob store, no logs of content
jevtypesafe.ai processes the state to answer the questions; see their data terms
privacy

A simple tool. Nothing to leak.

jtriage has no accounts, no database and no shareable links. The browser asks for a folder with the File System Access API and writes five files into it: report.json, report.md, action-items.md, threads.md and HANDOFF.md. Point a coding agent at that folder and it has everything: the items in priority order, the full threads, the permalinks, and instructions for how to work them.

reports/
└── jtriage-slack-dev-platform-2026-09-24/
    ├── HANDOFF.md        how an agent should work the items
    ├── action-items.md   checklist grouped by bucket, most severe first
    ├── report.md         numbers, distributions, one row per thread
    ├── threads.md        every conversation, formatted
    └── report.json       the machine-readable report
faq // 6 questions

Questions.

What does jtriage do?
It reads every thread in a Slack, Discord or Teams channel for the last 30 days (or 7 to 90), asks Jev four questions about each thread, and turns the answers into a report: how many threads were resolved, which buckets the traffic falls into, and a checklist of open action items with a suggested owner and a link back to the thread.
Where does the report go?
Into a folder on your machine. In Chrome or Edge the page asks for a folder with the File System Access API and writes report.json, report.md, action-items.md, threads.md and HANDOFF.md there. Other browsers download the five files. The server keeps nothing.
What happens to my token?
The token is sent with the request so the server can call the chat platform's API on your behalf, then discarded. It is not logged, cached or stored, and the messages are not stored either. Use a read-only token with only the history and read scopes listed on the app page.
How is resolved decided?
Jev picks one of four statuses for each thread from the replies and reactions: resolved, answered but unconfirmed, unresolved, or no response needed. It also picks a bucket, a severity level and the probability that someone still has to act. Every answer comes with a probability per option, so you can see how sure it was.
How does a coding agent use it?
HANDOFF.md tells the agent what each file is and how to work through actionItems[] in report.json: read the thread, fix or answer, tick the item. The app also gives you a one-line prompt to paste into Claude Code, Codex or Cursor from the parent folder.
What does it cost?
Jev is priced per input token and output is free. The sample channel, 25 threads and 54 messages over 30 days, is about 25,000 input tokens: $0.0011 and 1.4 seconds in two calls. The same four judgments as one LLM call per thread would be 25 calls, about $0.08 and nine seconds at list prices, roughly 70 times the cost.
ready

Try the sample channel, then your own.

Open the app