Quantis Interview Grid transforms a job description into a role-specific interview simulation with dynamic questions, voice interaction, structured scoring, rich performance analytics, and personalized preparation resources.
- Overview
- Application Preview
- Features
- Architecture
- Tech Stack
- Project Structure
- Installation
- Usage
- API Reference
- Configuration
- Testing
- Security Notes
Quantis is designed to feel like a real interview environment, not a static demo.
Core goals:
- Generate context-aware questions based on JD + interview type
- Support both typed and voice-assisted answer workflows
- Evaluate interview quality across weighted dimensions
- Produce actionable reports with metrics and preparation resources
- Persist user history for repeat practice and progress tracking
| Feature | Description |
|---|---|
| π― Dynamic Role-Based Questions | Uses JD analysis + interview type to generate realistic prompts |
| π Immersive 3D UI | Live Three.js scene, glass panels, animated score visuals |
| ποΈ Voice Interview Mode | STT input, TTS question playback, live transcript capture |
| π Structured Scoring | Relevance, clarity, depth, structure, confidence |
| π Final Report Intelligence | Metrics, hiring likelihood, next steps, prep resources |
| π Auth & History | Register/login, stored runs, run detail retrieval |
| π Resume Gap Analysis | Resume vs JD fit score, missing skills, action plan |
| π Observability | Prometheus metrics endpoint + summary API |
| π Resilient LLM Calls | Retry/backoff + circuit breaker behavior for Groq calls |
| ποΈ Session Persistence | DB-backed sessions with optional Redis cache fast-path |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β React 3D Interview UI β
β setup β’ interview β’ report β’ auth/history β’ voice mode β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP + Browser Voice APIs
βββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ
β FastAPI Backend β
β β
β /auth/*, /history* identity + run history β
β /setup JD analysis + question generation β
β /evaluate answer capture (per-question) β
β /report full scoring + final insights β
β /resume-gap-analysis resume/JD fit + action plan β
β /metrics Prometheus scrape endpoint β
β /observability/* request latency and error summaries β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββΌββββββββββ ββββββββββββββββββββββββββ
β SQLAlchemy (DB) β β Groq API (LLM provider)β
β sessions/users/runsβ β structured AI responsesβ
βββββββββββ¬ββββββββββ ββββββββββββββββββββββββββ
β
βββββββββββΌββββββββββ
β Redis Cache β
β optional hot readsβ
βββββββββββββββββββββ
| Layer | Technology |
|---|---|
| Frontend | React 18, Framer Motion, Recharts |
| 3D / Visuals | Three.js, @react-three/fiber, @react-three/drei |
| Backend | FastAPI, Pydantic, Uvicorn |
| AI | Groq (OpenAI-compatible API) |
| Persistence | SQLAlchemy + SQLite/Postgres |
| Cache | Redis (optional) |
| Auth | JWT (PyJWT), password hashing (passlib) |
| Observability | prometheus-client |
| Migrations | Alembic |
| Testing | Pytest |
.
βββ backend/
β βββ app/
β β βββ main.py
β β βββ models.py
β β βββ schemas.py
β β βββ db.py
β β βββ repositories/
β β βββ services/
β β βββ ai_client.py
β β βββ interview_service.py
β β βββ auth_service.py
β β βββ history_service.py
β β βββ cache.py
β βββ alembic/
β βββ tests/
β βββ requirements.txt
β βββ .env.example
βββ frontend/
β βββ src/
β β βββ components/
β β βββ hooks/
β β βββ pages/
β β βββ services/
β β βββ styles/
β βββ package.json
βββ bootstrap.ps1
βββ Makefile
βββ README.md
- Python 3.12+
- Node.js 18+
- Groq API key
cd backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
alembic -c alembic.ini upgrade head
uvicorn backend.main:app --reloadcd frontend
npm install
npm start- Open
http://localhost:3000 - Select interview type + add JD text (or drop file)
- Enter simulation and answer all questions
- Generate report with metrics and prep guidance
- Optional: sign in to save and review historical runs
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
Health check |
| POST | /auth/register |
Register account |
| POST | /auth/login |
Login and receive JWT |
| GET | /history |
List user interview runs |
| GET | /history/{run_id} |
Detailed run data |
| POST | /setup |
Create session + questions |
| POST | /evaluate |
Record answer for a question |
| POST | /report |
Compute final scored report |
| POST | /resume-gap-analysis |
Resume/JD fit analysis |
| GET | /metrics |
Prometheus metrics |
| GET | /observability/summary |
Authenticated latency/error summary |
Set values in backend/.env:
GROQ_API_KEY=your_groq_api_key_here
GROQ_MODEL=llama-3.1-70b-versatile
CORS_ORIGINS=http://localhost:3000
SESSION_TTL_MINUTES=120
DATABASE_URL=sqlite:///./quantis_interview_grid.db
REDIS_URL=redis://localhost:6379/0
JWT_SECRET=change_me_to_32_plus_chars
JWT_EXPIRE_HOURS=72cd backend
python -m pytest tests
cd ../frontend
npm run build- Use a strong
JWT_SECRET(32+ chars) for production. - Redis is optional; fallback works without it.
This project is licensed under the MIT License. See LICENSE.
Built with β€οΈ by Crasta Telvin
β Star this repo if you find it useful!



