TL;DR: An 8-person recruitment agency in Charlotte, NC had been stuck at $52K/month revenue for 18 months. Six recruiters were each spending 3-4 hours daily on manual sourcing—searching LinkedIn, copying candidate details into Bullhorn by hand, writing outreach messages from scratch. Average time-to-shortlist: 6 days. Industry leaders do it in 2. We built a dual-purpose agent: one side handles candidate sourcing (discovery, scoring, personalized outreach, CRM population), the other handles client acquisition (trigger monitoring, automated BD outreach, pipeline management). Sourcing time dropped to 1.2 hours/day. Time-to-shortlist fell to 1.5 days. Monthly placements went from 3 to 7. New client mandates nearly tripled. Revenue increased $23K/month within 90 days. System cost: $560/month.

The Whiteboard Nobody Wanted to Look At

Marcus kept a whiteboard in the Charlotte office. Three columns: Active Roles, Shortlisted, Placed.

End of October, the board told a story nobody wanted to hear. Forty-seven active roles across six recruiters. Twenty-two in various stages of shortlisting. Placed that month: three.

Three placements from forty-seven active roles. A 6.4% fill rate.

His recruiters weren't slacking. That was the frustrating part. They were working full days—arriving at 8, leaving after 6, eating lunch at their desks while scrolling LinkedIn Recruiter. The problem wasn't effort. It was where the effort was going.

Marcus started the agency five years ago, placing professional services candidates. Accountants, attorneys, HR professionals. Grew it to $52K/month revenue by year three. Good team, solid relationships, decent reputation in Charlotte's professional services market.

Then it stopped growing. Eighteen months of the same number. Same revenue. Same placement rate. Same feeling of running flat out and going nowhere.

"I've got six people who are great at recruiting," he said. "But they're not recruiting. They're doing data entry."

Where the Hours Actually Went

We asked each recruiter to log their time for a week. Not categories—actual activities, in 15-minute blocks.

The results were worse than Marcus expected.

Average per recruiter per day: 3.8 hours on sourcing activities. Not talking to candidates. Not interviewing. Not closing. Sourcing. Roughly: 90 minutes searching LinkedIn Recruiter with Boolean strings. 45 minutes on CV databases. 30 minutes copying candidate details into the CRM. 45 minutes writing outreach messages. And scattered throughout, 30 minutes cross-referencing to avoid duplicates.

That leaves about 4 hours for everything else. Phone screens, client calls, interviews, reference checks, offer negotiations. The stuff that actually generates revenue.

Here's what made it worse: by the time a recruiter spent 6 days building a shortlist for a VP of Finance role, the best candidates had already been contacted by two or three other agencies. The passive candidate market moves fast. A strong CFO candidate on LinkedIn gets 3-5 recruiter messages per week. First contact advantage is real in recruitment, just like it is in legal. The recruiter who reaches out Tuesday wins over the one who reaches out Friday.

Marcus was watching his team lose placements not because they chose the wrong candidates, but because they found them too slowly.

The Revenue Ceiling

$52K/month sounds decent for an 8-person agency. It's not.

Six recruiters at an average placement fee of $18K means roughly three placements per month covers overhead. Four is comfortable. Five is growth. Marcus needed seven or eight to justify the team he'd built.

But there was a second problem. The recruiters were so buried in sourcing that nobody was doing business development. New client mandates trickled in at one or two per month, mostly referrals and repeat business.

Marcus tried blocking out "BD hours" on Friday afternoons. It lasted two weeks before sourcing urgency swallowed it. A recruiter with twelve active roles and a client asking where the shortlist is doesn't feel great about spending Friday afternoon cold-calling potential clients.

So the agency stayed stuck. Same revenue, same clients, same fill rate. Good people doing repetitive work that a system should be handling.

What We Built

Two connected agents, sharing data but serving different functions.

Candidate Sourcing Agent

