Skip to content
SKSuraj Kumar

Hiring

Recruitment & Applicant Tracking — Reference Build

Runs hiring on structured scorecards instead of opinions, finds interview slots across a panel’s real calendars, and stops candidates going silent.

  • Business software
  • HR tech
  • Scheduling
  • Workflow
  • Next.js
Role
Sole engineer. Pipeline state model, scheduling algorithm, scorecard design and the whole application interface.
Work type
Self-directed build — no client
Timeline
10 weeks build effort · 2025
Status
Case study published
Client
Independent build

Build effort, not elapsed calendar time. Engagements ran alongside study and employment, so this figure is the work itself rather than the span it sat in.

Interface built in code for this case study — not a client screen capture.

01Business problem

What was actually going wrong

Hiring at most companies runs on a spreadsheet and a shared inbox, which is why good candidates go silent for two weeks and interview decisions come down to whoever spoke last.

Who feels it

  • Hiring managers running roles out of email
  • Recruiters chasing panel availability by message
  • Interviewers assessing without a defined rubric
  • Candidates waiting with no idea where they stand

Applications arrive by email. Someone forwards promising ones to a hiring manager, who replies when they get to it. Interview scheduling becomes a chain of messages trying to find ninety minutes that three people share. Candidates in the middle of the pipeline are forgotten because nothing tells anyone they are waiting.

Evaluation is the weaker half. Interviewers arrive without knowing what they are assessing, notes are written in a document nobody reads, and the debrief is dominated by the most senior or most recent opinion. When feedback is shared before everyone submits, the first strong view anchors the rest — a well-documented effect that a shared spreadsheet actively encourages.

And nobody can answer basic questions afterwards: how long a role took to fill, where the candidates who succeeded came from, or which stage everyone drops out of. The data existed; it was never structured.

02Product overview

What got built

An applicant tracking system where each role has a defined pipeline with entry requirements, interviews are scheduled by intersecting real panel availability, scorecards are structured per interview and hidden until submitted, and every stage has a response deadline.

Engineering notes

  • Free/busy inversion and intersection with per-timezone working hours
  • Blind scorecard release enforced server-side
  • Stage transitions validated against required artefacts
  • Cross-role candidate identity matching with reviewed middle band

The pipeline is a state machine per role. A stage advance requires its artefacts — a screening stage requires recorded notes, an offer stage requires an approved compensation band — so a candidate cannot arrive at an offer without the evaluations that justify it. Every candidate at every stage has a response deadline, and the dashboard is built around what has breached it.

Scheduling is the feature that saves the most time. Panel availability is read from connected calendars, converted into free intervals, intersected to find windows long enough for the interview, and filtered against working hours in each interviewer’s own timezone plus a buffer between meetings. The recruiter picks from real options instead of proposing times and waiting.

Scorecards are structured against the role’s defined attributes with a rating and required evidence per attribute. Submissions are hidden from other interviewers until they submit their own, which removes the anchoring effect that makes a shared document a worse instrument than no document. Aggregation shows agreement and disagreement rather than collapsing to an average.

Candidates are deduplicated across roles, so a person who applied last year appears with their history rather than as a new applicant, including any do-not-proceed decision and its reason.

03Key features

What the software does, feature by feature

10 capabilities, of which 1 are model-backed. The rest are ordinary deterministic software, and the distinction is marked so the AI claim stays honest.

  • 01

    Role pipelines with entry requirements

    Each role defines its stages and what must exist before a candidate can advance, enforced on the transition.

  • 02

    Response deadlines

    Every candidate at every stage has a deadline, and the dashboard leads with what has breached it rather than with totals.

  • 03

    Panel availability scheduling

    Free intervals from connected calendars are intersected to produce real slots, respecting each interviewer’s working hours and timezone.

  • 04

    Blind scorecards

    Structured ratings with required evidence per attribute, hidden from other interviewers until submitted.

  • 05

    Agreement view

    Aggregated scorecards show where the panel agrees and where it splits, instead of averaging disagreement away.

  • 06

    Candidate deduplication

    Applicants are matched across roles and time, so previous history and prior decisions surface immediately.

  • 07

    Structured resume parsingmodel-backed

    Contact details, roles, dates and skills are extracted into fields for search, with the original document always primary.

  • 08

    Offer approvals

    Offer creation requires approval against a band by amount and level, recorded with the approver and the reason.

  • 09

    Candidate communication

    Templated updates at each stage including rejections, so candidates are not left silent by default.

  • 10

    Funnel and source reporting

    Time in stage, drop-off by stage and outcome by source, computed from the pipeline rather than reconstructed.

04User flow

How a person moves through it

