Mitra is a portfolio project built at IIT Madras demonstrating production-grade agentic AI: multi-agent orchestration, semantic memory, skill gap detection, and fine-tuned models, all in a single domain-specific system for ML/AI internship pipelines.
Each agent is an isolated async node in a LangGraph StateGraph. The graph is rebuilt per request to bind the DB session: no global state, no module-level caches.
Finds ML/AI internships using pgvector semantic similarity against your skill profile.
Compares your resume skills against job requirements and surfaces specific gaps to close.
Generates time-boxed learning plans calibrated to your current level and target role.
Extracts and categorises skills from PDF resumes, building a semantic skill graph.
Runs contextual mock interviews on ML system design and behavioural questions.
Maintains pipeline state across wishlist, applied, interviewing, offer, and rejected.
build_graph(db) is called inside the SSE endpoint so each request gets a fresh graph with a bound async DB session, avoiding session sharing across concurrent requests.
All Claude calls route through services/llm_client.py. No agent imports anthropic directly, making model swaps and rate-limit handling a one-file change.
Psycopg3 (asyncio) gives cleaner integration with pgvector than asyncpg. Embeddings are generated by a sentence-transformers singleton loaded once at startup.
Qwen2.5-3B fine-tuned with QLoRA on 500 synthetic training pairs to classify intent before routing, keeping the main LLM call focused on generation, not classification.