Bug Bounty Triage: Valid Findings Paid From the Weekly Budget, Reversals Included
A weekly bug bounty batch is triaged in one Kylon room. Agents check each ClickUp submission against scope, GitHub issues and Stripe payout history, allocate the week's budget, and the security lead approves every disposition and payout.
A bounty week where every finding stands on its own
A bug bounty week starts with a batch of submissions and a fixed payout budget. Each submission is checked for scope, matched against known GitHub issues for duplicates, reproduced and given a disposition. Valid findings are paid by severity until the budget runs out, and whatever is left is kept for findings that become valid later in the week.
Submissions are filed in ClickUp, known issues live in GitHub, past payouts show in Stripe, researchers write in through Gmail, and the triage policy and payout manifest sit in Google Drive. Midweek, a reproduction arrives, a root-cause memo moves a finding, a scope addendum brings two targets in, and the budget has to be re-allocated from what was left, not from the full amount.
Who works in the room
People
Security lead
Approves every disposition and payout, sends researcher replies and signs the weekly closeout
Security engineers
Reproduce findings, trace root cause and confirm matches to GitHub issues
Finance partner
Confirms the weekly budget and releases approved payouts
Agents

NovaSubmission triage
Reads each submission's own target, component, severity and notes, checks scope, GitHub and past payouts in Stripe, and proposes a disposition
ClickUp
GitHub
Stripe
Google Drive
FinPayout allocator
Allocates the weekly budget to valid submissions, reviews the payout manifest and computes per-researcher totals with Stripe history
ClickUp
Stripe
Google Drive
AdaResearcher correspondence
Reads researcher threads, hands new evidence to Nova and drafts replies for the security lead to send
Triage is the room's default work, so messages that name no agent go to Nova. Payout questions go to Fin, which owns the allocation and the manifest, and Ada handles researcher email. When a researcher replies with a reproduction, Ada hands it to Nova in the thread. When Nova re-classifies a submission as valid, it mentions Fin with the severity and the reason, and Fin allocates from the remaining budget.
Batch, budget, reversals, closeout
An automation opens the batch in the room every Monday. Nova reads each submission's own target, component, reported severity and notes, and never copies a disposition from the submission next to it.
- Agent works
- Person decides
- Arrives or gets recorded
flowchart TD
batch([An automation opens<br>the week's batch])
triage["<b>Nova</b> proposes a disposition<br>from scope, GitHub and Stripe"]
okt["<b>Security lead</b> approves<br>before ClickUp changes"]
alloc["<b>Fin</b> allocates the weekly budget<br>to valid submissions by severity"]
oka["<b>Security lead</b> approves<br>the allocation"]
reopen([Reproductions, a root-cause memo<br>and a scope addendum arrive])
manifest["<b>Fin</b> checks the payout manifest<br>against the allocation"]
rerun["<b>Nova</b> re-runs each reopened<br>submission under the policy"]
finance["<b>Finance partner</b> accepts<br>the corrected manifest"]
realloc["<b>Fin</b> allocates valid ones from<br>the budget left, not the full amount"]
readback["<b>Nova</b> re-checks one GitHub match<br>and sweeps the queue"]
replies["<b>Ada</b> drafts one reply<br>on each researcher's thread"]
send["<b>Security lead</b> approves<br>and sends each reply"]
closeout["<b>Fin</b> computes per-researcher<br>totals with Stripe history"]
sign["<b>Security lead</b> signs off"]
batch --> triage --> okt --> alloc --> oka
oka --> manifest --> finance --> readback
oka --> rerun
reopen --> rerun --> realloc --> replies --> send
readback & send --> closeout --> sign
class triage,alloc,manifest,rerun,realloc,readback,replies,closeout agent
class okt,oka,finance,send,sign person
class batch,reopen event
classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42| Stage | What happens | Who acts | Who decides |
|---|---|---|---|
| Triage | Each of the 32 submissions is given a disposition under the policy, and the two placeholder entries are left alone | Nova, with GitHub and Stripe as evidence | The security lead approves before ClickUp statuses change |
| Payout allocation | Valid submissions get a payout by severity within the weekly budget | Fin | The security lead approves the allocation |
| Manifest review | The generated payout manifest is checked against the allocation, and one comment records the number of corrections | Fin | Finance accepts the corrected manifest |
| Reversals | Reproductions, a root-cause memo and a scope addendum reopen five submissions, paid from the remaining budget | Nova, then Fin, then Ada for replies | The security lead approves and sends each reply |
| GitHub readback | One submission is re-checked without its GitHub match, and five others are confirmed unchanged | Nova | A security engineer confirms the matches and the security lead approves any change |
| Queue sweep | Every submission still queued is resolved under the sweep rule | Nova | The security lead approves |
| Closeout | Counts and per-researcher totals from the final states and every Stripe balance transaction on record | Fin | The security lead signs off |
Reversals after the money is allocated
Two researchers reply on their original Gmail threads with working reproductions for findings marked as needing one. Ada brings both into the thread, Nova re-runs them under the policy, and both come out valid. Fin allocates them from the budget left after the first allocation, not from the full weekly amount, and Ada drafts one reply on each thread with the submission ID and the payout in whole dollars. The security lead sends them.
The root-cause memo and the scope addendum reopen three more. A finding closed as a duplicate turns out to have its own root cause, and two submissions against targets the addendum brings into scope get a fresh look. Each is re-run under the policy and, if valid, paid from what remains. Later, a GitHub readback shows the match for SUB-17 was wrong, so Nova re-checks it without that match and confirms the five other matches the memo names. ClickUp changes only after the security lead approves.
What the checks catch
- Placeholder entries in the ClickUp list treated as submissions and given a status
- A disposition copied from a neighboring submission that targets a similar component
- Late valid findings paid from the full weekly budget instead of what remained after the first allocation
- A manifest line for a submission that is no longer valid, or a payout that differs from the allocation
- Closeout totals that leave out a Stripe balance transaction already on record for a researcher
What stays with people
- Approving every disposition and payout before ClickUp is updated
- Reproducing findings and confirming root cause
- Sending every researcher reply, which Ada drafts in Gmail
- Releasing payouts, which stays with finance
Integrations in this workflow
Kylon is not a bug bounty platform and it does not replace one. It sits across the tracker, the repository and the payment records the security team already uses, and keeps the triage, the budget and the replies in one room.
- ClickUp holds each submission with its fields, status and payout, plus the Bug Bounty Ops entry for weekly comments
- GitHub holds known issues, which Nova reads as evidence for duplicates and matches
- Stripe shows each researcher's past payouts and balance transactions, read as evidence only
- Gmail carries researcher threads, answered through drafts the security lead sends
- Google Drive keeps the triage policy, the payout manifest and the week's notices and memos
- Slack is where security engineers post reproduction results and root-cause findings
Where to start
Open the room with one week's batch. Connect the ClickUp list where submissions are filed, give Nova read access to the GitHub organization, and put one rule in the room guidelines: agents propose dispositions and payouts, and the security lead approves every one before ClickUp changes or a researcher hears back.
“Late findings were paid from what was left of the week's budget, and the closeout matched what Stripe already showed.”
Set it up with your agent
Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.
Set up our bug bounty triage desk in this Room. Take it one step at a time and wait for my OK before you move on. 1. Connect ClickUp, GitHub, Gmail, Google Drive, Slack and Stripe. Tell me which ones still need connecting. 2. Ask me who works this desk: the security lead, the security engineers who reproduce findings, and the finance partner who confirms the budget and releases payouts. Help me invite them to this Room. 3. Build a Bounty Batch App with Submission, Disposition, Payout and Status, one record per submission. Fill it from the open submissions in the ClickUp list. 4. Read each submission's target, component, severity and notes. Check scope against our policy in Google Drive, match against GitHub issues and review past payouts in Stripe. Propose a disposition for each and show me the ones that flag as duplicates or fail scope. 5. Allocate the weekly budget to valid findings by severity. Check every manifest line against the allocation and record corrections. When a reversal arrives, allocate from what remains. The security lead approves every disposition and payout before ClickUp changes. The finance partner accepts the corrected manifest before payouts are released. 6. Draft a reply on each original Gmail thread for findings that move. The security lead sends every reply. 7. Write the rule order and who approves what into this Room's guideline so every batch follows it. 8. After one clean week, offer to turn the batch opening into an Automation. Before you start, ask me for our rules one at a time.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allAPI Deprecation Migration: Cutoff Waves That Stay Right as Integrations Move
Retiring an API version runs through one Kylon room. Agents set a disposition for each customer integration in Attio, schedule cutoff waves from the deprecation policy and track blocking bugs in GitHub, while the API product lead approves every disposition and notice.
Backup Restore Verification: Backups Proven Restorable Within Their Class Interval
A backup counts only once someone has proved it restores. Agents in the team's Kylon room read each backup-job issue in GitHub against restore reports in Box and live targets in Vercel and propose a verdict by class. The reliability lead approves before any issue changes.






