Talent sourcing workbench for every open Greenhouse role
Open one screen per open role, search for candidates, work them across a Sourced, Shortlisted and Rejected board, and send the best people to Greenhouse.
Build me a talent sourcing workbench my recruiters open per open role, so sourcing lives on one screen instead of in a spreadsheet of profile links that only reaches the ATS at the very end. Coresignal is where candidates get discovered and their history filled in, Greenhouse is the system of record I push people back into, and the app itself owns the shortlist board, the statuses, and the record of who did what.
The app opens on a role picker. Pull my live requisitions with the Greenhouse List Jobs operation filtered to open jobs, and show each one with its title, department and office. Picking a role opens that role's workbench and everything from that point on is scoped to that requisition: its own searches, its own board, its own send history. Use the Greenhouse Get Job operation for the selected role to show the department, offices and hiring team in a header, so a recruiter can see at a glance whose role they are sourcing for. Moving between roles must never lose work already done on another one.
The search panel takes job title, skills, location, current company and years of experience. Seed it from the selected role where you can, prefilling the title from the job title and the location from the job's office, then let me correct or add to anything before I run a search. Running a search calls the Coresignal Search Employees (Filter) operation on the base employee dataset, which returns matching employee IDs rather than full records, and then fills each row in by calling Collect Employee by ID on the multi-source dataset, which is the more current merged view and the right one for anything a person reads on screen. If the filter set does not expose years of experience directly, derive it from the experience history on the collected profiles and filter on it after collection rather than dropping the input.
Be deliberate about volume, because search and profile collection both draw down Coresignal credits, one credit per successful call. Let me set how many results I want before I run a search, page through results on demand rather than eagerly fetching everything behind the scenes, and cache every profile you have already collected against this role so revisiting a row, reopening the panel or coming back tomorrow never re-fetches the same person. Show me roughly how many people matched so I can judge whether to narrow the filters before paging deeper.
Results render as a table, one row per person: name, current title, current company, how long they have been in that role, location, and a short trail of previous companies and titles. Clicking a row opens a profile panel beside the table with the fuller picture, the whole work history with dates, education, and a link out to the public profile. Alongside the search panel, give me a lookup box where I can paste a profile URL or a profile shorthand name and pull that one person straight in, using the Coresignal Collect Employee by Shorthand Name operation on the multi-source dataset, which accepts either form. Recruiters get sent links to specific people all day and typing a whole search to find one known person is silly.
The shortlist board is the heart of the app. Three columns, Sourced, Shortlisted and Rejected, and I move people between them by drag or by a status control on the row and in the profile panel. Anyone I add from search results or the lookup box lands in Sourced. The board is per role and shared by the whole team working that role, not private to one recruiter, and it has to persist so tomorrow's session picks up exactly where today's left off. Every card carries a note field in my own words, and lets me filter the board down to just the people I added or last touched when I want to see my own work.
Attribution is the part that stops two sourcers duplicating each other, so make it visible rather than buried. Stamp every candidate on the board with who added them and when, and who last changed their status and when, and show that on the card and in the profile panel. If someone else moved a person to Rejected an hour ago, I should see that before I spend twenty minutes on the same profile.
Every candidate shows when their details were last updated, and anything older than a threshold I can configure gets marked stale with a Refresh profile button. Refreshing calls the Coresignal Scrape Employee Profile (Real-time) operation against that person's public profile URL and writes the fresh title, company and history back onto the record. Handle failure gently, because this endpoint fails in ordinary ways: a private, removed or missing profile comes back as a 454 and a slow scrape comes back as a 408, and in both cases no credits are deducted. Neither is an error the recruiter caused, so never show an error dialog. Keep the details you already had, mark the row as could not refresh with the date of the last good update, and move on. The endpoint is also rate limited to 50 URLs per minute, so if I refresh a stack of people at once, queue them and show progress instead of firing everything at once and tripping the limit.
A Send to Greenhouse action on any shortlisted person writes them back with the Greenhouse Create Candidate or Prospect operation. Default to creating a prospect with no job application attached, because that is exactly what a sourced person is, and let me switch an individual send to a full candidate with an application against the selected role when they genuinely applied. Carry over their name, current company and title, their public profile link and my note, so whoever picks them up in Greenhouse can see why they were sourced. Greenhouse attributes every write to a real user, so let me pick which recruiter is credited from the Greenhouse List Users operation and use them as the acting user on the write.
The app has to remember, per role, everyone already sent to Greenhouse, who sent them and on what date. Show that on the card, mark those people as already sent everywhere they appear on that role including fresh search results, and block a second send with a message naming who sent them and when. This memory is shared across the whole team rather than per recruiter, because double submitting a candidate is the exact embarrassment the app exists to prevent.
On the details: give a search that returns nothing an empty state that suggests which filter to loosen rather than a blank table. Sourcing data is professional history, not contact details, so if a profile has no email address say so plainly and still allow the send, with the profile link attached, rather than blocking it or inventing an address. Never fabricate a title, employer, date range or contact detail. If the data did not come back, show it as not available.
What does this prompt do?
- Start from a real requisition: pick one of your live Greenhouse roles and everything on screen is scoped to it, so sourcing notes and shortlists never get mixed up between openings.
- Search for people by job title, skills, location, current company and years of experience, and get back a table of profiles with current title, company, how long they have been there, and where they worked before.
- Work candidates across a simple Sourced, Shortlisted and Rejected board, with a profile panel on every row and a refresh button for records that look out of date.
- Send a shortlisted person to Greenhouse in one click, added as a prospect against that role, with the app remembering who has already been sent so nobody gets submitted twice.
- See who last touched every candidate and when, so two sourcers working the same role stop landing on the same profile.
What do I need to use this?
- A Greenhouse account with permission to view jobs and create candidates and prospects
- At least one open role in Greenhouse to source against
- A Coresignal account, which is what powers the candidate search and the profile details
- A rough idea of what you are looking for on your first role: the title, the location, and the kinds of companies you like to hire from
How can I customize it?
- Change which columns the results table shows, so you lead with whatever your team judges people on first
- Rename or add board columns if your team works more stages than sourced, shortlisted and rejected
- Decide whether sending someone to Greenhouse creates a prospect or a full candidate with an application, and which recruiter gets credited
- Set how old a profile has to be before the app marks it stale and suggests a refresh
FAQs
Does this add people to Greenhouse as candidates or as prospects?
Will it stop two recruiters sending the same person twice?
What happens when a profile cannot be refreshed?
Can I look up one specific person I already found?
Do recruiters share one board or get their own?
Does the search find contact details like email addresses?
Related templates
See every candidate who has gone silent on your open roles, how long they have been quiet, and restart them on WhatsApp in one click.
See every interviewer's scores next to what the candidate actually said, spot where the panel disagrees, and catch ratings nothing backs up.
See every take-home waiting on a verdict, read the code in the app, and have it built and tested in a throwaway machine instead of on your laptop.
See every incoming hire, which onboarding documents they have actually signed, and who starts in days with paperwork still outstanding.
See every interview still missing a writeup, listen back to what the candidate actually said, and file the feedback before you forget it.
Filter for companies that match your ideal customer profile, review the decision makers, and push only the accounts you pick into HubSpot.
Get sourcing out of the spreadsheet of profile links.
One workbench per open role, a shortlist board your whole team can see, and a clean handoff into Greenhouse.