AI screeningHR techRecruitingProduct feature

Renaming a Job Description Mid-Campaign Without Losing the Inbox

HireQwik September 16, 2026 10 min read

Say a TA lead is three weeks into a lateral hiring drive and renames a job description from “Backend Engineer” to “Backend Engineer - Payments,” because a second, unrelated backend role has just entered the pipeline and the two are about to collide in her inbox filters. A reasonable guess is that the rename applies only to new candidates going forward. It doesn’t. Every candidate already screened under the old name updates to the new label the moment she saves it. That surprises most recruiters the first time they see it, and it’s worth explaining why, because the alternative, the label only applying going forward, is the more common pattern in software and the worse one here.

What changed with a rename, and what it means for you

Renaming a job description in HireQwik changes the label everywhere it’s used: the Jobs page, the trigger picker, and every candidate row in the inbox that references that JD, regardless of when that candidate was screened. There is no split state where old candidates show the old name and new ones show the new name. The label is consistent across the JD’s entire history the instant you change it.

That single property, consistency, is the entire point of the feature, and it’s worth being specific about why it isn’t the obvious default.

Why this is a live join, not a stale copy

Most systems that show a label next to a record store that label at the moment the record is created. A candidate row saved on Monday under “Backend Engineer” would, in that model, carry the string “Backend Engineer” forward permanently, a snapshot frozen at creation time. Rename the JD on Thursday and every row created before Thursday keeps showing the old text, because the text was copied, not referenced.

HireQwik’s inbox does the opposite. Each candidate row joins its label from the JD document itself, live, every time the inbox is rendered, rather than reading a copy stored at creation time. Change the JD’s label and every row referencing it updates on the next render, no batch job, no backfill script touching 60 old rows, because there was never a copy to update in the first place.

We built it this way after noticing what a snapshot model actually does to a recruiter’s inbox during a real, multi-week drive. A campus or lateral hiring campaign runs for weeks. Labels get corrected mid-drive more often than teams expect, not because anyone made a mistake, but because ambiguity that wasn’t visible on day one becomes visible on day twelve, once a second, similar role shows up. A snapshot model would leave that inbox split between two names for the same underlying role, which is a worse version of the duplicate-title collision problem we’ve written about separately, this time self-inflicted by the rename itself rather than caused by two documents parsing to the same title.

The parsed title still exists underneath

Renaming the label doesn’t touch what HireQwik originally extracted from the uploaded job description document. That parsed title, the one taken directly from the document text, stays visible as a subtitle beneath whatever label you’ve set. If you rename “Backend Engineer” to “Backend Engineer - Payments,” the JD’s detail view still shows “Backend Engineer” as the underlying parsed title, so you can always trace a label back to the document it came from.

This matters most when a JD has been renamed more than once, which happens on longer drives. Without the parsed title staying visible, a recruiter picking up someone else’s campaign three weeks in has no way to confirm the current label actually corresponds to the role they think it does. With it, the subtitle is a permanent anchor back to the source document, independent of however many times the label has changed on top of it.

When you’d actually want to rename mid-campaign

The scenario above is the most common one: two roles that looked distinct on day one turn out to need disambiguation once a second JD enters the pipeline. But there are a few other real cases worth naming.

A JD gets uploaded with a generic or internal-only title, “Req 4471” or “BE-Q3”, and a recruiter wants the inbox to show something a hiring manager will actually recognize, without re-uploading the document and losing the trigger, the rubric, and every candidate already screened. A role’s scope shifts mid-drive, a generalist requisition narrows into a specific specialization once the hiring manager clarifies what they actually need, and the label should reflect that shift for anyone reviewing the pipeline going forward. Or a typo simply needs fixing: “Sr. Sofware Engineer” should read “Sr. Software Engineer,” and there’s no reason that fix shouldn’t apply to candidates already in the inbox.

None of these require touching the underlying trigger configuration, the per-JD rubric, or any candidate already screened. The rename is isolated to the label, which is exactly what makes it safe to do mid-drive rather than something you’d hold off on until the campaign ends.

What a rename does not do

It’s worth being equally clear about the edges. Renaming a JD does not re-score any candidate. It does not change the rubric, the knockout questions, or anything that determines how a candidate is evaluated. A candidate scored under the old label and a candidate scored under the new one were evaluated identically, because the label is presentation, not logic. If you’re trying to change what the JD actually screens for, that’s a rubric edit, a separate action with separate consequences, not a rename.

It also doesn’t merge two JDs into one. Renaming “Backend Engineer” to “Backend Engineer - Payments” doesn’t pull candidates from a genuinely separate “Backend Engineer - Payments” JD that already exists into this one; they remain two distinct JDs with, now, distinguishable names. If your actual goal is consolidating two JDs that were accidentally created for the same role, a rename won’t do that on its own, and forcing one to look like the other by renaming is a workaround, not a fix, for a JD that should have been archived instead.

Why stale labels are worse than they sound

