The problem
Hiring teams drown in two things: unscreened resumes, and first-round interviews that don't scale. Nayld Hire (hire.nayld.ai) attacks both. Auto-screen every applicant, invite the strong ones to a tier-2 AI interview, and get back a result you can actually trust.
It's the employer side of Nayld; the candidate-facing practice product is Nayld Prep. Built solo, end to end, in about six weeks.
Async screening pipeline
Resume screening is fully event-driven. No polling, no cron hacks:
flowchart LR U[Employer uploads resumes] --> S3[(S3)] S3 --> EX["Python Lambda, text + structure extraction"] EX --> Q[[SQS]] Q --> WK[Node.js scoring worker] WK -->|"fit score, strengths, analysis"| DB[(Supabase)] DB --> UI[Employer dashboard]
S3 upload
→ Python Lambda (text + structure extraction)
→ SQS
→ Node.js worker (LLM scoring → fit score, strengths, analysis)
→ Supabase (hire schema)Because it's queue-backed, it scales to thousands of concurrent resumes without falling over. A spike just drains through SQS instead of taking the app down.
Tier-2 AI interviews
Promising candidates get invited to an AI voice interview that runs on the same realtime voice stack as Nayld Prep (WebRTC, sub-second latency, VAD-tuned turn-taking), but tuned for evaluation rather than practice, producing structured scoring the employer can compare across candidates.
Interview integrity
Employers need to trust the result, so every interview produces a deterministic 0 to 100 integrity score:
flowchart TD CAM["In-browser camera + screen recording"] --> SIG AUD["Mixed candidate + agent audio"] --> SIG BEH["Client-side behavioral signals"] --> SIG[Signal collector] SIG --> SCORE["Deterministic 0 to 100 integrity score"] SCORE --> TL["Scrubable timeline with signal markers"]
- In-browser camera + screen recording, with mixed candidate + agent audio.
- Client-side behavioral signals captured throughout the session.
- A timeline the employer can scrub, with markers where signals fired, so a score is always explainable, never a black box.
Billing & authorization
- Layered billing: subscription sessions, then agent-scoped add-on credits, then legacy free credits, all resolved at launch-code exchange (never at the eligibility check), so entitlement and consumption can't drift apart.
- Database-owned authorization: middleware does coarse page-group protection; every route handler then verifies company ownership against Supabase rows, so a valid session can never read another company's data.
Stack
Next.js 14/16 · TypeScript · Supabase (Postgres, hire schema) · OpenAI Realtime API + GPT-4o · AWS Lambda / SQS / S3 / SES / Amplify · Terraform · Fastify. pnpm/Turbo monorepo sharing @nayld/auth + @nayld/supabase with Nayld Prep.
Outcome
Live at hire.nayld.ai with 280+ resumes parsed, screening that scales to thousands of concurrent uploads, and trustworthy, explainable interview results, built and operated solo.