The path from the trigger to the finished record, with each step attributed to whoever performs it — a person or the system.

  1. 01Hiring managerDefines the role, its pipeline stages, the assessed attributes and the interview panel.
  2. 02CandidateApplies; the application is parsed into structured fields and matched against existing candidates.
  3. 03RecruiterScreens against the role requirements and advances or rejects with a recorded reason.
  4. 04RecruiterPicks an interview slot from intersected panel availability and sends the invitation.
  5. 05InterviewerRuns the interview against the defined attributes and submits a scorecard with evidence.
  6. 06PanelReviews aggregated scorecards after all are submitted, focusing on where they disagree.
  7. 07Hiring managerRaises an offer, which requires approval against the band before it can be sent.
  8. 08RecruiterWorks the deadline dashboard so nobody waits without a response.

05Architecture

How it is put together

The processing path first, then the layers it runs on, then the constraints that shaped both.

Path through the system

6 stages

  1. 01

    Apply

    Application captured, resume parsed, candidate deduplicated.

  2. 02

    Screen

    Requirements checked, stage transition validated against artefacts.

  3. 03

    Schedule

    Calendar free/busy intersected into valid slots with buffers.

  4. 04

    Assess

    Blind scorecards collected per interviewer against role attributes.

  5. 05

    Decide

    Aggregated view showing agreement, then a recorded decision.

  6. 06

    Offer

    Band approval, offer issued, outcome recorded to the funnel.

Layers

Interface
Deadline-first recruiter dashboardRole pipeline boardCandidate profile with cross-role historySlot picker from real availabilityScorecard form and agreement view
Application
Stage transition state machineInterval intersection schedulerScorecard visibility rulesCandidate identity matching
Services
Calendar free/busy accessResume parsing to structured fieldsTemplated candidate emailOffer approval routing
Data
Candidates and applicationsRole definitions with attributes and stagesScorecards with submission timestampsStage transition history

Why it is shaped this way

  • Stage transitions are validated against required artefacts, so the pipeline cannot contain a candidate at offer stage with no recorded evaluation. Data integrity here is what makes the funnel reporting trustworthy.
  • Scorecard visibility is enforced server-side. Blind assessment implemented as a hidden section in the interface is not blind, because the data has already been sent to the browser.
  • Scheduling works in UTC internally and renders in each participant’s zone. Working hours are evaluated in the interviewer’s own zone, which is the part that gets skipped and produces 7am invitations.

06Technical decisions

The choices that mattered, and what each one cost

Every decision here was contested by a reasonable alternative. The trade-off column is the part usually left out.

01

Compute interview slots by intersecting free intervals rather than proposing times and confirming.

Why

The scheduling round trip is the single largest source of delay in hiring. Deriving real slots from calendar free/busy turns a multi-day exchange into a selection.

Trade-off

Requires calendar access and correct handling of all-day events, tentative responses and recurring meetings. Interviewers without a connected calendar fall back to declared availability windows.

02

Hide scorecards until each interviewer submits their own.

Why

Anchoring is real and a shared feedback document makes it worse. Independent submission before disclosure produces genuinely independent signals, which is the only reason to run a panel.

Trade-off

A slow interviewer blocks the debrief view, so a deadline plus an explicit override — recorded, with a reason — releases the aggregate.

03

Require evidence text alongside every rating.

Why

A number without a reason is not reviewable, and a hiring decision that cannot be reviewed cannot be improved or defended. Requiring evidence also improves the ratings themselves.

Trade-off

More friction for interviewers. Mitigated by keeping attributes few and specific rather than a long generic rubric.

04

Validate stage transitions against required artefacts.

Why

A pipeline whose stages mean nothing produces reporting that means nothing. Making the requirement structural keeps the funnel data honest.

Trade-off

Genuine exceptions exist — a referral hired fast — so an override path exists, logged and visible in reporting rather than silent.

05

Keep the parsed resume subordinate to the original document.

Why

Parsing is imperfect and a wrongly parsed date can eliminate a candidate. The structured fields power search; the original is what a human reads and the parsed values are editable.

Trade-off

Search can miss a candidate whose resume parsed poorly, which is why keyword search runs over the raw text as well as the fields.

07Challenges

What was genuinely difficult

Not the setup work. These are the problems where the first implementation was wrong and had to be reconsidered.

01

Finding interview slots across a panel without producing options that were technically free but practically unusable.

Approach

Busy periods are merged into a normalized set per interviewer, inverted into free intervals over the search horizon, then intersected across the panel. Each candidate window is filtered against that interviewer’s working hours in their own timezone, a configurable buffer before and after existing meetings, and a minimum notice period. Results are ranked by how few interruptions they cause to already-busy days.

