Inspiration

Hiring is one of the most time-intensive processes in any organization — and most of that time is spent on tasks that don't require human judgment. Writing job descriptions, parsing resumes, scheduling interviews, and sending rejection emails. I asked a simple question: what if none of that required a human?

HireOS was born from that question. I wanted to build a system where a recruiter could type a role name, walk away, and come back to a shortlisted candidate with a calendar invite already sent.

Target Users

Recruiters, HR teams, and fast-growing startups who need to scale hiring without scaling headcount.

Technologies Used

  • Airia Cloud: Pipeline orchestration with AI nodes, conditional branching, HTTP requests, and Python code blocks
  • Claude Haiku 4.5: Powers all AI operations: parsing, scoring, generating, formatting across both agents
  • Confluence: Source of truth for role requirements, queried by Agent 1 at runtime
  • PDFShift: Converts interview questions to a hosted PDF via AWS S3
  • Google Calendar API: Auto-schedules Google Meet interviews for shortlisted candidates via OAuth 2.0
  • Slack Webhooks: Real-time hiring decision notifications to the #hiring channel
  • Flask: Proxy server handling CORS, OAuth token refresh, and frontend serving
  • Railway: Production cloud deployment
  • GitHub: Source control and resume PDF hosting

What it does

HireOS is a two-agent autonomous hiring pipeline built entirely on Airia Cloud.

Agent 1 — Job Setup Pipeline connects to Confluence to pull internal role requirements, generates a polished job post, and produces a PDF interview kit — all from a single role title as input.

Agent 2 — Candidate Evaluation Pipeline accepts any resume URL, parses the PDF, extracts skills, and scores the candidate against job requirements using the formula:

$$\text{match\%} = \frac{\text{matched skills}}{\text{total required skills}} \times 100$$

If the score meets the threshold (≥ 50%), the candidate is shortlisted, a Google Meet interview is scheduled via the Calendar API, and the hiring team is notified on Slack. If rejected, a personalized rejection email is drafted automatically.

How we built it

  • Airia Cloud orchestrates both pipelines as multi-node workflows with conditional branching
  • Claude Haiku 4.5 powers every AI node that includes nodes for resume parsing, skill scoring, Slack message generation, and JSON formatting
  • Confluence serves as the source of truth for role requirements
  • PDFShift converts interview questions into a hosted PDF
  • Google Calendar API schedules Google Meet interviews with OAuth 2.0
  • Slack Webhooks push real-time notifications to the hiring channel
  • Flask acts as a proxy server handling CORS, Google Calendar OAuth token management, and response parsing
  • Railway hosts the production deployment

Challenges we ran into

  • Google OAuth token management: OAuth 2.0 access tokens expire in 1 hour. I implemented automatic token refresh using the refresh token stored in the deployment environment, ensuring the Calendar integration works reliably in production without manual intervention.

  • Airia node variable injection: Variables injected via <variable value="..." /> tags only resolve correctly in user message segments, not in system prompts. This caused Resume_Scorer to receive an empty candidate profile when the variable was included in the system prompt, resulting in inconsistent scoring. Moving data flow to node connections fixed this.

  • Conditional branching with no dead ends: Airia requires every node to have at least one connected output. Designing a flow with conditional reject/shortlist branches while ensuring JSON_Output_Formatter always received the correct data, regardless of the branch taken, required careful node ordering.

Accomplishments that we're proud of

Five live integrations in one pipeline:

  • Confluence
  • PDFShift
  • Google Calendar
  • Slack
  • Airia Cloud

All working together autonomously in a single end-to-end flow. Every integration is real and production-grade, not mocked.

The entire journey from submitting a resume URL to receiving a Google Meet invite and a Slack notification takes under 10 seconds. No human touches anything between input and outcome.

What we learned

  • Building on Airia taught me how to think in pipelines rather than code. The challenge of making AI outputs deterministic by setting the temperature to 0, using strict JSON-only prompts, and explicitly defining formatting nodes was a significant learning experience.

  • I also learned that multi-system integrations require careful attention to token lifecycles, API rate limits, and failure modes at every integration point.

What's next for HireOS

  • Support for multiple job roles simultaneously
  • Candidate ranking across a pool of applicants
  • ATS (Applicant Tracking System) integration

Live App Limitations

  • Interview Scheduling invites are sent to a temporary mail account owned by me. Judges will not receive a personal invite but can verify the integration worked via the Slack notification which shows "Google Meet scheduled ✅"
  • The Confluence integration pulls from a private workspace configured for the Data Scientist role. Testing with other role names may return generic results.
Share this project:

Updates