Build AI-powered recruiting workflows that source, screen, and place candidates automatically.
Unitity AI is an end-to-end recruiting automation platform built for staffing firms. It handles the full hiring cycle — from sourcing candidates and running AI phone screens, to managing pipeline, sending offer letters, and invoicing clients.
Every Unitity AI workflow combines three layers:
| Layer | Technology | Notes |
|---|---|---|
| Frontend | Next.js 15 (App Router) | Server components + client islands |
| Database | Supabase Postgres | Row-level security per tenant |
| AI Calls | VAPI + GPT-4o | Phone screens + text generation |
| SendGrid | Transactional + automated sequences | |
| Payments | Stripe | Per-seat subscription billing |
| Hosting | Vercel | Edge network, auto-deploy on push |
Get from zero to your first AI screen in under 15 minutes.
VAPI places real phone calls, conducts structured 15-minute interviews, and returns a scored transcript within minutes.
| Score | Recommendation | Action |
|---|---|---|
| 85–100 | Strong Hire | Advance immediately to hiring manager |
| 70–84 | Hire | Advance to next round |
| 55–69 | Consider | Review transcript before deciding |
| 0–54 | Do Not Advance | Archive or re-source |
VAPI_API_KEY=your_vapi_api_key VAPI_PHONE_NUMBER_ID=your_phone_number_id VAPI_WEBHOOK_SECRET=your_webhook_secret
+13035551234). Unitity auto-converts US numbers but international numbers must be entered in E.164.POST https://unitityai.com/api/sourcing/webhook
VAPI powers all AI phone screens on Unitity AI — outbound calls, voice conversation, transcription, and scoring.
VAPI_API_KEY and VAPI_PHONE_NUMBER_ID to your Vercel project settings.https://unitityai.com/api/sourcing/webhook{
"model": {
"provider": "openai",
"model": "gpt-4o",
"systemPrompt": "You are screening {name} for {role}...",
"successEvaluationRubric": "NumericScale"
}
}systemPrompt must be nested inside model{}. Placing it at the top level causes a VAPI 400 error.Authenticate all API requests with a Bearer token and your tenant ID.
https://unitityai.com/api
Authorization: Bearer your_api_key x-tenant-id: your_tenant_slug
| Plan | Req/min | Req/day |
|---|---|---|
| Starter | 30 | 5,000 |
| Professional | 100 | 25,000 |
| Enterprise | 500 | Unlimited |
Create, read, update, and manage candidates programmatically.
?stage=, ?req_id=, ?search= filters.id.{"{"} type, status {"}"}.const res = await fetch('https://unitityai.com/api/candidates', { method: 'POST', headers: { 'Authorization': `Bearer ${"{"}API_KEY{"}"}`, 'x-tenant-id': 'your-tenant', 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'Jordan Rivera', email: 'jordan@example.com', phone: '+13035551234', req_id: 'req_uuid_here' }) });
Configure your workspace, invite team members, and set up your branding before going live.
Navigate to Settings → General to configure your company name, logo, and primary color. These are used in white-labeled emails and client portal pages.
Go to Settings → Team → Invite. Enter an email and assign a role (Admin, Recruiter, or Viewer). Each recruiter seat counts against your plan allocation.
Add, manage, and track candidates through every stage of your pipeline.
Three ways: manually via form, by uploading a resume (PDF or Word), or via CSV bulk import. Resume parsing uses GPT-4o-mini to extract name, email, phone, title, company, location, skills, and experience.
Candidates → Import CSV. Download the template, populate, and upload. Up to 500 candidates per import with automatic column mapping.
Requisitions define the roles you're hiring for. Each candidate is linked to a req and AI screens are scored against it.
Requisitions → New Req. Enter title, location, salary range, and a brief description. AI generates the full job description automatically.
AI searches Apollo and PeopleDataLabs to find matching candidates before you post the job.
APOLLO_API_KEY=your_apollo_key
Track every candidate through your hiring funnel. Move stages inline, see AI scores, and take actions without leaving the list.
Default: Applied → AI Screened → Interview → Offer → Placed → Rejected. Stage names can be customized per tenant in Settings.
White-labeled hiring manager portal — clients review AI-scored candidates and request interviews without touching your recruiter dashboard.
On any candidate profile, click "Send Portal Invite." Hiring manager receives a branded magic link — no password required.
Automated multi-touch follow-up sequences keep candidates warm from the moment they enter your pipeline.
Day 0 (introduction), Day 3 (check-in), Day 7 (status update), Day 14 (final follow-up). Customize each template in Settings → Email Templates.
Describe what you need in plain English. Recruiter AI builds reqs, sources candidates, and kicks off screens automatically.
"I need 5 React engineers, fintech, remote, $120–150k, starting August 1"Zero-friction interview booking — hiring manager requests, AI emails slots, candidate confirms, invite fires automatically.
Unitity AI uses SendGrid for all outbound email — follow-up sequences, briefings, portal invites, and offer letters.
SENDGRID_API_KEY=SG.your_key SENDGRID_FROM_EMAIL=recruiting@yourdomain.com
Unitity AI uses Stripe for per-seat subscription management and metered screen overage billing.
STRIPE_SECRET_KEY=sk_live_your_key STRIPE_WEBHOOK_SECRET=whsec_your_secret
Subscribe to real-time events from Unitity AI to trigger workflows in your own systems or via Zapier.
candidate.created · candidate.stage_changed · screen.completed · placement.created · interview.scheduled · offer.sent
Create and manage requisitions programmatically.
?status=open|filled|cancelled.Receive real-time event payloads when key actions occur.
{
"event": "screen.completed",
"tenant_id": "your-tenant",
"data": { "score": 87, "recommendation": "Strong Hire" }
}Official client libraries for integrating Unitity AI into your own applications.
npm install @unitityai/sdk
import { UnitityClient } from '@unitityai/sdk'; const client = new UnitityClient({ apiKey: 'your_api_key', tenantId: 'your_tenant', }); // List candidates const candidates = await client.candidates.list({ stage: 'ai_screened' }); // Trigger AI screen await client.candidates.screen('candidate_id');
pip install unitityai
from unitityai import UnitityClient client = UnitityClient(api_key="your_api_key", tenant_id="your_tenant") # List candidates candidates = client.candidates.list(stage="ai_screened") # Trigger AI screen client.candidates.screen("candidate_id")
Recent platform updates, new features, and improvements.
7-page marketing site now live at unitityai.com — Platform, Customers, Pricing, Docs, Careers, and Blog pages all deployed.
Switched from usage-only to per-seat pricing. Starter ($149/2 seats), Professional ($399/5 seats), Enterprise ($899/10 seats). Screen overages at $0.85/screen.
Type what you need in plain English. Recruiter AI builds the req, sources candidates, queues AI screens, and sends Day 0 emails automatically.
Group multiple requisitions under one hiring project. Track headcount, budget, and fill progress across every req in a single view.
Resolved a VAPI 400 error caused by placing systemPrompt at the top level instead of nested inside model{}. AI phone screens now initiate reliably.
Auto-generate branded invoice PDFs on every placement. Download from the placements page or email directly to the client.