Outcome

Recruiters pick from a handful of slots that all actually work, and the back-and-forth disappeared from the process.

02

The same person applying to several roles over time, appearing as unrelated candidates.

Approach

Candidate identity is matched on normalized email and phone, with name plus employment-history overlap as a weaker signal that routes to review rather than merging. A merged candidate keeps all applications and any prior decision with its reason attached.

Outcome

A previous do-not-proceed decision surfaces before another panel spends five hours rediscovering it.

03

Timezone handling that produced correct-looking but wrong invitations.

Approach

All storage and computation is in UTC with the interval logic timezone-free. Working hours and rendering are applied per participant using their zone, and daylight-saving transitions are handled by resolving working hours against the local calendar date rather than a fixed offset.

Outcome

Invitations land in everyone’s working day, including across a daylight-saving change, which was where the naive offset arithmetic broke.

08Business value

What it changes for the business

Stated qualitatively on purpose. Invented percentages are the easiest thing to put on a portfolio and the easiest thing to see through.

Operational effect

  • Removes the scheduling round trip, which is usually the longest delay between a good candidate applying and being interviewed.
  • Makes hiring decisions reviewable, because every rating has recorded evidence behind it.
  • Reduces the anchoring effect in panel debriefs by collecting independent assessments first.
  • Stops candidates going silent by making every stage deadline visible and breaches actionable.
  • Surfaces prior candidate history and decisions instead of repeating a full process on someone already assessed.
  • Produces real funnel and source data, so recruiting effort can be directed at what has worked.

What would change at scale

  • Move calendar sync to incremental webhooks with a cached free/busy view, since re-reading every panel calendar on each search does not hold at volume.
  • Add structured, anonymised early-stage review for roles where reducing bias in initial screening matters, with the effect measured rather than assumed.
  • Introduce interviewer load balancing, because the same three people otherwise absorb every panel and scheduling quietly becomes impossible.
  • Add configurable data retention and candidate data export, which is a legal requirement in several jurisdictions rather than a feature.
  • Track scorecard attribute predictiveness against post-hire outcomes, so the rubric is refined against evidence instead of opinion.

09Interface

The screens where the work happens

Dense operational views rather than dashboards. These are used for hours at a time, so the priorities are legibility, keyboard flow and state that is never ambiguous.

Recruiter dashboard

Candidates past their stage deadline first, then interviews today, then awaiting scorecards.

Slot picker

Real intersected panel availability with each interviewer’s local time shown per option.

Scorecard

Role attributes with a rating and a required evidence field, and other submissions hidden until this one is in.

Agreement view

All scorecards side by side with agreement and split highlighted per attribute.

The screen above is built in HTML and CSS for this case study. It reproduces the layout, states and vocabulary of the real build without exposing client data, which is why it exists rather than a screenshot. It is evidence of design and of the decisions behind it. It is not a photograph of a deployed system, and no part of it is a capture of anyone else’s product.

10Technologies

What it is built with

Chosen for the shape of the problem, not for novelty. Anything unusual is justified in the decisions section above.

Frontend
  • Next.js App Router
  • TypeScript
  • Tailwind CSS
  • Server Actions
Application
  • Interval intersection scheduler
  • Stage transition state machine
  • Server-enforced scorecard visibility
  • Identity matching
Integrations
  • Calendar free/busy APIs
  • Resume parsing
  • Transactional email
Data
  • PostgreSQL
  • Stage transition history
  • Scorecards with submission timestamps

11Technical preview

Structure, models and annotated excerpts

There is no repository link on this site. What is available instead is the module structure, the data model, the interface contracts and annotated excerpts written for this case study — enough for a technical reviewer to judge the engineering.

Technical preview

Implementation detail for this build

Selected implementation details are available for technical review: component structure, data models, architecture notes and sanitized code excerpts. Some client-specific source material stays private because of confidentiality. Enter the project access keyword if you have been given one — the same one works across every case study.

A presentation convenience, not authentication. This is a static site, so the keyword ships to your browser with the page and anyone reading the bundle can find it — worth saying plainly rather than dressing it up. Nothing confidential is stored behind it.

Inside this section

  • Module and folder structure for the build
  • Data models and the interface contracts between layers
  • 2 annotated implementation excerpts
  • Design notes covering the decisions the excerpts imply
  • The same keyword opens every case study on the site

For private client work, contact me for a walkthrough.

Next step

Need something along these lines?

Send the process, the constraints and the deadline. You will get an honest scope, an architecture sketch and a timeline before any commitment.

Email
surajk86808@gmail.com
Based in
Bengaluru, India
Working hours
IST (UTC+5:30)
Availability
Taking new engagements