NovaForge is a production-grade AI-powered technical interview system built for the ViCodathon 2026 hackathon. It dynamically generates context-aware, personalized technical interviews by analyzing a candidate's curriculum progress, historical learning signals, and experience profile.
https://novaforge-vicodathon.vercel.app
- LinkedIn Demo Video
- [GitHub Demo Video](./Video Demo/NovaForge-ViCodathon Demo.mp4)
https://github.com/Vineet375/NovaForge-ViCodathon
Built for ViCodathon 2026 — India's AI-First 48-Hour Vibe Coding Hackathon.
Traditional technical screenings are generic and one-size-fits-all. They fail to account for a candidate's specific training program, their demonstrated performance (such as missions passed, skipped, or retried), or the difficulty level appropriate for their seniority and track record.
NovaForge builds a precise learning profile for each candidate and uses it as the primary context for all AI-generated questions, evaluations, and final feedback. Unlike generic interview tools, NovaForge understands exactly what the candidate has studied and tailors every question to their specific curriculum journey.
- Dashboard: High-level metrics showing active sessions, total candidates, and curriculum modules.
- Candidate Management: Select from predefined candidate personas with unique learning profiles.
- Curriculum System: Tracks candidate progress through structured curriculum days and modules.
- AI-generated Interview Questions: Gemini and NVIDIA models dynamically generate personalized questions.
- Multi-question Interview Sessions: Structured flow generating exactly 4 targeted questions.
- Answer Submission: Candidates submit answers to technical questions.
- Interview Progress Tracking: Visual indicators track progress through the 4-question session.
- Final AI Evaluation: Background AI evaluation produces a holistic performance report.
- Score, Strengths, & Growth Areas: Evaluates answers to provide a final score (out of 10), key strengths, and growth areas.
- Light/Dark Mode: Full theme support across the application UI.
graph TD
User([User Browser])
Frontend[Next.js 15 Frontend]
API[API Client Layer]
Backend[FastAPI Backend]
SessionMgr[Session Manager]
AIService[AI Service Facade]
AIProviders[Gemini / NVIDIA / MockProvider]
User -->|HTTP Requests| Frontend
Frontend -->|REST JSON| API
API -->|HTTP Requests| Backend
Backend --> SessionMgr
SessionMgr --> AIService
AIService -->|Context + Prompt| AIProviders
AIProviders -->|JSON Evaluation| AIService
AIService --> SessionMgr
SessionMgr -->|Response| Backend
Backend --> API
API --> Frontend
- Git
- Python 3.13+ (Required for the FastAPI backend)
- Node.js 20+ (Required for the Next.js frontend)
git clone https://github.com/Vineet375/NovaForge-ViCodathon.git
cd "NovaForge - ViCodathon"The backend utilizes FastAPI. All backend commands must be executed from the project root.
# Create a virtual environment
python -m venv backend/venv
# Activate the virtual environment
# Windows:
backend\venv\Scripts\activate
# macOS/Linux:
source backend/venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Copy environment variables template
cp .env.example .envEnvironment Variables:
Open .env and configure the AI/API services. The application implements a highly available AI provider chain.
GEMINI_API_KEY_1: Required for primary generation.GEMINI_MODEL: Required (e.g.,gemini-2.5-flash-lite-preview-06-17).GEMINI_API_KEY_2,GEMINI_API_KEY_3: Optional failovers.NVIDIA_API_KEY_1,NVIDIA_API_KEY_2: Optional fallbacks.
Run the Backend:
uvicorn backend.main:app --reload --port 8000(The API will be available at http://localhost:8000)
The frontend utilizes Next.js. Navigate to the frontend directory to run these commands.
cd frontend
# Install dependencies
npm installEnvironment Variables:
Ensure the .env file in the project root has NEXT_PUBLIC_API_URL pointing to the backend (e.g., http://localhost:8000 or http://127.0.0.1:8000).
Run the Frontend (Development):
npm run dev(The UI will be available at http://localhost:3000)
Production Build (Optional verification):
npm run buildThe backend includes a comprehensive pytest suite simulating domain logic, duplicate checking, and JSON parsing without real API calls.
Ensure the virtual environment is activated and run from the project root:
pytest -v(Expected: 100% pass rate across domain and API integration tests)
For the frontend, running npm run build serves as a build verification confirming static analyzability and strict TypeScript compliance.
graph TD
Client([User Browser])
Vercel[Vercel<br/>Next.js Frontend]
Render[Render<br/>FastAPI Backend]
Google[Google GenAI<br/>Gemini APIs]
Nvidia[NVIDIA NIM<br/>Llama APIs]
Client -->|HTTPS| Vercel
Vercel -->|REST API Requests| Render
Render -->|AI Generation| Google
Render -->|AI Fallback| Nvidia
- Frontend → Vercel
- Backend → Render
sequenceDiagram
participant User
participant Frontend
participant Backend
participant AI
User->>Frontend: Select Candidate & Start
Frontend->>Backend: POST /interview/start
Backend->>AI: Generate Q1 (Contextualized)
AI-->>Backend: JSON Question
Backend-->>Frontend: Return Session + Q1
User->>Frontend: Submit Answer
Frontend->>Backend: POST /interview/answer
Backend->>Backend: Save Answer
Backend->>AI: Generate next Question / Evaluation
AI-->>Backend: JSON Response
Backend-->>Frontend: Progress + Next Question
Note over Backend,AI: Repeats until 4 questions reached
Backend->>AI: Generate Final Report
AI-->>Backend: Score, Strengths, Weaknesses
Backend-->>Frontend: Complete Interview State
graph LR
AIService[AI Service Facade]
Context[Context Builder]
Prompt[Prompt Engine]
Parser[Response Parser]
ProviderChain[Provider Fallback Chain]
Gemini[Google Gemini API]
NVIDIA1[NVIDIA NIM Primary]
NVIDIA2[NVIDIA NIM Secondary]
Mock[MockProvider Fallback]
AIService --> Context
AIService --> Prompt
AIService --> ProviderChain
AIService --> Parser
ProviderChain --> Gemini
ProviderChain --> NVIDIA1
ProviderChain --> NVIDIA2
ProviderChain --> Mock
NovaForge utilizes a robust, highly available AI fallback chain to guarantee interview generation even during API outages.
| Service | Purpose | Environment Variable | Used By | Required? | Fallback |
|---|---|---|---|---|---|
| Google Gemini | Primary AI generation | GEMINI_API_KEY_1 |
AI Service | Yes | Gemini Key 2 |
| Google Gemini | Failover API Key 2 | GEMINI_API_KEY_2 |
AI Service | No | Gemini Key 3 |
| Google Gemini | Failover API Key 3 | GEMINI_API_KEY_3 |
AI Service | No | NVIDIA Primary |
| NVIDIA NIM (Llama 3.3) | Primary Fallback LLM | NVIDIA_API_KEY_1 |
AI Service | No | NVIDIA Secondary |
| NVIDIA NIM (Llama 3.1) | Secondary Fallback LLM | NVIDIA_API_KEY_2 |
AI Service | No | MockProvider |
Note: All external API calls feature bounded timeouts (5-10s) and automatically cascade down the provider chain if rate limits or network failures occur.
- Candidate context and curriculum data are loaded by the Backend.
- Backend passes Candidate Profile and Curriculum progress to the ContextBuilder.
- ContextBuilder constructs a dense prompt outlining the candidate's exact experience level and required topic.
- The AI Provider generates a strictly formatted JSON technical question, avoiding duplicates via local similarity checks (
difflib). - Candidate submits their answer on the Frontend.
- Backend saves the answer and triggers a background AI task.
- The interview state advances, asking exactly 4 targeted questions.
- Upon completion, the AI generates a final holistic evaluation report containing an overall score (out of 10), key strengths, and growth areas.
The platform dynamically adjusts interview difficulty based on:
- Completed Missions: Signals the candidate's actual capability.
- Experience Level: Differentiates Junior vs Senior expectations.
- Curriculum Alignment: Focuses on specific days (e.g. Next.js, RAG pipelines) the candidate has studied.
The Next.js dashboard presents high-level system statistics:
- Active interview sessions
- Total tracked candidates
- Total available curriculum modules
The Next.js frontend strictly communicates with the FastAPI backend through a dedicated REST client.
| Endpoint | Method | Purpose |
|---|---|---|
/health |
GET |
System health check |
/dashboard |
GET |
Aggregate dashboard statistics |
/candidates |
GET |
List all available candidates |
/curriculum |
GET |
Retrieve structured curriculum data |
/interview/start |
POST |
Initialize a new interview session |
/interview/{id} |
GET |
Retrieve active interview state |
/interview/{id}/answer |
POST |
Submit an answer |
/interview/{id}/next |
POST |
Retry/Force next generation step |
/interview/{id}/feedback |
GET |
Retrieve the final evaluation report |
No secret values or API keys are exposed or committed to the repository. All sensitive credentials must be configured securely on the deployment host.
NEXT_PUBLIC_API_URL: Directs the frontend to the deployed backend.FRONTEND_ORIGINS: Configures CORS safely on the FastAPI backend.ENVIRONMENT: Sets logging verbosity (development|production).PORT: Explicit host port binding.
The final deployment and logic have been rigorously verified:
- Production Verification: Frontend dashboard, candidate selection, and interview flows verified successfully on Vercel/Render.
- API Resiliency: Fallback behavior, API timeouts, and 429 rate limit cascades tested thoroughly via simulation scripts.
- Backend Test Suite: 100% passing automated test suite (
pytest -v) verifying AI logic, deduplication, JSON parsing, and domain state machine transitions. - Git State: Documentation-only commits verified via
git diff --check.
Frontend:
- Next.js 15
- React 19
- TypeScript 5
- Tailwind CSS v4
Backend:
- Python 3.13
- FastAPI
- Uvicorn
- Pydantic
- Google GenAI SDK
- OpenAI SDK (for NVIDIA NIM integration)
NovaForge - ViCodathon/
├── backend/
│ ├── api/ # API routing and schema contracts
│ ├── data/ # Static JSON mock data
│ ├── models/ # Pydantic domain models
│ ├── services/ # Domain logic and AI Provider Facade
│ └── tests/ # Pytest automated suites
├── docs/
│ └── technical-spec.md
├── frontend/
│ ├── src/app/ # Next.js App Router
│ ├── src/components/ # React UI components
│ ├── src/hooks/ # Client-side API management
│ └── src/lib/ # Typed API fetch client
├── .env.example
└── requirements.txt
- AI Usage Log: Documents how agentic AI and LLMs were used to scaffold and assist development.
- Prompt History: Preserves the exact chronological log of AI prompts, architectural decisions, and iterative milestones.
- Final Documentation: High-level summary of the finalized project architecture and features.
This project was built during a 48-hour AI-assisted hackathon. Extensive use of LLMs was employed for boilerplate generation, state-machine design, latency optimizations, and complex architectural debugging. For a detailed breakdown of what AI contributed vs what was manually verified, refer to the AI Usage Log.
Built with ❤️ by Team NovaForge for the ViCodathon 2026 hackathon.
MIT License — see LICENSE for details.