Sentinence is an AI-native interview preparation platform that simulates high-pressure hiring environments and gives candidates deep feedback across content quality, communication style, confidence signals, and behavioral consistency.
This repository contains the full product stack:
backend/: FastAPI + MongoDB + AI services + real-time media analysisse-hack/: Next.js frontend for interview flows, analytics, and coaching UX
It is not just a question-answer bot. Sentinence combines:
- adaptive interview intelligence
- multimodal behavioral analysis (video + voice + text)
- resume understanding and ATS-style coaching
- personalized trend analytics and targeted improvement plans
winning.txt confirms this project won SE Hackathon.
Most interview prep tools test only one dimension: whether your answer sounds correct. Real interviews evaluate much more:
- how clearly you think under pressure
- how consistently you communicate across time
- whether your non-verbal behavior shows confidence and engagement
- whether your claims are internally consistent
- how effectively you recover when challenged
Sentinence is designed around this broader reality.
The 1-on-1 interview flow is built as an adaptive system, not a static question list.
Core behaviors:
- user chooses target role, difficulty, and interviewer persona
- backend generates a complete question bank up front (bounded, deduplicated)
- each answer is evaluated for score, feedback, strengths, and weaknesses
- progression strategy adapts based on performance signals
- persona affects tone and pressure style
- "devil's advocate" mode can generate challenge follow-ups when uncertainty is detected
Additional intelligence:
- latest resume context is loaded and injected into generation prompts
- recent turn history is summarized to preserve continuity
- interview state tracks progress and closes cleanly on completion
Sentinence includes semantic contradiction analysis across past and current statements.
What it does:
- compares new responses against prior claims
- detects high-confidence logical inconsistency (skills, experience, preferences)
- returns structured contradiction metadata including confidence and severity
- supports consistency coaching, not just correctness scoring
Why it matters:
- many candidates fail because answers are individually good but collectively inconsistent
- this module catches that pattern early
The voice pipeline supports live interview feedback loops.
Implemented capabilities:
- websocket-based audio streaming
- live speech-to-text word events
- periodic acoustic and semantic insight payloads
- final summary synthesis at session close
- optional emotion context injection from video analysis into voice context
Captured/derived signals include:
- speaking pace indicators
- confidence/stress semantic cues
- timeline-aligned transcript tokens
The video analysis module fuses pose, face, gaze, and emotion signals.
Detected dimensions:
- posture and shoulder alignment
- nervous gesture proxies (including face-touch/fidget patterns)
- head pose and looking-at-screen signal
- pupil ratio derived gaze direction
- emotion distribution and dominant emotion
Scoring outputs:
- confidence score
- engagement score
- per-frame details plus frontend-side aggregation for stable session-level trends
Group interviews are modeled as a rotating panel with distinct interviewer tracks.
Key features:
- multi-interviewer flow (technical, HR, mixed)
- turn progression and context carry-over
- per-turn evaluation with strengths/weaknesses
- final session summary with normalized overall score and deduplicated insights
- optional answer transcription from audio when text is absent
This creates realistic context switching between interview styles in one session.
Beyond interviews, Sentinence simulates collaborative meeting scenarios.
What this provides:
- scenario-based team discussion environment
- participant metadata and role context
- message timeline capture
- metrics snapshots over time
- interruption tracking
- final report generation after session completion
This module measures collaboration quality, not just answer quality.
Resume intelligence is integrated directly into interview preparation.
Pipeline:
- validate and ingest PDF/DOCX (size/type constrained)
- extract and clean resume text
- parse into structured resume JSON via LLM
- produce ATS-style analysis and actionable tips
- persist parsed artifacts for downstream interview personalization
Fallback behavior is included so users still receive useful output if ATS analysis fails.
Results are not limited to one session. The analytics module computes trend-level insight across historical data.
Generated outputs include:
- overview metrics (sessions, completion, averages, improvement delta, contradiction rate)
- score trends over time
- communication trend series
- top weakness and strength clustering
- role-wise aggregates
- session snapshots for drill-down
- coaching plan and focus radar (with deterministic fallback if LLM synthesis is unavailable)
This closes the loop from simulation to measurable improvement.
- Frontend (
se-hack) handles user experience, state orchestration, media capture, and visualization. - Backend (
backend) handles authentication, persistence, AI orchestration, scoring logic, and media analysis. - MongoDB stores users, interview artifacts, resume artifacts, meeting/group sessions, and analytics snapshots.
- LLM providers are used for generation, evaluation, parsing, and synthesis tasks.
- WebSockets are used where low-latency streaming is required (voice and real-time interaction loops).
The backend is organized by domain modules under backend/app/.
Platform-level responsibilities:
- startup/shutdown lifecycle and DB connection orchestration
- CORS and cookie/session middleware
- auth context injection into requests
- domain router registration
- index initialization for key collections
Major backend subsystems:
auth/: Google OAuth integration, JWT cookie lifecycle, user upsert logicinterviews/: interview session orchestration and persistenceinterview_agent/: LLM prompts, question bank generation, evaluation logic, graph-driven adaptationvoice/: streaming audio ingestion and voice analytics websocket handlingvideo_analysis/: behavioral feature extraction and confidence scoringgroup_interview/: rotating panel interview simulation enginemeeting_room/: scenario-based team simulation + reportingresume_parser/: file parsing + structured extraction + ATS insightsresults/: cross-session analytics and coaching synthesis
The frontend is a product experience layer, not just a thin API client.
Key concerns handled in se-hack/:
- authentication-aware routing and session bootstrap
- interview setup and live interview orchestration
- media permissions, capture, and stream lifecycle
- real-time dashboards for transcript and metrics
- resume upload UX and report rendering
- historical performance visualization and action-plan delivery
- embedded voice assistant launcher for confidence support
State and integration patterns:
- axios client configured with credentials for cookie-based auth
- server/client data fetching patterns depending on UX need
- custom hooks for video capture aggregation and voice websocket management
- composable UI components for overlays, timelines, cards, and charts
Sentinence uses AI in layered roles.
Generation layer:
- role/difficulty/persona-specific question generation
- scenario and track-aware prompts for group/meeting contexts
Evaluation layer:
- numeric scoring with structured strengths/weaknesses
- answer quality assessment with low-temperature settings for consistency
Consistency layer:
- contradiction detection against historical memory
Synthesis layer:
- longitudinal performance interpretation
- coaching plans and focus priorities
Multimodal fusion layer:
- combines text intelligence with behavioral audio/video signals
Persistence is designed around session continuity and longitudinal analysis.
Core data families stored in MongoDB:
- identity and auth-linked user profile data
- interview sessions and response turns
- structured resume + ATS artifact records
- meeting-room and group-interview transcripts/metrics
- generated analytics snapshots for results dashboard consumption
Indexes are created for user-scoped and session-scoped query performance.
Sentinence uses both request-response and streaming channels.
Streaming channels are used when immediacy is critical:
- live audio ingestion and transcript/insight events
- real-time interaction experiences in interview/meeting contexts
Batch/transactional channels are used when stability and determinism are preferred:
- resume parse and ATS analysis
- interview start/submit lifecycle
- results snapshot generation
This hybrid model keeps UX responsive while preserving robust persistence semantics.
Sentinence/
backend/
app/
auth/
interview_agent/
interviews/
meeting_room/
group_interview/
resume_parser/
video_analysis/
voice/
results/
middlewares/
main.py
db.py
requirements.txt
test_contradiction.py
se-hack/
app/
components/
hooks/
lib/
store/
package.json
context.md
video.md
winning.txt
- Python 3.10+ recommended
- Node.js 18+ recommended
- npm (or compatible package manager)
- MongoDB instance
- API credentials for OAuth + LLM + speech features
cd backend
python -m venv .venv
# Windows PowerShell:
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txtRun backend:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd se-hack
npm install
npm run devFrontend default URL: http://localhost:3000
Backend default URL: http://localhost:8000
Required/important variables:
MONGO_URI: MongoDB connection stringOPENROUTER_API_KEY: required for interview intelligence and contradiction analysisGOOGLE_CLIENT_ID: OAuth client idGOOGLE_CLIENT_SECRET: OAuth client secretSECRET_KEYorJWT_SECRET: signing secret
Common optional variables:
GOOGLE_CLIENT_SECRETS_FILE: optional JSON secrets file pathGOOGLE_REDIRECT_URI: OAuth callback URICOOKIE_SECURE: cookie secure flagCOOKIE_SAMESITE: same-site policyPOST_LOGIN_REDIRECT_URL: where user lands after authCORS_ORIGINS: allowed frontend originsLOG_LEVEL: logger verbosityINTERVIEW_MAX_QUESTIONS: bounded max turns for 1-on-1 interviewsGROUP_INTERVIEW_TOTAL_TURNS: bounded total turns for panel interviews
NEXT_PUBLIC_BACKEND_URL: browser-side backend base URLBACKEND_URL: server-side backend base URL (SSR/server calls)NEXT_PUBLIC_VAPI_PUBLIC_KEY: optional voice assistant integration key
Typical candidate journey through the platform:
- Sign in with Google.
- Upload resume and get structured + ATS feedback.
- Start a 1-on-1 adaptive interview for a target role.
- Practice under persona-specific pressure (mentor/friendly/aggressive/devil's advocate).
- Review immediate answer-level feedback plus multimodal confidence signals.
- Run group interview and meeting-room simulations for broader communication contexts.
- Open results dashboard to inspect trendline weaknesses/strengths and coaching plan.
- Repeat and track measurable improvement over time.
Current code includes:
- structured logging across critical backend flows
- index bootstrapping for major collections
- graceful fallback patterns in some AI-dependent paths
Operational recommendations for production hardening:
- centralized secrets management
- API rate limiting/backoff for LLM and speech providers
- websocket connection monitoring and guardrails
- stricter validation and schema evolution strategy
- stronger test coverage for realtime edge cases
Current explicit test artifact:
backend/test_contradiction.py
Run it:
cd backend
python test_contradiction.pyPractical next test layers to add:
- interview flow lifecycle tests
- websocket integration tests
- resume parsing fixture tests (PDF/DOCX variations)
- analytics regression tests for aggregation logic
- frontend E2E coverage for core interview journey
- heavy dependence on external AI services for core intelligence features
- media analysis quality can degrade with poor camera/mic conditions
- real-time behavior is sensitive to local network stability
- some modules still contain hardcoded assumptions suitable for MVP speed
These are normal for a hackathon-to-product transition stage.
Sentinence is compelling because it combines:
- deterministic product logic (session lifecycle, persistence, indexing)
- adaptive AI logic (generation, evaluation, synthesis)
- behavioral signal extraction (video + voice)
- practical coaching output (trend-level weaknesses and action plans)
The result is a full interview-intelligence loop: practice -> measure -> diagnose -> improve -> repeat.
This repository already demonstrates:
- cross-domain AI orchestration
- real-time media processing
- modern full-stack product composition
- meaningful user-facing coaching outcomes
In short: this is a serious foundation for a next-generation interview training platform, not a basic demo chatbot.
No license file is currently present at repository root. Add one before public distribution.