1. Automated candidate discovery

A recruiter drops a job spec into the system. The agent extracts key requirements—title, skills, experience level, location preferences, salary band, must-haves vs nice-to-haves—and runs parallel searches across multiple sources.

It pulls from job board APIs, CV databases, Apollo.io for enrichment data, and the agency's own Bullhorn database (which held 14,000 candidate records, most of which nobody had looked at in months). The agent cross-references results to eliminate duplicates, flags candidates who are already in active processes with the agency, and produces a raw list of 40-80 candidates per role within about 90 minutes.

What used to take a recruiter a day and a half happens before their second cup of coffee.

2. AI-powered screening and ranking

Raw lists aren't useful. Every recruiter knows the difference between 80 names and 8 good ones.

The agent scores each candidate against the role requirements using Claude API. It assesses skills match, experience depth, location and commute viability, likely salary expectations based on current title and market data, and availability indicators. Someone who changed jobs four months ago probably isn't moving. Someone who's been at their company three years and just liked a post about "knowing your worth" might be open.

Candidates get ranked into three tiers: strong match, potential match, and long shot. The recruiter reviews the strong matches first. Typically 8-15 candidates instead of 80.

3. Personalized outreach generation

For top-ranked candidates, the agent drafts approach messages that reference their actual background. Not "I came across your profile and was impressed." Something like: "I noticed you've been managing the tax compliance function at [Company] for three years, and your background in multistate filing is exactly what a growing Charlotte firm needs for a Senior Tax Manager role."

It pulls from Apollo.io enrichment, LinkedIn profile data, and any notes in Bullhorn from previous interactions. If a candidate was contacted by the agency two years ago for a different role, the message acknowledges that.

The recruiter reviews, tweaks if needed, and sends. Writing time per candidate drops from 8-10 minutes to about 90 seconds of review.

4. CRM population

Every candidate the agent identifies flows into Bullhorn automatically. Profile data, scoring rationale, outreach status, and source attribution. No copy-pasting from LinkedIn into CRM fields. No sticky notes. No "I'll log it later" that becomes "I forgot to log it."

The agency's Bullhorn database went from 14,000 stale records to a living system that the sourcing agent updates daily.

Client Acquisition Agent

This was the piece Marcus didn't know he needed until he saw it work.

5. Trigger monitoring

The agent monitors business signals across the Charlotte metro and the firm's target industries: job postings appearing on company websites (especially multiple postings, which suggest a hiring surge). LinkedIn hiring activity from companies that don't currently use an agency. Funding announcements. Leadership changes. Office expansions.

A company posting three finance roles in two weeks probably needs help. The agent catches that pattern and flags it before a recruiter would notice.

6. Automated outreach

For flagged companies, the agent generates personalized emails to hiring managers and HR leads. Not generic "We're a recruitment agency, let's chat" messages. Specific ones: "I noticed [Company] has posted for a Controller and two Staff Accountants this month. We specialize in placing finance professionals in Charlotte and have candidates with [specific experience] ready to go."

Distribution runs through Instantly with the same deliverability infrastructure as the accounting blueprint—separate domain, warm-up period, controlled volume.

7. Pipeline management

All outreach gets tracked. Follow-ups happen automatically. Warm responses route to Marcus via Slack notification so he can jump in and build the relationship. The agent handles the prospecting; Marcus handles the closing.

The Tech Stack

  • Make.com for workflow orchestration connecting all platforms

  • Claude API for candidate scoring, outreach generation, and job spec parsing

  • Apollo.io for candidate and company enrichment data

  • Instantly for client acquisition cold email distribution

  • Bullhorn CRM integration for candidate pipeline and placement tracking

  • Google Sheets for the reporting dashboard (placement rate, time-to-shortlist, source performance)

  • Slack for real-time notifications on high-priority candidates and warm client responses

Total monthly cost: $560. That covers API processing, enrichment credits, email infrastructure, and platform subscriptions.

