Files · Interview Coordination Agent for Small Recruiting Teams
97 (1 binary, 693.3 kB total)attempt 3
README.md·3181 B·markdown
markdown
# Interview Coordination Agent for Small Recruiting Teams
> Auto-schedule panel interviews across candidate and 5 panelists, no back-and-forth.
## Problem
A recruiting coordinator at a 10-person firm juggles 40+ interview requests per week, each requiring alignment of candidate availability with 3-5 panelists. Manual email ping-pong causes delays, double-bookings, and lost candidates. The firm can't afford a full scheduling tool. The coordinator needs an agent that handles the entire negotiation and sends calendar invites.
## Features
- **Voice-based interview requests** via Deepgram STT + ElevenLabs TTS pipeline
- **Multi-panelist calendar coordination** using Google Calendar API for free/busy overlap detection
- **Agent handoff routing** via `@reaatech/agent-handoff-routing` `CapabilityBasedRouter` for specialisation (scheduling, candidate comms, panelist comms)
- **Candidate/panelist preference memory** via `@reaatech/agent-memory` `AgentMemory` facade
- **Interview runbook generation** via `@reaatech/agent-runbook-agent` and `@reaatech/agent-runbook`
- **Langfuse observability** for tracing and monitoring all LLM, calendar, and handoff operations
- **Provider-agnostic LLM** via Vercel AI SDK (`ai` + `@ai-sdk/openai`)
## Voice Pipeline
```
Audio Input → Deepgram STT (nova-3) → LLM (Vercel AI SDK) → ElevenLabs TTS → Audio Output
```
## Agent Architecture
Multi-agent routing via `CapabilityBasedRouter` + `AgentRegistry` from `@reaatech/agent-handoff-routing`:
- **Scheduling Agent** — calendar free/busy overlap, time slot negotiation
- **Candidate Coordinator** — communication with candidates
- **Panelist Coordinator** — communication with panelists
## Quick Start
```bash
pnpm install
# Copy .env.example to .env and fill in your API keys
pnpm test
pnpm dev
```
## API Reference
| Method | Path | Request Body | Response | Description |
|--------|------|-------------|----------|-------------|
| POST | `/api/interviews` | `{ candidateEmail, candidateName, panelistEmails[], durationMin, preferredDateRange, timezone?, notes? }` | `{ sessionId, proposal }` | Create a new interview coordination request |
| GET | `/api/interviews` | — | `{ agents[] }` | List registered agent capabilities |
| GET | `/api/interviews/:id` | — | `{ sessionId, status, ... }` | Get interview session state |
| POST | `/api/interviews/:id` | `{ action: "accept"\|"reject" }` | `{ confirmed, meetingLink? }` | Accept or reject a scheduling proposal |
| POST | `/api/runbooks` | `{ interviewRequest, panelists[], companyPolicy? }` | `{ runbookId, runbook }` | Generate an interview runbook |
| GET | `/api/runbooks/:id` | — | `{ runbook }` | Get a generated runbook |
## Tech Stack
- **Framework**: Next.js 16 (App Router)
- **LLM Provider**: Agnostic (OpenAI via Vercel AI SDK)
- **Voice**: Deepgram Nova-3 (STT), ElevenLabs (TTS)
- **Calendar**: Google Calendar API
- **Agent Framework**: `@reaatech/agent-handoff`, `@reaatech/agent-handoff-routing`, `@reaatech/agent-memory`, `@reaatech/agent-mesh`, `@reaatech/agent-runbook`, `@reaatech/agent-runbook-agent`
- **Observability**: Langfuse
## License
MIT — see [LICENSE](./LICENSE).