PS-03: Autonomous Developer Onboarding Agent
Team: Code Yodha · Syrus 2026
N.O.V.A. is an Advanced Agentic Onboarding Platform designed to transform the resource-intensive process of developer onboarding into a fully autonomous experience. Instead of static wikis, new hires interact with an intelligent "HR & Tech Lead" hybrid that personalises their journey based on role, experience, and tech stack — while HR managers get a live dashboard to monitor every hire's progress in real time.
- Persona Identification — Conversational extraction of role (Backend/Frontend/DevOps), experience level, tech stack, goals, and knowledge gaps.
- Dynamic Path Generation — Personalised onboarding checklists of 8–12 tasks built in real time, with a Gantt-style timeline view (Day 1 / Day 3 / Day 7 / Day 14 / Day 30).
- Professional Hybrid RAG — Retrieval-Augmented Generation pipeline using semantic vector search (ChromaDB) combined with keyword-based reranking for maximum accuracy. Zero hallucination on company policy.
- Real-Time Chat — Live WebSocket chat with Nova, persistent across page navigation using React Context + localStorage.
- Tool Calling — Nova creates Jira tickets and sends Slack welcome messages directly from the conversation.
- HR Dashboard — Live onboarding tracker with progress bars, status badges, completion reports, and a floating AI chatbot for HR managers.
- Knowledge Base Explorer — Searchable company docs with category filtering, Open Ticket modal, and related articles.
- Autonomous Reporting — Automatic generation of structured completion summaries.
- Dark / Light Mode — Persists across sessions via localStorage.
| Component | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 14 + TypeScript + Tailwind CSS | UI, routing, WebSocket client, dark mode |
| Backend | FastAPI (Python) | WebSocket API, REST endpoints, async AI calls |
| Agent Logic | LangGraph | State machine — Extract Persona → Generate Checklist → Answer |
| LLM | llama-3.3-70b-versatile (via Groq) | Reasoning, persona extraction, RAG answers, HR assistant |
| Vector DB | ChromaDB | Local persistent storage for secure, contextual documentation |
| Embeddings | SentenceTransformers all-MiniLM-L6-v2 |
High-quality local text embeddings |
| RAG Search | Hybrid (cosine vector + keyword BM25) | Accurate retrieval from KB documents |
| Mock Tools | Python async functions | Jira ticket creation, Slack welcome messages |
nova-onboarding/
├── backend/
│ ├── agent/
│ │ └── graph.py ← LangGraph brain (3 nodes + routing + tool calling)
│ ├── tools/
│ │ ├── chunker.py ← Text chunking with overlap
│ │ ├── config.py ← Logging + env config
│ │ ├── email_scheduler.py ← Async job scheduler for progress emails
│ │ ├── email_service.py ← SMTP integration (Welcome, Weekly, Completion)
│ │ ├── embeddings.py ← SentenceTransformer model loader
│ │ ├── ingest.py ← Full ingestion pipeline runner
│ │ ├── loader.py ← .md document loader
│ │ ├── mock_integrations.py ← Jira + Slack async mock tools
│ │ ├── ragtool.py ← rag_search() entry point
│ │ ├── retriever.py ← Hybrid search (vector + keyword reranking)
│ │ ├── test_rag.py ← RAG functional tests
│ │ ├── vector_store.py ← ChromaDB client (add/search)
│ │ └── verifier.py ← Onboarding verification logic
│ ├── data/
│ │ ├── tier1_rag/ ← Public knowledge base (.md files)
│ │ ├── tier2_logic/ ← Internal logic (Personas, Checklists, Tickets)
│ │ └── tier3_templates/ ← Structured communication templates
│ ├── chroma_db/ ← Auto-generated vector store (gitignored)
│ ├── main.py ← FastAPI app + /ws/chat + /ws/hr-chat
│ └── requirements.txt
│
└── frontend/
├── src/
│ ├── app/
│ │ ├── layout.tsx ← Root layout with ChatProvider
│ │ ├── page.tsx ← Page redirect (Login/Dashboard)
│ │ ├── login/page.tsx ← Auth page
│ │ ├── chat/page.tsx ← Developer chat interface
│ │ ├── my-path/page.tsx ← Checklist & Gantt timeline
│ │ ├── knowledge-base/page.tsx ← Document explorer & ticket modal
│ │ ├── team/page.tsx ← Employee directory
│ │ ├── dashboard/page.tsx ← HR dashboard & floating chatbot
│ │ └── completion/page.tsx ← Graduation report
│ ├── components/
│ │ ├── SidebarLayout.tsx ← Shared navigation & dark mode
│ │ └── TaskItem.tsx ← Interactive checklist component
│ └── context/
│ ├── AuthContext.tsx ← Session management
│ └── ChatContext.tsx ← Global WebSocket state
├── package.json
└── next-env.d.ts
- Node.js v18+
- Python v3.11+ (64-bit — important on Windows)
- Git
- Groq API key → https://console.groq.com/keys
git clone https://github.com/CMPN-CODECELL/Syrus2026_Code_Yodha.git
cd Syrus2026_Code_Yodha/nova-onboardingcd backend
# Create virtual environment
python -m venv .venv
# Activate — Windows PowerShell:
.venv\Scripts\Activate.ps1
# Activate — Mac/Linux:
source .venv/bin/activateWindows only — if you get an execution policy error:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser .venv\Scripts\Activate.ps1
# Install dependencies
pip install -r requirements.txtCreate a .env file inside backend/:
GROQ_API_KEY=your-groq-api-key-here
MODEL_LLM=llama-3.3-70b-versatile
MODEL_NAME=all-MiniLM-L6-v2
DB_PATH=chroma_db
DATA_PATH=data
LOG_LEVEL=INFO
CHUNK_SIZE=400
CHUNK_OVERLAP=50
# Optional integrations
JIRA_BASE_URL=https://your-org.atlassian.net
JIRA_EMAIL=your-email@company.com
JIRA_API_TOKEN=your-jira-token
JIRA_PROJECT_KEY=FLOW
SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
# Email configuration
SMTP_EMAIL=your-email@gmail.com
SMTP_PASSWORD=your-app-password
HR_EMAIL=hr-target-email@company.comNever commit
.env— it is already in.gitignore.
Run once before starting the server. Loads all .md files from data/ into ChromaDB.
# Windows PowerShell:
$env:PYTHONPATH = "."
python -m tools.ingest
# Mac/Linux:
export PYTHONPATH=.
python -m tools.ingest# Windows PowerShell:
$env:PYTHONPATH = "."
python main.py
# Mac/Linux:
export PYTHONPATH=.
python main.pyServer starts at http://localhost:8000
Open a new terminal:
cd nova-onboarding/frontend
npm install
npm run devFrontend starts at http://localhost:3000
Run these checks to confirm every layer works:
- RAG Pipeline Test:
python -m tools.test_rag - Smoke Test Agent:
python agent/graph.py - API Health: Access
http://localhost:8000/orhttp://localhost:8000/docs
| Error | Fix |
|---|---|
ModuleNotFoundError: No module named 'tools' |
Run with PYTHONPATH=. |
ExecutionPolicy error |
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser |
429 Too Many Requests |
Rate limit — wait 1 minute. |
| Chat clears on navigation | Ensure layout.tsx wraps app with <ChatProvider>. |
| Role | Responsibility |
|---|---|
| AI & Agent Architect | LangGraph brain, state machine, prompt engineering |
| RAG Engineer | Hybrid search, ChromaDB, embeddings, ingestion |
| Backend Engineer | FastAPI, WebSocket, integrations, email services |
| Frontend Engineer | Next.js UI, real-time chat, HR dashboard |