River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Request Intake and Triage Template

Three documents and three sheets that turn your team's most common follow-up questions into required form fields, and stop requests that skip the form.

Free download  ·  No account needed

Request Form Fields, derived

Bramwell Foods, Data & Reporting team, one quarter

Generic templateUniversal fields: requester, type, urgency, attachments
What it misses29% of real requests never reached the form: 73 of 248
This packOne derived field per type, ask-back rate stated

Highest ask-back field per request type

Request typeDerived fieldAsk-back rate
New report buildMetric owner / sign-off89.5%
Access requestSystem + restricted flag81.8%
Bug fixSince-when date75.0%
Ad hoc data pullExact date range67.2%
Dashboard changeOne-time or ongoing61.0%

None of these five fields appears on a generic intake template. Each earned its place by being the question analysts actually asked back, at the rate shown.

Every internal request form template on page one ships the same universal field list. The ClickUp Request Form Template leads with must-have fields like requester info, request type, urgency, supporting details and attachments, standardized across every request type at once. That list isn't wrong, exactly, it's generic: none of it comes from what a specific team's specific requests have actually needed clarified before work could start. A twenty-minute access grant and a four-day report build get the same five boxes.

A harder problem is invisible to any form template, because it is the volume that never reaches the form at all. A request handled by direct message never enters a ticketing tool's count, a shared inbox's log, or any dashboard built on either one, so intake advice gets written as if all demand already lands somewhere countable. Nothing in a generic template's setup instructions asks a team to check whether that assumption holds for its own queue before publishing a process built on top of it.

Bramwell Foods' Data & Reporting team tested both gaps directly. A one-week audit of the team's own Slack history against its shared-inbox log found 5 requests fulfilled entirely by direct message against 12 logged that same week. Extrapolated across the quarter, that ratio implies roughly 73 invisible requests, 29% of a true 248-request workload. Deriving each request type's required field from its own historic ask-back rate, then enforcing the form with a fixed rejection note, dropped DM-only volume to 8.5% within a month.

Three sheets, from derived field to aging alert

Request Form Fields, Triage Queue, and Aging Report.

Request Form Fields

Three core fields on every request, one derived field per type with the ask-back rate it replaced.

FieldApplies toAsk-back rate replaced
Requester, Department, Needed-by dateAll typescore, not derived
System/Dashboard + restricted flagAccess request81.8%
Exact date rangeAd hoc data pull67.2%
Since-when dateBug fix75.0%
One-time or ongoingDashboard change61.0%
Metric owner / sign-offNew report build89.5%

Every derived field replaced a real follow-up message. The three core fields need no derivation, since every request regardless of type needs them just to route.

A field with no counted ask-back rate behind it does not go on this sheet, however reasonable it sounds.

Triage Queue

A sample of the live queue: one row per request, its priority and assigned analyst.

SubmittedTypePriorityAnalystStatus
Sep 2, 9:14 AMAccess requestStandardPriyaClosed, 6.1h
Sep 2, 10:02 AMNew report buildScheduledSamIn progress, 58.4h
Sep 3, 1:15 PMBug fixBlockingMarcusClosed, 3.2h
Sep 5, 10:10 AMDashboard changeStandardMarcusUntriaged, 2.4h
Sep 5, 3:55 PMBug fixStandardPriyaUntriaged, 1.1h

Priority is assigned at triage, not chosen by the requester. Blocking means a live incident or work that stops entirely without it; everything else is Scheduled or Standard.

Two rows are still inside the four-hour triage window, which is normal, not yet a miss.

Aging Report

What's aging past the one-hour acknowledgement or four-hour triage window.

TypeHours since submissionAcknowledgedTriagedFlag
Dashboard change2.4YesPendingOn track
Ad hoc data pull26.3YesNoMissed 4hr triage window
New report build168.0YesYesClosed late vs. 85.8h target
Access request0.9NoNoMissed 1hr acknowledgement

A missed acknowledgement is a routing bug, not a workload problem. It fires automatically off the submission timestamp, so a miss means the automation itself needs checking.

4 rows shown here; the live sheet keeps every request until both windows are closed out.

What's in the pack

01

Request Form Fields

Three core fields plus one derived field per request type, each stated next to the historic rate at which that exact question got asked back before work could start.

02

Why ask-back beats a generic field list

A field earns its place by being counted, not by sounding thorough. A universal list borrowed from another team's template is exactly what this pack replaces.

03

Triage Queue

The live operational sheet: one row per open request, its priority tier, its assigned analyst, and its status, so a reassignment shows up here before it shows up as a missed target.

04

Aging Report

Flags anything past the one-hour acknowledgement or four-hour triage window automatically, off the submission timestamp, rather than waiting for someone to notice.

05

Intake Policy

States the measured DM-bypass rate plainly and sets the rule: every request enters through the form, with a named exception for true emergencies only.

06

Triage Rules

Acknowledgement and triage timing, the three priority tiers tied to an observable condition instead of a requester's own urgency rating, and routing by request type.

07

Rejection Note

Two fixed replies, one for a request that arrived by direct message and one for a request outside this queue's scope, so enforcement doesn't drift by whoever answers.

How to use it

  1. 1

    Open in River, or download it

    Install the pack and hand River your request history, or download all three documents and three sheets blank and derive the fields yourself.

  2. 2

    Send what's logged, and what isn't

    A shared inbox or ticketing export for the visible requests, plus whatever you can find of direct messages or hallway asks that were fulfilled without being logged.

  3. 3

    Let the ask-back count set the fields

    Every request type gets one required field, the question that got asked back most often for that type, with the rate stated next to it.

  4. 4

    Publish the form, enforce it with the note

    The Rejection Note redirects anything sent around the form, and the Aging Report catches anything the acknowledgement or triage automation misses.

Frequently asked questions

Is this free, and what do I get?

Free, no signup needed for the download: three documents and three spreadsheets. The AI half is optional. Send River your request history, including what bypasses it, and it derives the fields and drafts the policy for you. More in the template library.

Why not just use the fields every intake template already ships?

Because a universal list isn't derived from anything; it's what a form obviously should ask. In the worked example, the field that mattered most, a metric owner for a new report build, doesn't appear on a single generic template, because no generic template counts a specific team's follow-up questions.

What counts as a request "bypassing the queue"?

Any request fulfilled without ever entering the team's shared record: a direct message answered directly, a hallway ask completed on the spot. It's invisible precisely because no count of the visible queue includes it, which is why measuring it needs a separate spot-check audit.

What happens when someone still sends a direct message?

They get the Rejection Note, not an answer. It redirects to the form and states the acknowledgement and triage timing they'll get once it's submitted, with one named exception for a live incident or a deadline inside four hours.

Isn't every request urgent to the person asking?

That's exactly why priority is assigned at triage against an observable condition, not chosen by the requester on the form. A live incident gets a faster ladder entirely; this queue's Blocking tier is reserved for work that stops without it.

What does Edit with AI actually do?

Creates a free account, installs this exact pack as a private space, and primes the agent to ask for your request history and your bypass volume both. Nothing gets derived until you send something, and the blank pack is always there to download instead.

Build the form from what people actually ask

Take the documents and sheets blank, or install this pack in River and send it a quarter of your own request history, DMs included.

Edit with AI