Hirenix
Full-Stack AI Career Intelligence Platform & Semantic Resume Matching Engine
1. THE PROBLEM
ATS keyword matching misses contextual candidate experience and codebase quality, while job seekers lack objective feedback on application alignment. Existing screening tools rely on static keyword matching rather than semantic similarity.
SYSTEM ARCHITECTURE & PIPELINE FLOW
Candidate Document & Repo Parser
Async FastAPI ingests Resume PDF, GitHub repository commit history, and LinkedIn profile into normalized candidate JSON representation.
OpenAI Text Embedding & pgvector Indexing
Generates 1536-dimensional embeddings co-located with relational candidate data in Supabase pgvector (<200ms vector search).
GPI Code Quality & ATS Match Scoring
GitHub Production Index (GPI) algorithm scores code complexity, commit consistency, and stack diversity alongside ATS match precision.
Groq Real-Time Voice Interview Evaluator
Decouples speech analysis to Groq LPU hardware for sub-2-second voice interaction and real-time interview evaluations.
2. TECHNICAL APPROACH & DECISIONS
1Hybrid Semantic Embedding & Vector Search
Engineered an async FastAPI backend combining exact ATS keyword extraction with text-embedding-3-small vector embeddings stored in Supabase pgvector.
External Vector SaaS (Pinecone / Qdrant)
Co-locating relational candidate profiles and vector embeddings inside PostgreSQL eliminated cross-service network hops and guaranteed atomic transaction updates.
2Multi-Provider LLM Orchestration
Utilized Groq API (LLaMA 3) for ultra-fast real-time voice interview evaluation (<2s latency) and NVIDIA NIM for candidate analytical indexing.
Single API provider fallback loop
Decoupling real-time speech evaluation to Groq's LPU hardware achieved sub-2-second voice response latencies needed for realistic interview simulation.
CORE ARCHITECTURAL LOGIC
Co-located PostgreSQL pgvector cosine similarity search combined with ATS metadata filtering in an async FastAPI endpoint.
| 1 | @app.post("/api/v1/candidates/search", response_model=List[CandidateMatch]) |
| 2 | async def search_candidates( |
| 3 | request: JobSearchRequest, |
| 4 | db: AsyncSession = Depends(get_db_session) |
| 5 | ): |
| 6 | # Generate vector embedding for input job description |
| 7 | query_vector = await embedding_service.get_vector(request.job_description) |
| 8 | |
| 9 | # Execute pgvector cosine similarity match co-located inside PostgreSQL |
| 10 | stmt = ( |
| 11 | select(Candidate, Candidate.embedding.cosine_distance(query_vector).label("distance")) |
| 12 | .where(Candidate.is_active == True) |
| 13 | .order_by(text("distance ASC")) |
| 14 | .limit(request.top_k) |
| 15 | ) |
| 16 | results = await db.execute(stmt) |
| 17 | return [ |
| 18 | CandidateMatch(candidate=row.Candidate, match_score=round(1.0 - row.distance, 4)) |
| 19 | for row in results |
| 20 | ] |
3. TRADE-OFFS & HONEST REFLECTION
Truncated resume PDF text extractions to 4,000 tokens before embedding to maintain sub-200ms API response times. Reduced vector storage overhead by 60% with negligible loss in semantic matching precision.
4. CONCRETE OUTCOME & METRICS
Shipped an end-to-end career intelligence SaaS platform featuring sub-200ms vector matching, a custom GitHub Production Index (GPI) code quality evaluator, and real-time voice interview simulation.