Inspiration

We kept hearing the same frustration from both sides of hiring. Candidates with real experience couldn't stand out because everyone's resume looks polished now. AI tools let anyone generate impressive-sounding project descriptions and bullet points without having done the work. Meanwhile, recruiters had no way to tell who actually built what they claim. The signal-to-noise ratio in hiring has collapsed, and the people getting hurt most are the candidates who genuinely earned their experience. We wanted to build something that gives those people a way to prove it.

What it does

RecAI is a candidate profile platform backed by verified recommendations instead of self-reported claims. Candidates request recommendations from former managers and coworkers. Those recommenders verify their identity through work email (OTP + domain verification against known companies), then fill out a structured form covering technical skills, behavioral traits, and concrete projects. The recommendation content gets indexed, scored by semantic similarity search via pinecone and AWS Bedrock across 10 traits (5 technical, 5 behavioral), and surfaced to recruiters as searchable, evidence-backed candidate profiles. Recruiters create job postings, candidates opt in through invite links, and recruiters search their pool using Pinecone-powered semantic search. RecAI doesn't replace any ATS; it's a trust layer that plugs into whatever hiring pipeline already exists.

How we built it

Next.js 16 App Router with React 19 and TypeScript, deployed on Vercel as a monorepo with separate candidate, recruiter, and shared packages. Aurora PostgreSQL (via AWS for Vercel) handles all relational data accounts, sessions, recommendations, job postings, and cached AI outputs. Pinecone serverless with multilingual-e5-large integrated embeddings powers recruiter candidate search. AWS Bedrock (Claude Haiku) generates recruiter-facing AI summaries and structured trait scorecards with per-trait rationales and confidence scores. Recommender verification uses a two-layer system: email OTP delivery through Resend, plus ICANN RDAP domain lookups backed by a curated company directory for reliability. Kiro was our primary development environment its steering files kept both contributors aligned on architecture, trust rules, and ownership boundaries throughout the build.

Challenges we ran into

The biggest challenge was making Bedrock scoring reliable under Vercel's serverless constraints. The trait scoring prompt is large (10 traits with full rubric definitions plus evidence segments), and early attempts kept timing out or returning truncated JSON. We solved it by wrapping scoring in its own Suspense boundary, adding a heuristic V2 fallback, and caching scorecards in Aurora so subsequent views are instant. Another challenge was recommender verification — ICANN RDAP data is frequently redacted for large companies (Amazon, Google, Meta all use privacy proxies), so we had to build a curated stub directory as the primary lookup layer with RDAP as a fallback for the long tail.

Accomplishments that we're proud of

The trust model actually works end to end. A recommender can't submit anything without proving they control a work email at a verified company. That verified company name is what shows up on the candidate's profile not whatever the candidate typed in. The dual pentagon scoring (technical + behavioral) with Bedrock-generated rationales gives recruiters real signal, not vanity metrics. And the whole thing loads fast AI summaries and trait scores stream in via Suspense while the rest of the profile renders immediately.

What we learned

We learned that steering files are underrated. Having the trust rules, ownership model, and architecture decisions written down in .kiro/steering/ meant we could work in parallel without stepping on each other or accidentally breaking the core trust constraint (only recommender-authored content gets indexed). We also learned that RDAP is not a reliable company verification source for production use — it's fine for smaller companies but the biggest employers in tech all have redacted registrant data. And we learned that Bedrock structured JSON generation needs generous token limits and defensive parsing the model is good but you can't assume clean output.

What's next for RecAI

Eager Pinecone reindexing when new recommendations come in (currently lazy on first search). OAuth sign-in for candidates and recruiters (Google, LinkedIn). A real company verification provider behind the lookup interface. Recruiter structured filters with pentagon threshold controls. SES-backed email delivery for recommendation request links. And eventually, letting candidates control the ordering and visibility of their recommendations while preserving the trust property that content itself can never be edited by the candidate.

Built With

  • amazon-aurora-postgresql
  • amazon-bedrock-(claude)
  • icann-rdap
  • next.js
  • pinecone
  • react
  • resend
  • tailwind-css
  • typescript
  • vercel
Share this project:

Updates