Panel interviews and interview pools Availability without calendar access Integration with your ATS

Custom interview scheduling software development

Scheduling a single interview is a calendar problem. A panel interview with three interviewers, a candidate who may choose their own time, and interviewers who also have their own work to do is a rostering problem with hard constraints. Appfront builds scheduling software that solves it: valid proposals instead of open gaps, a rescheduling route when someone cancels, and steering towards an even spread across your interviewers.

Why scheduling one interview is easy and a panel is not

Interview scheduling software determines which interview slots are genuinely available, offers them to the candidate and places the confirmed appointment in every relevant calendar. If you need the full recruitment process, with candidate tracking, vacancy management, matching and job boards, you want custom recruitment software development. Scheduling is one part of that, and at low volumes it is also the right place to start. If you run panels and schedule dozens of interviews a week, scheduling becomes a specialist requirement that justifies its own solution.

Scheduling an hour-long conversation between two people is trivial: take the overlap of two calendars and pick the first gap. A panel interview with three interviewers is different. There must be a continuous block of sixty or ninety minutes in which all three are free, within each person's working hours and time zone, with a meeting room or video link, buffer time between rounds, and the restriction that one of them conducts no more than two interviews a week because they have their own role alongside. Add a loop of three rounds on a single day and the number of combinations grows quickly.

This is the same class of problem as lesson and shift timetabling: combinatorial, with hard constraints and soft preferences. No method exists that always finds the best solution quickly; in practice you deploy a constraint solver, such as the open-source CP-SAT model in Google OR-Tools. That is the difference from a calendar link: a calendar shows gaps, whereas a scheduling system only shows combinations that have been proven to work.

Hard constraints

All panel members free in the same block, within their working hours, with an available room. A proposal that breaks any of these only shows up as an error once the candidate is involved.

Soft preferences

Preferably not three interviews on one day for the same assessor, preferably a panel with mixed experience. These factor into the score but do not block anything.

Where interview scheduling gets stuck in practice

A schedule that is set rarely stays set for long. An interviewer falls ill, a client meeting shifts. With a one-to-one interview that is a minor nuisance. With a panel, the loss of one panel member collapses the entire block: the other two see their blocked time freed up, and the candidate has taken half a day off for nothing.

The question that follows is organisational, not technical. Do you look for a replacement from the same pool, reschedule the whole block, or carry on the round with two assessors? A replacement only works if it is agreed in advance which competencies that round tests and who may cover them; otherwise you change your selection process without noticing. Rescheduling the block means solving the scheduling problem again, with less room to manoeuvre. Carrying on with two can be defensible, provided someone authorised makes the call and records the deviation. Software that does not support this leaves the decision with the recruiter, who at that moment is juggling ten other things. That is the difference from a calendar link: not in scheduling, but in rescheduling.

Interviewers are the scarce resource, not the calendar

Without guidance, every scheduling algorithm, and every coordinator in a hurry, picks the people with the most free space in their diaries. That is invariably the same handful of colleagues. They are not rewarded for it, and it comes at the expense of their own work. After a few months they decline more often or drop out of the pool, just when you are scaling up. A scheduling system should know capacity explicitly: a maximum per week, visibility of the actual distribution, and a pool per round type. Standard packages partly cover this; Greenhouse works with interviewer groups, working hours, buffer time and limits per interviewer.

Turnaround time is part of your offer

In the first quarter of 2026, according to the UWV tension indicator, the labour market was tight or very tight in 87 of the 93 occupational groups. In such a market, a candidate who waits three days for a response will already have been seen at another table. The time between "we would like to speak with you" and a confirmed appointment is therefore not an administrative detail.

What a scheduling system must be able to do

Reliable availability and a solver are the foundation. Four components determine whether the system stays in use.

Candidate chooses, with a hold

The candidate sees several real options with the interviewers involved. While the choice is open, the system holds those slots, and then releases them automatically.

Rescheduling as a first-class function

When someone cancels, the system calculates the consequences for the whole block and offers the routes: a replacement from the pool, rescheduling the block, or continuing with fewer assessors.

Pools and load balancing

A pool of qualified interviewers per round type, with a maximum per week. New assessors shadow along until they may be scheduled independently.

Feeding back to the ATS and to people

The confirmed appointment lands with the candidate in the ATS, interviewers receive their invitation with attachments and video link, and every change remains traceable.

Retrieving availability without looking at diaries

To schedule, you need one thing from an interviewer: when they are busy. Not with whom, about what, or where. That distinction can be enforced technically, and it is the first question your works council or privacy officer will ask. Google Calendar offers the freeBusy endpoint for this: only start and end times of busy blocks, never titles or attendees, for up to fifty calendars per request. Dedicated OAuth scopes exist for it, so you do not need to request read access to the full calendar.

In Microsoft 365, the same works through getSchedule in Microsoft Graph, with Calendars.ReadBasic as the least privileged permission. The response is an availabilityView: status codes per time slot, where 0 is free, 1 tentative, 2 busy, 3 out of office and 4 working elsewhere. You retrieve working hours and time zones from findMeetingTimes or mailboxSettings. Watch out for the pitfall that an app-only integration can by default reach all mailboxes in the tenant. You limit that scope with RBAC for Applications, the successor to application access policies.

