Agent setup guide
Job Order Intake & Shortlist
Turns a client's job request into a Bullhorn job order and sends the recruiter a ranked candidate shortlist.
What it does
Turns a client's job request into a Bullhorn job order and sends the recruiter a ranked candidate shortlist.
- Starts when your client job request form posts to the webhook.
- AI structures the job order (title, location, rate, openings, must-haves, description) using only the request, and lists what's missing.
- Creates the job order in Bullhorn; when the request has no client contact id, a recruiter adds it in Reviews first.
- Searches Bullhorn candidates on the role's key terms (and state) and AI ranks up to 10 from their profile fields, with a reason and what to check.
- Posts the job order and shortlist to your recruiting channel in Slack.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Bullhorn and Slack, connected in Settings → Integrations.
- A job request form or site that can post to a webhook.
What it doesn't do
- It never contacts or submits candidates: the recruiter decides.
- It ranks from Bullhorn profile fields (title, status, source, date added), not résumé files or skills sections.
- It leaves out requirements about protected characteristics and never infers them.
- It doesn't set bill rates or look up the client in Bullhorn.
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: Bullhorn and Slack.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- About 15 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect Bullhorn
Connect Bullhorn (Settings → Integrations → Bullhorn) with your API credentials; the API user needs to create job orders and search candidates.
3. Connect Slack
Connect the Slack workspace your recruiters use (Settings → Integrations → Slack).
4. Describe your desk
Open “Structure the job order” and replace the placeholder with your desk.
| Setting | What to enter | In step |
|---|---|---|
| Your desk | Replace the placeholder with your agency, the roles and regions you staff, your rate format (pay and bill rate) and what a complete job order needs. It starts as “[DESCRIBE YOUR AGENCY, THE ROLES AND REGIONS YOU STAFF, YOUR RATE FORMAT AND WHAT A COMPLETE JOB ORDER NEEDS HERE]” until you replace it. | “Structure the job order” |
5. Pick your Bullhorn account
Open “Create the job order in Bullhorn” and “Search candidates” and pick your account.
| Setting | What to enter | In step |
|---|---|---|
| Bullhorn account (job orders) | The Bullhorn account job orders are created in. Pick your connected Bullhorn account. | “Create the job order in Bullhorn” |
| Bullhorn account (candidates) | The same Bullhorn account, used to search candidates. Pick your connected Bullhorn account. | “Search candidates” |
6. Pick the Slack account and channel
Open “Send the shortlist to the recruiter” and pick your account and channel.
| Setting | What to enter | In step |
|---|---|---|
| Slack account | The Slack workspace your recruiters use. Pick your connected Slack account. | “Send the shortlist to the recruiter” |
| Recruiting channel | The channel your recruiters watch, e.g. #job-orders. | “Send the shortlist to the recruiter” |
7. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
8. Switch the trigger on
Open the trigger, copy the webhook URL and secret into your job request form or site, and switch it on. Fields: client_company, contact_name, contact_email, bullhorn_client_contact_id (optional), title, location, rate, employment_type, openings, start_date, must_haves, nice_to_haves, details.
How it works
The agent is a normal workflow with 9 steps (2 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- New client job request — Starts when your form or app sends data to the agent's webhook URL. Your client job request form (or your site) posts each request to this webhook.
- Structure the job order — AI step (runs on your AI provider key). AI turns the request into a clean job order (title, location, rate, openings, must-haves) and the Bullhorn candidate search.
- Client contact known? — Decision: picks the branch to follow. Bullhorn needs the client contact for a job order. When the request doesn't give it, a recruiter adds it before the job order is created.
- Recruiter adds the client contact — A person approves or rejects it in Reviews (the run waits). Branch: Contact id missing. A recruiter enters the client's Bullhorn contact id (and fixes the job order if needed) in Reviews, then approves.
- Create the job order in Bullhorn — Bullhorn: Create a job order. Branch: Contact known / Approved. Adds the job order for the client contact, with the structured description.
- Search candidates — Bullhorn: Search candidates. Searches Bullhorn candidates on the role's key terms (and state), newest first, up to 50.
- Rank the top matches — AI step (runs on your AI provider key). AI ranks up to 10 candidates from their Bullhorn profile fields against the must-haves, with a reason and what to check for each.
- Send the shortlist to the recruiter — Slack: Post a message. Posts the new job order and the ranked shortlist to your recruiting channel.
- Shortlist sent — Kept in the run history. The recruiter decides who to contact and submit.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.
Sample data fields
client_company, contact_name, contact_email, bullhorn_client_contact_id, title, location, rate, employment_type, openings, start_date, must_haves, nice_to_haves, details.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
Go live
- Open the trigger, copy the webhook URL and secret into your job request form or site, and switch it on. Fields: client_company, contact_name, contact_email, bullhorn_client_contact_id (optional), title, location, rate, employment_type, openings, start_date, must_haves, nice_to_haves, details.
- The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
Does it contact or submit candidates?
No. It posts a shortlist to the recruiter, who decides who to call and submit.
Does it read résumés?
No. Bullhorn's search finds candidates on the role's key terms; the ranking uses their profile fields (title, status, source, date added), so each match lists what to confirm.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
- Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
- A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .