The surface problem: manual feedback chasing
Every team running a multi-role hiring function faces the same bottleneck: interviewers don't submit their feedback on time. At NALA, I was spending three to five hours a week sending Slack DMs asking hiring managers whether they'd submitted their Workable scorecards. That’s a lot of time spent on a task that is entirely predictable and requires essentially zero judgement.
The conventional wisdom treats this as a people problem (interviewers are busy, forgetful, lazy?) and applies a people solution (send a manual reminder, escalate to their manager, put it on the standup agenda, issue warnings to repeat offenders, run yet another hiring training). That's wrong. It's a systems problem. The chase cycle is perfectly predictable: you know who interviewed, when it happened, and whether they submitted. My mantra of the week? If it's predictable, automate it.
The root problem: accountability at scale
When you have 3 open roles and 5 interviewers, you can track feedback submissions easily enough. When you have 15+ roles and 10+ interviewers doing 20+ interviews a week, you physically cannot. Things slip, interviewers submit feedback 5 days after an interview based on a vague recollection.
The deeper issue is that nobody was watching. Interviewers deprioritise scorecards because there's no consequence. The next meeting matters more than a Workable review that nobody holds them accountable for (other than that annoying HR guy).
The build: how Chase actually works
Chase is one bot in a set of four I built for NALA's hiring in March 2026. Chase catches tardiness. The other three catch process violations, poor interview prep, and pipeline rot. This piece is about Chase, because tardiness is the highest-volume problem and the easiest for me to explain.
You do not need to be an engineer to follow this. I’m not one. I designed the system because I understood the problem and the architecture. I had Claude Code write the code. What you need to bring is the system design, here’s how ours worked to give you some inspo.
The whole thing is one idea: every fifteen minutes on weekdays, we ask four systems one question each, and act on the answers.

Four questions. Workable knows who is at an interview stage and who has filed out a scorecard. Google Calendar knows when the interview actually happened and who was there. Our folks live in Slack so, Slack is how the nudge goes out. HiBob knows who to escalate to when it gets serious. Chase is just the thing in the middle that asks, and orchestrates.
Three design decisions did all the work. Everything else is plumbing that you can figure out with Claude, a few late nights and a coffee or two.
Decision one: the calendar is the source of truth, not the ATS.
This is the one that surprised me. Workable knew a candidate had reached the "interview" stage. It did not reliably know the interview had actually happened, or when, or who was in the room. I think this was due to the weird-proxy-user-email-IDs Workable creates (strong technical term from me). Google Calendar knew all three. So Chase reads the calendar first and the ATS second, then makes a match. The instant I did that, it stopped chasing people for interviews that had been rescheduled, or chasing the wrong people altogether. These two things were my biggest pain points early on in this build.
Another trap, searching the calendar for "Sarah" matches Sarah's interview, but also "Sarah 1:1" and "prep for Sarah's role." The fix: every interview Workable schedules leaves a fingerprint on the calendar invite, a hidden attendee address that only Workable adds. Chase matches on that fingerprint, not on the candidate's name. No fingerprint, not a real interview, no chase. That single check saved a bunch of false alarms.
Decision two: escalate on a timer, and pick the numbers on purpose.
Once Chase knows an interview happened and no feedback exists, it starts a clock. I landed on what I call the 30-24-72 rule.

The exact hours are not sacred, but the logic behind each cut is. I made the call that thirty minutes is too soon to nag someone who is probably still walking back to their desk or has back-to-back meetings. Twenty-four hours is when gentle stops working and a private nudge is warranted. Seventy-two hours is when a slip stops being a slip and becomes something a manager should know about, so the bot escalates to the interviewers manager. Then it repeats daily, because a bot does not get embarrassed about asking a fourth time, it does not get weary, it does not get frustrated. I did.
Decision three: nobody is exempt.
This is the one that makes or breaks it, and it has nothing to do with code. When I switched Chase on, it escalated the most senior people in the company on exactly the same timer as everyone else. I made the call that this was totally fine. Standards are standards and accountability and transparency are core cultural components at NALA.
In my mind an accountability system that carries a skip-list for important people, is no longer an accountability system. It didn’t feel right enforcing rules on junior people alone. It doesn’t matter if it’s me as Head of People or the CEO.
Three things in life are certain for people at NALA. Death, taxes & Chase comes for us all.
Eighty-plus escalations later (not just polite nudges, escalations), across twenty interviewers at every level, Chase has authority precisely because it has never once made an exception.
If you want to build it yourself.
You need four things wired together: access to your ATS (Workable, Greenhouse, Lever all have APIs), Google Calendar, Slack, and your HRIS for the manager lookup. The logic is about a thousand lines, and the first working version took me about a day. If you can code, you’re flying and you’ll be done in a weekend. If you can't, this is a well-scoped brief you can hand to a contractor or an AI coding tool, because the hard part isn’t really the code. It was the three decisions above, and now you have them.
The results: the honest numbers
My own chasing went to zero. Smug about this. Three to five hours a week back, permanently. That is the win I built it for, and it needs no asterisk.
Before Chase | After Chase | |
|---|---|---|
My weekly time chasing | 3 to 5 hours | none |
Median wait for feedback | ~4.9 days | ~4.1 days |
Escalations on record | Many, all manual, hard to find. | 83, each one timestamped |
The feedback got faster too, modestly. The median wait dropped from about 4.9 days to 4.1, call it a day quicker. I'll take a day. I am not going to stand here and call a day transformational. Speed was never really the point.
The point was that feedback stopped falling through the cracks. Before Chase, an interview could happen and the scorecard could simply never arrive. The interviewer moved on, I lost track, and the candidate's file had a hole in it. Lucky for me the bot does not lose track, and it does not get embarrassed about asking a fourth time. So the feedback that used to never come now gets filed, by everyone, no matter how senior. That is the change that actually mattered! Hard to quantify as a percentage but take it from me, gloriously satisfying!
What it did not fix was quality. A one-line "seemed fine" clears the check and tells you nothing. Automating the chase got the tax paid. It did not make the tax smaller. That is a separate problem, and a harder one, and it is where I went next / am going. Once more unto the breach.
One honesty note, since this is a piece about receipts: Chase shipped alongside three other bots that tightened the same pipeline, so not all of this is Chase acting alone.
Closing: the bot was the easy part
If you run hiring at any scale, I would recommend three things this week.
Measure the gap before you automate anything. For one week, two columns per interview: when it happened, from the calendar, and whether feedback exists. That gap is your problem, quantified, and it is almost always worse than the vibe. You can easily get this from your ATS and a bit of prompting.
Set an escalation cadence and write it down. 30-24-72 works pretty well for me. Writing it down matters more than the exact hours, because it turns chasing from a personal favour you keep asking into a process the company has agreed to.
Decide who is exempt. Psst, the right answer is no one. This means when the first senior person gets chased in public, it’s less awkward.
I stopped chasing people the week I decided the system, not me, would do it. Building the bot was a week-ish. Deciding the design, and that no one gets a pass, not the founders, not me, was the actual work. The code was the easy part.
Want to build it? I can write up the full specification as a follow-up, or rather, my companion Monsieur Claude can: the exact escalation logic, the state file that stops it double-messaging, the calendar-matching rules, and how the four integrations wire together. Close to something you could hand an engineer, or an AI coding tool, and get a working bot back. If enough people want it, I'll write it up. Drop a comment with "spec" and I'll know it's worth writing.