We send invitations via iCalendar (RFC 5545) and iTIP (RFC 5546), so that a rescheduled interview updates in Outlook or Google Calendar instead of leaving a duplicate behind.

  • Only free/busy information, no appointment details
  • Google freeBusy with the calendar.freebusy scope
  • Microsoft getSchedule with Calendars.ReadBasic
  • App access restricted via RBAC for Applications
  • Audit log of every scheduling action
Google Calendar API (freeBusy) Microsoft Graph (getSchedule) iCalendar RFC 5545 iTIP RFC 5546 CalDAV RFC 6638 OAuth 2.0 OR-Tools CP-SAT ATS APIs

Even without appointment content, you are processing candidates' personal data. The Dutch Data Protection Authority expects that data to be deleted within four weeks of the procedure ending, or at most one year with consent. A system that does not enforce this will quietly become an archive of rejected candidates.

Not yet sure about a large project?

Test your idea first: a working prototype in 1 day

With OneDayBuild, we turn your idea into something tangible in one day for €1,150, so you can see whether further development is worth the investment. Decide to go ahead with the full build? Then we credit the full cost.

Explore OneDayBuild →

When you should not build this

For a large share of readers, custom development is the wrong choice here. If you conduct a handful of interviews a month, almost always one-to-one and with the same hiring managers, a scheduling link such as Calendly, Microsoft Bookings or Cal.com will take you a long way.

If you already have a mature ATS, start your research there. Interviewer groups, working hours, buffer time, limits and self-scheduling are built into the better packages, and a number of organisations considering custom work have never set them up. If you run panels at volume but without unusual rules, there are scheduling layers designed for exactly that which integrate with the well-known ATSs, such as GoodTime and ModernLoop. Building the same thing yourself only adds maintenance.

Custom development only makes sense when your scheduling rules fall outside what those products cover: interviews that may only be conducted by certified assessors, specialists working shift-based rosters who can only attend outside their duty hours, or a panel that must include a member from outside the department. An ATS without a usable scheduling API is also a reason, and once coordination hours have become the largest cost, the calculation changes.

If you build it yourself, factor in the ongoing burden. Google's calendar scopes are classed as sensitive and require verification of your application; in Microsoft environments you need administrator consent per tenant. And responsibility for retention periods and the processing register rests with you.

One more boundary, concerning AI. As long as the system only calculates timeslots, it remains a rostering tool. If you add assessment, such as ranking candidates or having interviews analysed, you fall into the recruitment and selection category of Annex III of the AI Act. That is a separate question, which we cover in AI for HR and recruitment.

Custom development is worth considering when

  • The panel composition rules follow that your package does not support
  • Your ATS does not offer a usable scheduling API
  • Coordination hours have become the largest cost
  • You are stuck on your supplier's roadmap

Related services

Two topics almost always come up here.

Custom recruitment software

If you need the full recruitment process, with candidate tracking, vacancy management, matching and job boards, then custom recruitment software development is the right route. Scheduling is one module within a larger whole.

AI for HR and recruitment

As soon as assessment comes into play, from ranking candidates to summarising interview notes, different rules apply. We cover what is sensible and permitted in that area in AI for HR and recruitment.

Frequently asked questions about interview scheduling software

At low volumes and with one-to-one interviews, you should do exactly that: a scheduling link or the scheduling feature in your ATS covers it completely. Custom development only becomes justifiable for panels, high volume, or rules that no package supports.

There is no need for that. Scheduling only requires free/busy information: the start and end times of booked blocks. Google provides this through the freeBusy endpoint with its own scope, and Microsoft 365 through getSchedule with Calendars.ReadBasic. Titles, attendees and locations are not included.

On a panel, a single cancellation can derail the whole block, so this is a core part of the design. The system offers the routes: a replacement from the same pool, moving the block, or proceeding with fewer interviewers. Who may choose which route is fixed per interview round.

Yes, and this is often the strongest reason to build it. Without steering, interviews end up with the colleagues who have the most open diaries, and they eventually burn out. The system therefore works with a pool per interview round, a weekly maximum and visibility into the distribution.

With the calendars in Google Workspace and Microsoft 365, with Teams, Google Meet or Zoom for interview links, and with your ATS for candidate data and status updates. Invitations run over iCalendar and iTIP, so rescheduled appointments update rather than remaining duplicated.

We agree upfront that ownership of the source code rests with you, and we deliver it in a repository you manage, with documentation of the architecture, integrations and scheduling rules. We record those rules explicitly rather than in code, because they change more often than the technology underneath.

A system that only calculates time slots is a scheduling tool, not an AI system for recruitment and selection. If you add assessment, such as ranking candidates or pre-selecting them, that falls under Annex III of the AI Act; that application date has been moved to December 2027 by the Digital Omnibus.

Let's work through your scheduling challenge first

Tell us how many interviews you schedule each week, how your panels are composed and which rules apply. We first check whether your ATS or an existing product can already do it. If custom development turns out to be the route, we map out the prerequisites, integrations and rescheduling policy before any code is written.

Edit content