TalentRush — Screen smarter. Interview faster.
About the project
Hiring teams lose hours on manual screening, back-and-forth scheduling, and inconsistent interviews. TalentRush turns a job description into a structured, fair interview—then auto-invites candidates who meet a clear threshold (85%) and proposes calendar slots automatically. The goal: go from résumé to next round in minutes, not days.## Inspiration We’ve all watched good candidates stall in inbox limbo. Recruiters juggle hundreds of emails; engineers context-switch for interviews; candidates wait. We wanted a tool that:
standardizes the first conversation,
measures skills transparently,
and moves fast when someone is clearly a fit.
What it does
Recruiter Console (web): paste JD → set auto-invite toggle → generate interview → later view a recruiter-friendly report (HTML/PDF) with a final score and one-click “Send next-round invite.”
Candidate Chat: a guided, chat-style interview with progress indicators and adaptive follow-ups if answers are weak.
Auto-Invite Flow: if the final score ≥ 85%, generate 2–3 time slots, sign confirmation links, email candidates (with .ics), and mark the selected slot as confirmed when they click.
Results & Confirm pages: recruiters get a summary; candidates get a clean confirmation screen.
How we built it
Architecture (3 modules, clean seams):
Front-End (Streamlit / static HTML+JS): Pages: Recruiter Console, Candidate Chat, Results, Confirm State: st.session_state for chat and progress Output: downloadable PDF report for recruiters
LLM/NLP Engine (Python):
Keyword extraction from JD (spaCy/YAKE + custom dictionary)
Canonical skill mapping (via skills.yaml)
Question script builder (templates in templates.yaml)
Scoring: rule-based key-term matching + optional semantic similarity (MiniLM sentence embeddings)
Adaptive follow-ups when a score < 3/5
Backend & Infra (SQLite + SQLAlchemy + Email):
Tables: jobs, candidates, interviews, questions, turns, scores, slots, emails
HMAC-signed confirmation links, .ics generation, SendGrid/SMTP sending
Slot proposer (timezone-aware, 2–3 suggestions), status transitions: proposed → confirmed/released
Challenges we ran into
Email deliverability: balancing provider setup (SendGrid) vs. quick SMTP fallback.
Latency vs. quality: keeping interviews snappy while doing embedding lookups.
State management: ensuring chat progress is robust to refreshes.
Schema discipline: resisting last-minute changes that ripple across UI/LLM/backend.
What we learned
Designing for handoffs beats “one big script.” Shared function signatures and table names made integration smooth under time pressure.
Explainability matters. Even simple, readable rules + short semantic checks build trust.
Timezones & calendars are tricky. Using UTC storage, IANA timezones for proposal, and per-slot .ics files kept things consistent.
What's next for TalentRush
Multi-interviewer panels and calendar sync (Google/Microsoft)
Bias/fairness checks and topic coverage dashboards
Recruiter feedback loops that auto-tune question templates
Export to ATS and Slack notifications
Log in or sign up for Devpost to join the conversation.