> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wayak.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Interview scheduling

> Coordinate interviewer availability, send calendar invites, and flag conflicts before they delay your pipeline

Interview scheduling is a coordination bottleneck. Recruiters spend hours cross-referencing calendars, emailing back and forth with candidates, and rebooking when conflicts arise. Every day a candidate waits for a scheduled interview is a day they might accept another offer.

Wayak connects your ATS and calendar API so an agent can check real-time availability, find optimal slots, send invitations, and flag conflicts — all without manual intervention. A weekly playbook ensures no candidate sits in limbo.

***

## What you need

<CardGroup cols={2}>
  <Card title="Data sources" icon="database">
    * **ATS database** — Candidates table with interview stage, assigned panel, and recruiter. Job requisitions table with role and department
    * **Calendar API** — Interviewer availability, room bookings, and existing meeting blocks (Google Calendar or Outlook)
  </Card>

  <Card title="Knowledge spaces" icon="book-open">
    * **Interview guides** — Structured interview templates by role type (technical, behavioral, case study) with suggested durations
    * **Scheduling policies** — Rules for buffer time between interviews, maximum interviews per day per interviewer, and blackout periods
  </Card>
</CardGroup>

**Semantic layer:** Define these in your ontology before setting up the agent.

| Component | Name             | Definition                                                                                                                  |
| --------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Object    | `Interview`      | Maps to the ATS interviews table. Represents a scheduled or pending interview with its participants, time, and format       |
| Object    | `Interviewer`    | Maps to the HRIS employees table filtered by interview panel membership. Represents someone available to conduct interviews |
| Metric    | `TimeToSchedule` | Average number of business days between a candidate reaching the interview stage and the interview being confirmed          |
| Dimension | `InterviewStage` | Categorization: phone screen, technical interview, hiring manager interview, panel interview, final round                   |

<Tip>
  See [building a semantic layer](/quickstart/build-semantic-layer) for a step-by-step guide.
</Tip>

***

## Agent setup

<Steps>
  <Step title="Create the agent">
    Go to **Agent Space** → **New agent**.

    | Field    | Value                                                       |
    | -------- | ----------------------------------------------------------- |
    | **Name** | Recruiting Coordinator                                      |
    | **Role** | Talent acquisition specialist                               |
    | **Goal** | Move candidates through the pipeline efficiently and fairly |
  </Step>

  <Step title="Set the description">
    > You coordinate interviews for the recruiting team. When scheduling, always respect interviewer preferences and buffer times. Propose three time options to candidates whenever possible. Be warm and responsive in candidate-facing communications. Always include the interview format, duration, interviewer names, and any preparation instructions. Flag scheduling conflicts or candidates who have been waiting more than 3 business days proactively.
  </Step>

  <Step title="Scope data access">
    Grant access to:

    * ATS database (candidates, job requisitions, interview stages)
    * Calendar API (interviewer availability, room bookings)
    * Interview guides knowledge space
    * Scheduling policies knowledge space
    * `Interview`, `Interviewer` objects and `TimeToSchedule` metric
  </Step>

  <Step title="Add skills">
    <AccordionGroup>
      <Accordion title="Find available interview slots">
        **Trigger:** Candidate moves to an interview stage or recruiter requests scheduling

        1. Retrieve the candidate's assigned interview panel and the required interview format from the ATS.
        2. Check the scheduling policies for buffer time, daily limits, and blackout periods.
        3. Query the calendar API for each panel member's availability over the next 5 business days.
        4. Identify overlapping available windows that meet the duration requirement (e.g., 60 minutes for technical, 45 minutes for phone screen).
        5. Rank slots by earliest available date, then by time of day (morning preferred).
        6. Return the top 3 options with date, time, duration, room (if in-person), and video link (if remote).
      </Accordion>

      <Accordion title="Send interview invitation">
        **Trigger:** Recruiter confirms a selected slot

        1. Create a calendar event with the confirmed date, time, duration, and participants.
        2. Include in the invite: interviewer names and titles, interview format, preparation instructions from the interview guide, and a link to any take-home materials.
        3. Send a confirmation email to the candidate with the details and a point of contact for questions.
        4. Update the ATS record to reflect the scheduled interview and expected date.
        5. Set a reminder for the recruiter 24 hours before the interview.
      </Accordion>
    </AccordionGroup>
  </Step>
</Steps>

***

## Automation

### Playbook: Weekly scheduling digest

<Steps>
  <Step title="Set the trigger">
    Schedule: **Every Monday at 7:00 AM**.
  </Step>

  <Step title="Build the workflow">
    1. **Query** the ATS for all candidates currently in an interview stage who do not have a confirmed interview date.
    2. **Loop** through each unscheduled candidate:
       * Calculate how many business days they have been waiting since reaching the interview stage.
       * Check interviewer panel availability for the current week.
    3. **Condition:** If a candidate has waited more than 3 business days, flag them as "at risk" and note the blocking reason (no panel availability, candidate unresponsive, or scheduling conflict).
    4. **Aggregate** into a summary: total unscheduled interviews, at-risk candidates, and suggested slots for the week.
  </Step>

  <Step title="Configure delivery">
    Send an email to the recruiting team with the subject line: "Weekly scheduling digest — \[date]". Include the at-risk candidates at the top. Post a summary to the `#recruiting` Slack channel.
  </Step>

  <Step title="Test and activate">
    Click **Run now** to test with live data, then toggle to **Active**.
  </Step>
</Steps>

***

## What's next

<CardGroup cols={2}>
  <Card title="Resume screening" icon="arrow-right" href="/use-cases/hr/resume-screening">
    Automate the step before scheduling — screen candidates and identify who should advance to interviews.
  </Card>

  <Card title="All HR use cases" icon="list" href="/use-cases/hr">
    See the full list.
  </Card>
</CardGroup>
