Product Design · Live Product · FlairX AI
Recruiters at FlairX were spending half a day just getting candidates into the system. I redesigned the intake flow across all three upload paths until that dropped to 30 minutes.
The challenge: Make the AI worth using without making recruiters feel like it was making decisions for them. Single upload, bulk, CSV. Three different paths, each with its own way of breaking, each with its own trust problem.
Live Product01 · Context
Make the whole candidate intake process faster, and make the AI that was already built into the product actually worth having.
Every field typed by hand. Every time. A recruiter couldn't start scheduling until they'd finished data entry, which could take hours depending on the batch size.
Résumé parsing, bulk uploads, and ATS integrations. All three redesigned at the same time, not one at a time.
Recruiters had to stay in control. The automation was there to save time, not to make the system feel like a black box. If it can't tell you what it did, it shouldn't do it quietly.
Founder/CEO, product team, frontend and backend engineers.
Month 1: discovery sprint (6 recruiter interviews, flow mapping, competitive audit). Month 2: design, wireframes, prototypes, 3 rounds of testing with internal users. Month 3: final designs, edge case coverage, dev handoff.
02 · The Problem
“Why am I entering the same information again and again?”
These quotes came from structured interviews with 6 recruiters at FlairX during a 2-week discovery sprint at the start of the project, before any design work began.
“Why am I entering the same information again and again?”
“Bulk uploads break or miss details. I don't trust it.”
“If I make one mistake, the entire flow collapses.”
“I wish the system would just do this for me.”

03 · Ideation & Flow
04 · Design Decisions

Cleaner field layout, restructured intake steps. But still manual. The AI was there and completely ignored. It didn't solve the right problem.

Spread upload, validation, and review across separate pages. It looked organized on paper. In testing, people kept losing track of where they were.
Upload a résumé, the system fills in the fields. You review what it got. You are not starting from a blank form.
If I hand you a pre-filled form and ask you to check it, that is a completely different job than handing you a blank one. You're correcting instead of creating. That shift matters more than it sounds.
I'd want to test what happens when the AI gets a field wrong. Does a wrong pre-fill feel worse than a blank? I don't actually know. That needs real data.
Upload, review, confirm. All one page. No back button, no losing your place.
Multiple screens failed in testing. People lost track of where they were and what was left. One long page with a clear sense of progress worked better.
I'd want to test this with someone doing 100+ candidates in a session. At that volume, a page that long might get exhausting. A stepper could work better. I haven't tested it at that scale.
Bulk upload has its own dedicated flow: parsing progress in real time, a summary table, inline editing for anything the AI missed.
In the old system it was an afterthought. It lost data and gave you no feedback while it was working. Recruiters doing high-volume hiring needed it to actually be reliable.
Parsing everything synchronously blocks the UI on large batches. I'd look at async processing with a notification when it finishes so recruiters can do something else while they wait.
If a field is wrong or missing, it shows in the review table right where the problem is. Nothing blocks you until you have actually seen the issue.
A separate error screen means stopping, reading a list, then going back. Inline means you fix the phone number while you're looking at that row. Much less switching around.
I'd add undo for dismissed warnings. Recruiters close things by accident, and right now the only way to get that back is to reprocess the whole file.
05 · Final Designs



06 · Stage 3 · ATS Integration
Stage 3 was the most technically opaque part of the flow for recruiters. They knew they needed their ATS data in FlairX, but had no mental model for how that transfer would work. This is what I designed for it: a flow where you can see exactly what's being pulled, which fields map where, and confirm before anything lands in the pipeline.
Stage 3 · ATS Integration · interactive prototype, click through the full flow
07 · Edge Cases



Unsaved files warning

Failed files notice

Empty pipeline warning

Required fields block

Duplicate detection
08 · Impact
2 hrs → ~30 mins
Processing a batch of résumés went from half a day to a coffee break.
130 hires through the flow
130 candidates were hired from roles sourced and processed entirely through the redesigned intake flow in the first six months (founder-reported, from pipeline data). The redesign owns the intake, not the hiring call, but every one of those hires moved through it.
Duplicates eliminated
The system catches repeated entries automatically. Nobody has to check by hand anymore.
Bulk uploads got reliable
Recruiters stopped dreading high-volume days. They knew what was happening at every step.
09 · Handoff
The design handoff covered all three upload paths, every edge case, and the full alert system. Engineers received a Figma file with component-level annotations, interaction states documented in Notion, and a Jira ticket per feature with acceptance criteria written against observed user behavior, not against design spec.
Every screen in the intake flow built from reusable components with explicit state coverage: default, hover, loading, error, success, disabled.
Inline notes on every non-obvious behavior: what triggers the duplicate detection, what cancels an in-progress upload, how the AI confidence threshold maps to the review table display.
A documented matrix of every failure mode we designed for: mixed upload states, AI misses, unsaved files warning, empty pipeline. Expected behavior for each.
10 · Reflection
Showing AI reasoning on every card created noise that made people trust the system less, not more. Early prototypes showed everything: the confidence score, the extracted fields, the source data. Recruiters didn't feel informed. They felt watched.
The final design shows its reasoning only when confidence is low, or when a recruiter stops to look. When the AI is sure, it just fills the field. When it's not, it flags it. That calibration wasn't in the brief. It came out of watching people use the early version and noticing where they flinched.
I'd want to sit with recruiters doing 100+ candidates in a day. The single-page flow works fine at normal volume, but at that scale it might get exhausting. A stepper with clear checkpoints could work better. I haven't tested it and I don't know for sure.