One successful placement at the agency's average fee ($18K) pays for 32 months of the system.

What We Learned Building It

Bullhorn's API was fiddly. Recruitment CRMs are powerful but their APIs aren't always well-documented. Getting candidate records to flow cleanly into Bullhorn without creating duplicates or overwriting existing notes took a solid week of testing. We built a matching algorithm that checks name, email, phone, and LinkedIn URL before creating a new record. Even then, we found edge cases—candidates with different email addresses across platforms, name changes, people who'd moved cities.

The scoring model needed recruiter input. First version ranked candidates purely on keyword matching. Recruiters hated it. "This person has every keyword but they've been at four companies in three years," one said. "That's a red flag in professional services." We added weighting for tenure stability, career progression direction, and company quality signals. The second version matched recruiter judgment about 80% of the time. Good enough to sort, not good enough to replace instinct.

Outreach personalization had a ceiling. We tried pulling from published content—articles, LinkedIn posts, conference appearances—to make messages hyper-specific. It worked well for senior candidates but felt creepy for mid-level ones. A Controller doesn't expect a recruiter to reference a blog post they wrote in 2023. We dialed it back to career history and current role for most candidates, saving the deep personalization for director-level and above.

Client acquisition needed a warm-up period. The first week of BD outreach generated zero responses. By week three, with a warmed domain and refined messaging, the response rate hit 4.2%. By week six it was at 6.8%. Patience matters here. Marcus wanted to increase volume after three days. We talked him out of it.

The Numbers

Metric

Before

After

Recruiter sourcing time/day

3.8 hrs

1.2 hrs

Time-to-shortlist

6 days

1.5 days

Monthly placements

3

7

New client mandates/month

1-2

4-5

Monthly revenue

$52K

$75K

System cost/month

N/A

$560

The number that changed Marcus's mind about everything: his recruiters went from 4 hours of daily sourcing to 1.2 hours—and most of that 1.2 hours was reviewing agent output, not doing manual searches. That freed up roughly 2.5 hours per recruiter per day for the work that actually closes placements. Phone calls. Candidate prep. Client relationship building. Reference checks.

Six recruiters. 2.5 hours recovered per day each. That's 15 hours of high-value activity returned to the agency daily. Over a month, it's roughly 300 hours of work shifted from sourcing admin to revenue-generating activity.

The Ripple

Primary: faster sourcing, tighter shortlists, better candidate quality. Secondary: recruiters spending their day on relationship work and closing instead of searching and typing. Tertiary: new clients flowing in through automated BD. And the effect nobody planned for: recruiter retention. Marcus's two most experienced recruiters had been talking about leaving. The sourcing grind was burning them out. Three months after the agent went live, both said they were staying. "It finally feels like I'm doing the job I was hired for," one of them told him.

The agency didn't hire more recruiters. It didn't buy more job board licenses. It made the six people it already had dramatically more productive.

The Pattern

Every recruitment agency we talk to describes some version of this. The work that generates revenue—conversations, relationships, judgment calls—gets crowded out by the work that doesn't: searching, copying, typing, formatting.

Recruitment should be about matching humans to opportunities. It's a relationship business built on trust and timing. When your best people spend four hours a day on data entry, that's not a productivity problem. It's a misallocation of talent.

If your agency's recruiters are buried in sourcing admin while placements plateau, this is worth exploring. Not because AI replaces recruiters. Because the 70% of their day that doesn't require human judgment shouldn't require a human.

Want to see 25 agent architectures across different industries? Download Unstuck. It includes blueprints for lead generation, scheduling, quoting, collections, and more.

Think sourcing might be your bottleneck? Take our AI Bottleneck Audit. 10 minutes, no pitch. We'll map your current recruiting workflow and show you where the hours are actually going.

by SP, CEO - Connect on LinkedIn
for the AdAI Ed. Team

Keep Reading