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.

Client
An Amazon DSP delivery contractor, Paducah, KY
Brief
Hire drivers, faster and cheaper
Engagement
Audit, build, and ongoing management
Period
July 2026 to present
Services
Audit & Foundation · Paid Acquisition · Organic Content System · Marketing Tech & Reporting · Search & AI Visibility

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

  1. 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.
  2. 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.
  3. I was hired to build out their marketing engine, and in the process helped optimize, streamline and automate their hiring process.
  4. 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.
Audit & Foundation

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.

In plain terms

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.

Audit & Foundation Marketing Tech & Reporting

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.

Pipeline one: automatic, working, undocumented Pipeline two: by hand, in an inbox, invisible 273 candidates · 9 replies unread up to 5 days One pipeline stages that each mean one thing
The two pipelines quoted different interview times for the same day. The fix was consolidation rather than automation.
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.

Audit & Foundation Marketing Tech & Reporting

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.
Paid Acquisition

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.

Before 3rd place in its own auction
After 1st place in its own auction
Before $3.23 per completed application
After $3.10 per completed application

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.

One job board's share of the paid budget 36%
The same job board's share of applications the system could count 100%
Just over a third of the budget was producing every application the account could actually count, at $3.10 each. Paid traffic overall was about a fifth of applicants and roughly half of all interview bookings. Budget followed the evidence.
Organic Content System Search & AI Visibility

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.
Why the Google profile matters more than it looks

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.

Marketing Tech & Reporting

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

Invited Booked Attended Decided Offered Hired
The stages that replaced one overloaded status field. That single field had meant invited, booked, attended and passed all at once, so it could never be read as attendance, and any report built on it was wrong four ways.
  • 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.
AcknowledgementSent the moment an application lands, so nobody wonders whether it arrived.
InvitationThe interview offer that used to be typed out by hand, 273 times.
ConfirmationFires when the candidate books, carrying the one true time.
Reminder at 24 hoursFar enough out that a driver can still rearrange a shift.
Reminder at 2 hoursClose enough in to catch the ones who forgot.
ResendFor an invitation that went unanswered, once, not repeatedly.
No-show rebookA second chance offered automatically instead of a candidate quietly lost.
Close-outEnds the loop, records the outcome, and stops everything else firing.
Eight messages, each with a defined trigger, timing, channel and a 48-hour guardrail so nobody gets messaged into the ground. Not one of them is typed by a person.

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

Before: a week of interview slots Two fixed slots, three days a week. Each one offered 55 seats and filled between zero and four.
After: a week of interview slots Hourly, ten to five, every day, right-sized so that filling a session is realistic rather than an empty room.
179 sessions across a rolling window, replacing six. The old schedule offered far more seats each week than the applicant flow could ever fill, which is why the sessions looked empty and why "send more reminders" was never going to fix it.

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.

Talk to me about your setup →
How it ran

Four steps, in order, over eight weeks

  1. Discovery and snapshotI read every platform in the account myself, live, rather than working from a description of them.
  2. 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.
  3. Build the foundationTracking, pipeline, messaging and documentation, in that order, because none of the later work is measurable without the first.
  4. Run and optimizeWeekly readouts against a committed plan, with every change re-measured on a named date.
The outcome

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
Previous
Previous

What the Bellmark Audit Found