Hiring manager review portal for your open Ashby roles

Give hiring managers one screen to see their open roles, review the candidates waiting on them, and advance or reject in a single click.

App
AshbySlack BotHR & PeopleOperationsNotifications & AlertsAI Reports
PromptCreate

Build an app my hiring managers can open instead of logging into Ashby. Most of them do not have an ATS login, and the ones who do are not going to dig through filter menus to get a status update on their own roles. Everything in this app is scoped to the person who is signed in.

Identity and access first, because this is the reason the app exists. On load, resolve the signed-in person's email address to an Ashby user with List Users. Then call List Jobs, which returns each job's status and hiring team, and keep only the open jobs where that user appears on the hiring team. Use List Application Hiring Team Roles to understand the role vocabulary so the app can tell a hiring manager apart from the assigned recruiter on a given application. This scoping must be enforced inside the server handlers, not by filtering in the browser, so a manager can never reach another team's requisitions. If the signed-in email does not match an Ashby user, show a clear empty state explaining that their address is not on any hiring team rather than failing silently.

The home view is a card per open requisition. Each card shows the age of the requisition in days since it opened, the count of active candidates broken down by stage, and a prominent "waiting on you" badge with the number of candidates whose current stage needs this manager's action, for example candidates sitting in a review or feedback stage they own. Order the cards so the roles with the most waiting candidates, and the oldest requisitions, come first. Clicking a card filters the queue to that role.

The queue view pulls every active application across those jobs with List Applications. One row per candidate, showing candidate name, role, current stage, how many days they have been waiting in that stage, and the assigned recruiter. Default the sort to days waiting, longest first, so the oldest stalled decisions surface at the top. Let the manager filter by role and by stage, but always keep days waiting as the default sort when the view loads.

Opening a candidate shows everything needed to make the call on one screen. Pull their interview feedback with List Application Feedback, including who submitted it and their recommendation. Pull the notes already on file with List Candidate Notes, newest first. Pull any upcoming interviews with List Interview Schedules, showing the time and the interviewers. Show the current stage and days waiting at the top so the urgency is visible while reading.

From the candidate view the manager can advance or reject in one click. Both actions open a small confirmation that requires a short written reason, and the submit button stays disabled until something is typed. This forced reason is the quality bar that makes the app better than the ATS itself, so it must never be skippable or optional. On submit, do three things in order: move the candidate with Change Application Stage, write the reason back to Ashby with Create Candidate Note recording the decision, the reason, and who made it, then notify the assigned recruiter with Slack Bot Send a Message.

For the Slack notification, resolve the assigned recruiter's email address to a Slack user with Look Up User by Email, then send them a direct message naming the candidate, the role, the decision, and the manager's reason verbatim. If the recruiter cannot be resolved in Slack, still complete the stage change and the note, and surface a non-blocking warning in the app that the notification did not send. The Ashby record is the source of truth and must never be left half-written because a message failed.

A few details to get right. Ashby list endpoints are cursor paginated, so page through until all results are collected before computing stage counts or the waiting badge, otherwise the numbers will be quietly wrong. Recompute the affected counts and remove the candidate from the queue immediately after a decision so the manager sees progress without a manual refresh. Show relative ages in plain language such as "12 days" rather than raw timestamps. Keep the whole app fast to scan, since the person using it is between meetings and wants to clear their queue in a few minutes.

What does this prompt do?

  • Shows each hiring manager only their own open roles, with how long the role has been open, how many active candidates sit at each stage, and a clear badge when someone is waiting on them
  • Puts every active candidate across those roles into one queue, sorted by how long they have been sitting, so the oldest stalled decisions come to the top
  • Opens a candidate into a single view with their interview feedback, the notes already on file, and any interviews already booked
  • Lets the manager advance or reject from that view, and requires a short reason that gets saved back onto the candidate record so the decision is never a mystery later
  • Sends the assigned recruiter a message in Slack the moment a decision is made, including the reason

What do I need to use this?

  • An Ashby account, and an admin who can create an API key for the connection
  • A Slack workspace so recruiters can be notified when a decision is made
  • Hiring teams filled in on your Ashby jobs, since that is how the app knows which roles belong to which manager
  • Recruiter email addresses that match between Ashby and Slack, so each notification reaches the right person

How can I customize it?

  • Change what counts as waiting on you, for example only candidates who have been sitting more than three days, or only those at a stage you own
  • Send the decision notification to a shared recruiting channel instead of a direct message to the recruiter
  • Adjust the reason box, such as setting a minimum length or offering common reasons to pick from alongside free text
  • Change the default queue sort, though most teams keep days waiting so the oldest decisions surface first

FAQs

Do hiring managers need their own Ashby login?
No, and that is the point of this app. It connects to Ashby once using a key your recruiting team sets up, then each manager signs into the app instead. They get their roles and their candidates without ever opening the applicant tracking system.
Can a manager see roles that are not theirs?
No. The app looks up the signed-in person in Ashby and only ever shows jobs where they are on the hiring team. That filtering happens on the server, so a manager cannot reach another team's requisitions even by fiddling with the page.
Why does it force me to type a reason before advancing or rejecting?
Because the reason is the whole quality bar. A one-click decision with no explanation leaves recruiters guessing and leaves nothing useful in the record. The reason gets saved onto the candidate in Ashby, so anyone who looks later sees why the call was made.
Does a decision here actually change anything in Ashby?
Yes. Advancing or rejecting moves the candidate to the new stage in Ashby, writes your reason onto their record as a note, and messages the assigned recruiter in Slack. Nothing is kept only inside the app.
What happens if the recruiter is not in Slack, or the emails do not match?
The decision and the reason still go into Ashby as normal. The app just flags that it could not deliver the notification, so nothing is silently lost.

Related templates

Review desk for portal forms your team still fills in by hand

Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.

Kernel
Google Sheets
Slack Bot
App
Client-by-client cold email pipeline review for agencies

Pick a client and a date range to see sent, replies, meetings booked and the real deal value your cold email produced, campaign by campaign.

Instantly
HubSpot
Slack Bot
App
Audit what Intercom's Fin AI actually resolved before you pay

Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.

Intercom
Google Sheets
Slack Bot
App
One triage console for every Jira service desk queue

Merge your IT, HR and Facilities queues into one list ranked by SLA time left, then reply, change status and escalate without ever opening Jira.

Jira Service Management
Jira
Slack Bot
App
Run your Webflow site translations from one review desk

See every page's translation status at a glance, edit translations side by side with the English, and publish only what your team has actually approved.

Webflow
JigsawStack
Slack Bot
+1
App
Legal contract intake desk your teams use instead of email

One place for sales and ops to request an NDA or vendor agreement, watch its status, and let legal launch the contract in a single click.

Ironclad
Slack Bot
General Input Database
App

Stop making hiring managers log into the ATS.

Give them one screen for their open roles, the candidates waiting on them, and the decision itself.