A Hiring Engine, Rebuilt From the Tracking Up
Recruiting operations · Paducah, KY · about 9 minutes
Three ad platforms, two hiring pipelines that couldn't see each other, and no way to tell which dollar produced a driver. The audit found 273 candidates being messaged by hand in a system nobody had drawn. Eight weeks later there's one pipeline, the spend is measured, and the invitations send themselves.
Before you read on
You don't need to know what any of this is called. If you're spending money to bring people in, whether customers or staff, and you couldn't say which part of that spending is working, you already understand the problem in this case study. The client couldn't either. That turned out to be the whole story.
The short version
- The client was paying for ads on three platforms and couldn't tell which one produced a hire. The measurement had been installed in the wrong accounts, so every number they had was wrong.
- Fixing the measurement revealed the real problem: hiring was being run twice, in two systems that disagreed with each other about what time to show up for an interview.
- I was hired to build out their marketing engine, and in the process helped optimize, streamline and automate their hiring process.
- Today the cost per applicant is known and falling, the invitations send themselves seven days a week, and their team works from one process and one system. No confusion, no crossed wires, and a faster path from application to hire.
Nothing was connected
The client runs Amazon delivery routes out of Paducah. For a delivery contractor, driver hiring isn't a marketing nice-to-have. Routes go unrun without it.
Three paid channels were live, an applicant tracking system was in place, and hires were happening. None of it was connected to anything else.
An applicant tracking system is the software a company hires through: where applications land and candidates get moved along. Theirs worked. It just wasn't the only place hiring was happening.
The measurement had been installed in the wrong accounts. The signal the ads were meant to chase was never attached to either live campaign, and the Meta tracking sat on an account that wasn't running any ads at all.
The practical effect: nobody could say what a hire cost, which channel produced it, or where applicants were dropping out. Every number the account could produce came from records that were wrong.
I was brought in to make hiring faster and cheaper, but the first job was getting the data straight. That was when the audit turned up something I hadn't gone looking for.
Hiring was running twice
One pipeline ran automatically inside the applicant tracking system: acknowledgement, invitation, resend, booking confirmation, reminder. It worked, and I verified every step of it. But none of it was written down anywhere, so nobody knew it was there.
A second pipeline ran by hand, in parallel, in a job board inbox. 273 candidates messaged one at a time with a typed version of the invitation the first system was already sending automatically. Nine replies sat unread for up to five days, including candidates asking direct scheduling questions.
The two were quoting different interview times for the same day. Some candidates were arriving to an empty room. And a check across both systems proved the two candidate populations didn't overlap at all. These were two separate queues, not two views of the same one.
I came in ready to recommend automation. The audit changed the recommendation to consolidation. The work was already being done, by hand, in the wrong place.
What this changed for the team is the part I care most about. A recruiter's day used to be typing invitations one at a time, holding interview times in their head, and checking two systems to work out where a candidate actually stood. Now they move a candidate and the messages send themselves. Scheduling happens through a link instead of a back and forth. The daily check takes fifteen minutes and fits on a phone screen.
The effort was always there: hundreds of personal invitations written, a large interview backlog cleared, rejection reasons recorded properly. It just had nowhere to land. Same team, same hours, and none of it spent on retyping.
Getting the numbers straight
Eleven days after the rebuild, the account recorded its first accurate conversion. For the first time the client could see which ads produced completed applications and what each one cost. Everything that follows depends on that one fact.
What I rebuilt
- Conversion tracking rebuilt in the account actually running the ads, so the bidding stopped chasing page views instead of applications.
- Meta tracking traced to the right account and the dead one retired, so Meta spend stopped reporting against an account with no ads in it.
- Tag management rebuilt around a real "application completed" event rather than a stand-in for one, so the number the client reads is the one they care about.
- Analytics and Google Ads linked for the first time, so the two systems finally agree on one number instead of producing two.
- Campaign tagging standardized across all three channels and tested end to end, so every applicant can be traced back to the ad that produced them.
- A platform rename cut over without losing the job posting's age or search ranking. Both had been written off as acceptable losses. Neither was lost.
Paying for the right clicks
Cost per click on Google had tripled. Competition was the obvious explanation, and it was wrong. The account was paying for clicks on jobs the client doesn't hire for, spread across 259 different search terms.
I ran two rounds of cleanup: blocking the searches that were never going to produce a driver, pausing the worst performers, and adding a small set of new phrases, including two that put the client in front of people searching for a named competitor. Budget and bidding stayed untouched, so whatever changed could be credited to one thing.
The price per click barely moved, and the report said so. The auction got more expensive at the same time the account got better at it, and the two roughly canceled each other out. The account still climbed from third place to first while paying about the same.
What the auction data answered
The nearest local competitor wasn't buying search ads at all, which means the two contracts the client lost to them were lost on response time, not on advertising. The real competition for these clicks is gig work: food delivery, rideshare, Amazon's own listings.
That moved the conversation from budget to positioning. Against gig work, bidding higher doesn't win anybody over. What wins is permanent instead of seasonal, paid weekly, and a named hourly rate on the ad itself.
Once every channel could finally be read side by side, one of them turned out to be carrying the whole account.
Making the job look real
Paid ads reach people who are already looking. The feed and the search result are what a candidate checks before deciding whether the job, and the company, are real. Half of what I found there was working against the ads.
Brand and creative
- Brand colors rebuilt by sampling the actual logo artwork, because the colors on record were wrong and everything produced from them was subtly off-brand.
- Reusable creative templates and a render script, so a new ad regenerates in the right colors and type instead of being designed from a blank page every time. Creative stops being a bottleneck and stops drifting.
- The advertised pay rate corrected everywhere it appeared, the business category fixed, and name, address and phone made identical across every platform. Details that disagree cost candidate trust and search ranking at the same time.
The content system
- A four-week bilingual calendar on a Tuesday, Thursday, Saturday rhythm, rotating four subjects: the open role, culture and team, local Paducah, and trust. The feed stops reading as one long help-wanted ad, which is what a candidate compares against every other contractor hiring in the same town.
- A recurring Tuesday job fair campaign built end to end: creative, bilingual captions, a paid boost, and a way to measure it that's honest about walk-in traffic being invisible to every tracking system on the account.
- Google Business Profile verification unblocked after two rejections. I diagnosed the cause, resolved ownership, published the phone number, and wrote a shot-by-shot verification video script against Google's own rejection rules.
- Job posting and FAQ markup built and handed over ready to deploy, so open roles can appear in Google's jobs results rather than only in paid placements.
An unverified profile is close to invisible. It can't gather reviews, it doesn't reliably show up in local map results, and, increasingly the bigger deal, it's one of the sources Google and AI assistants read when they answer "who is this company, and are they legitimate?"
That's the same question a candidate is asking before they apply for a driving job. Verification is what turns the business from a name into a confirmed local employer with hours, a phone number, a service area and reviews attached, so it comes back correctly whether someone searches for it, asks Google, or asks an AI assistant.
Caught in passing
A screening question in the application flow automatically advanced English speakers only. It would have silently stranded every Spanish-language applicant the moment Spanish advertising resumed, in a market where that is a significant share of the available drivers.
Found during an audit of the hiring flow, months before it could have cost anyone a candidate.
One pipeline, and it runs itself
Better ads were now sending more people into a hiring process that couldn't carry them. The diagnostic put numbers on it: 820 applications across two systems, 454 candidates sitting in stages nobody was tracking, and around 100 group interview sessions with 55 seats each, booking between zero and four, none ever closed out. No attendance data existed anywhere.
So the work was to make one system out of the two that already existed.
The structure
- Seven stages, each meaning exactly one thing (invited, booked, attended, decided, offered, hired), replacing a single overloaded status that meant four things at once and could never be read as attendance. A recruiter can open a list and know what each person is waiting for without holding anything in their head.
- One owner and one advancement rule per stage, with the boundaries of what should never be automated written down explicitly.
- Recording the outcome as the trigger, not the paperwork. Nothing downstream fires for a candidate whose record hasn't moved: no reminder, no rebooking, no offer. The recruiter marks the outcome because they need the system to act, not because a policy says to. That's the part that survives the week I stop watching.
The automation
- An eight-message set covering the invitation, the confirmation, a 24-hour and a 2-hour reminder, a resend, a no-show rebook and a close-out, each with a defined trigger, timing, channel and a 48-hour guardrail so nobody gets messaged into the ground.
- A free automation already included in the client's existing plan, which had never been switched on. Found during the audit, configured, and now handling first contact.
- Shared job board templates across every login on the account, each ending in a tracked application link, so replies stop being retyped and applications get credited to the right source.
The practical effect: acknowledgement, screening, invitations, confirmations, reminders, rebooking and close-outs all run at nine on a Sunday evening with nobody present. Seven-day candidate coverage without seven-day staffing.
The capacity fix
I deliberately didn't recommend interviewing less often. Daily sessions are how a driver fits an interview around the job they currently have. The fix was making each session's capacity honest, and closing it out daily.
The handover
A 20-slide training session for the hiring team, a written procedure, and a one-page reference built for a phone screen rather than a binder: the fifteen-minute daily check as six checkboxes, what to do after every session, what each stage means, the exact words to text a candidate back, and what to do when something breaks.
The last line on that page is the one that matters most: if you can't fix it, ask. Don't build a workaround. An undocumented workaround is what created the second pipeline in the first place.
What happened at the switch
The cutover happened on a Sunday morning, candidate by candidate across eleven groups, on one principle: nobody already in the pipeline gets a surprise message, and nobody is invited twice. No candidate was re-invited and no interview was lost.
In the four days around the switch the interview stage went from 136 people to 56, the offer stage was used for the first time in the account's history, and the hire record went from one recorded hire to thirteen, as months of hiring that had happened but had never been written down finally became visible in one place.
With the flow defined, the client added two full-time recruiters and moved to seven-day interviewing. I handled the access provisioning, which had to route through the enterprise partner rather than the client's own account, a consequence of an earlier finding that the client doesn't directly hold its own software contract. Knowing that in advance turned what would have been a week-long mystery into a support case opened the same afternoon.
The build
What I built from scratch
Eight weeks, one person, across five disciplines. None of this existed in a usable form beforehand.
Tracking & infrastructure
Conversion tracking, tag management, analytics-to-ads linking and a campaign tagging system across three channels, built from nothing, tested end to end, and now the account's single source of truth.
Paid acquisition
Three channels rebuilt and managed, a 259-term search audit, a blocked-search layer, competitor conquesting, and a Spanish-language campaign properly tuned for a workforce segment the previous setup underserved.
Brand & creative
Corrected brand colors sampled from source artwork, transparent logo assets, reusable creative templates with a render script, bilingual ad and social creative, and consistent public details across every platform a candidate checks.
Organic & search visibility
A four-week bilingual content calendar, a recurring job fair campaign, Google Business Profile verification unblocked, a review campaign, and job posting and FAQ markup built for Google's jobs results.
Hiring operations
A seven-stage pipeline with one owner and one rule per stage, a right-sized daily interview schedule, a documented cutover, a training session, a written procedure and a one-page floor reference.
Automation
An eight-message candidate communication set with triggers, timing and guardrails; dormant platform automation found and switched on; shared templates and tracked links across every login. Seven-day coverage carried by automation rather than staffing.
Four steps, in order, over eight weeks
- Discovery and snapshotI read every platform in the account myself, live, rather than working from a description of them.
- Clarity audit and roadmapFindings written down with an owner and a date against each, plus a running list of what was blocked and with whom.
- Build the foundationTracking, pipeline, messaging and documentation, in that order, because none of the later work is measurable without the first.
- Run and optimizeWeekly readouts against a committed plan, with every change re-measured on a named date.
What the client got out of it
- A cost per applicant they can quote, by channel, and act on. Before this, every hiring budget decision was a guess.
- Recruiters off manual scheduling and messaging, which is where the double bookings and the five-day silences were coming from.
- One hiring record instead of two that disagreed, so the business can finally see how many people it actually hires, and how fast.
- Search and AI visibility they didn't have before. A verified Google presence, job postings structured for Google's jobs results, and identical business details everywhere a candidate might check, so the company turns up, and turns up correctly, whether someone searches for it, asks Google, or asks an AI assistant.
- Seven-day candidate coverage reduced to a fifteen-minute daily check their own team runs.
- A weekly readout with owners and dates, including what's blocked and who is blocking it.
The client didn't buy an ad manager, a tracking contractor, an operations consultant and a trainer. The tracking rebuild made the paid work measurable. The paid work surfaced the hiring problem. The hiring work made the operation able to absorb the traffic. Bought separately, those are four vendors pointing at each other. One engagement, because each piece depended on the one before it.
Sound familiar?
You don't have to know what the fix is called
If you're spending on ads, job boards or software and can't say what a lead or an applicant costs you by channel, that's the first problem worth solving. Everything else compounds from there.
And if hiring in your business runs partly in a system and partly in someone's head, you don't have a hiring system yet. You have two, and they disagree.
Start a conversation