It’s tempting to file a stale label under cosmetics, a mismatched string that looks a little off but doesn’t actually cost anything. In a high-volume inbox, it costs more than that. Greenhouse’s own best-practice guidance for evergreen roles makes a related point from the opposite direction: they recommend tracking a role by a stable alphanumeric ID rather than its title, specifically because a title alone drifts over the life of a requisition and stops being reliable for search and reporting. HireQwik solves the same underlying problem differently, by making the label itself live rather than adding a separate ID to track alongside it, but the diagnosis is the same one Greenhouse’s own customers run into: a requisition’s name is how a recruiting team searches, filters, and reports on that role for its entire life, and once it drifts from what people actually call it day to day, every downstream filter built around the old name quietly stops matching what the team is looking for. An inbox filter set to “Backend Engineer - Payments” that silently excludes every candidate still labeled “Backend Engineer” isn’t a display bug, it’s a filter returning the wrong answer, and a recruiter has no way to know it’s wrong unless they go looking for the discrepancy directly.

The general software engineering term for what we avoided here is a stale denormalized copy: data duplicated at write time for convenience, which then drifts from the source of truth the moment the source changes. It’s a well-known tradeoff, not a novel problem, and the standard fix is exactly what we did, read from the source live instead of caching a copy that has to be kept in sync by hand.

What this means for exports and reports

One practical consequence worth knowing: anything the inbox renders after a rename shows the new label, including a report or export generated post-rename. Anything you already exported, a spreadsheet downloaded last Tuesday, a screenshot pasted into a hiring-committee deck, keeps whatever label was current at the moment you generated it, because that’s a snapshot you took, not a live view. If you rename a JD after sharing a report built from the old label, the live inbox and that report will disagree until someone regenerates it. That’s expected behavior, not a bug, but it’s worth remembering the next time a hiring manager asks why their week-old PDF doesn’t match what you’re looking at on screen.

A practical habit for longer drives

For a campaign running several weeks, the useful discipline is naming JDs for what a recruiter reviewing the inbox in week three will need to distinguish, not for what made sense on the upload form in week one. If a second, related role is even plausible during the life of the drive, get ahead of it: label with the distinguishing detail now, location, specialization, or level, rather than waiting for the collision to force a rename later. The rename mechanism means you’re never stuck with a bad early choice, but a drive with a stable, clear label from day one is still easier to run than one that needed correcting midway, even when the correction itself is painless.

How a rename interacts with auto-disambiguation

There’s one interaction worth spelling out precisely, because it’s the kind of edge case that only shows up once a team has been running HireQwik long enough to hit it. If two JDs once collided on the same parsed title and got an auto-disambiguation suffix, location, upload date, or a short id, appended, a manual rename to either JD replaces the entire label, suffix included. Renaming “Backend Engineer (Bangalore)” to “Backend Engineer - Payments” doesn’t leave a ghost of the old suffix behind; the new label is exactly what you typed, nothing more.

That has a practical implication if the reason two JDs collided in the first place is still true after your rename. Say you rename “Backend Engineer (Bangalore)” back down to plain “Backend Engineer” because you’ve decided you don’t need the location qualifier anymore. If a second “Backend Engineer” JD from the same document upload is still active, HireQwik reapplies disambiguation the next time it detects a collision, because that logic runs continuously, not only at upload time. You won’t end up with two identically labeled JDs silently confusing each other in the inbox again; the system re-derives a suffix rather than assuming a manual rename means the collision is intentionally accepted. It’s worth knowing this happens automatically, though, so a rename that looks like it “reverted” a location tag isn’t mistaken for a bug.

A worked example across a real campaign

Picture a JD uploaded on day one as “Software Development Engineer,” parsed cleanly from the document with no collision to worry about. Two weeks into the drive, a second, closely related opening appears, also parsing to roughly the same title, and the auto-disambiguation logic appends a distinguishing suffix to keep the two apart in the inbox filters. A week after that, the hiring manager clarifies that the first role is specifically for the payments team, and a recruiter renames it to reflect that.

At every step, the inbox stays internally consistent. Candidates screened on day one under the plain title show the disambiguated label once the collision triggers it, then show the payments-specific label once the recruiter renames it again, all without anyone touching a single candidate row directly or re-running any part of the pipeline. The label is a lens on top of the underlying data, not a value baked into each row at the moment it was created, and that’s precisely what makes three label changes over three weeks a non-event for anyone reviewing the pipeline on day twenty-one.

The take

A label that only applies going forward looks like a reasonable default until you picture the actual inbox it produces: the same role, split into two names, for no reason a recruiter chose. Reading the label live, per row, from the JD document itself, rather than storing a frozen copy, is a small architectural choice that avoids that split entirely. It’s the kind of detail that’s invisible when it works and confusing when it doesn’t, and it’s why we built it this way rather than the simpler-sounding alternative. Talk to us if you want to see how relabeling behaves on your own live campaign.

Frequently asked questions

If I rename a job description mid-campaign, do candidates screened before the rename show the old label?

No. Renaming a JD updates the label everywhere it appears in the inbox, including candidate rows that were screened before the rename. The inbox reads each row's label live rather than storing a copy from when the candidate was added.

Does renaming a job description in HireQwik change the original parsed title?

No. The label you set is separate from the title HireQwik originally parsed from the uploaded document. The parsed title stays visible as a subtitle, so you always know what the JD document actually said even after relabeling it.

Can I rename a job description at any time, or only when I first upload it?

Any time. The label is editable at upload and stays editable for the life of the JD, which is what makes it useful for fixing a name that turns out to be ambiguous or wrong once a campaign is already running.

See your own candidates screened

Book a 30-minute demo. Bring a live JD and we'll screen against it, then start with a pilot on your own candidates before committing to anything.