RAG · Telegram + Web
Campus Saathi Bot
A RAG-powered dual-bot and web assistant on a single async FastAPI server, answering multilingual campus queries grounded in college documents.
2025 - 2026
What it does, end to end
- Dual Telegram bots plus a web assistant running on one asynchronous FastAPI webhook server with a shared vector collection.
- Answers multilingual campus queries grounded in college documents using LangChain retrieval, Groq generation, and Qdrant vector search.
- Admin document-ingestion pipeline with Firecrawl, recursive chunking, and all-MiniLM-L6-v2 embeddings stored in Qdrant Cloud.
- Supports PDF upload, listing, and deletion from the admin side; deployed on Render.
Tech stack
How it works
Why it exists
Problem
Campus questions (fees, hostel, exams, admissions) get asked in a hundred group chats every semester, and the answers live in PDFs nobody reads. Students repeat questions; admins repeat answers.
Solution
Put the official documents behind one RAG assistant: admins ingest PDFs once through a Firecrawl pipeline, students ask in their own language on Telegram or Web, and answers come grounded from a shared Qdrant collection.
Under the hood
- Single async FastAPI server hosting both Telegram webhook apps and the web assistant.
- LangChain + Groq answer path: query - top-k retrieval from Qdrant Cloud - grounded reply in Telegram or Web.
- Ingestion: Firecrawl extraction, recursive chunking, all-MiniLM-L6-v2 embeddings, one shared Qdrant collection.
- Admin controls for PDF upload, listing, and deletion so the knowledge base stays current.
What changed
- One assistant answers the questions new students ask every semester - admissions, fees, hostel, and exam info - from official documents.
- Multilingual queries let students ask in the language they are comfortable with.
- Admins upload documents once instead of repeating answers in group chats.
Lessons that stuck
- 01Ingestion quality decides answer quality: Firecrawl output plus recursive chunking and MiniLM embeddings made retrieval reliable.
- 02One shared vector collection across Telegram and Web keeps behavior consistent on both surfaces.
- 03Admin tooling (upload, list, delete) is part of the product, not an afterthought - stale documents mean wrong answers.
What broke, and what it taught me
Mistake 01
Raw extracted web and PDF content was noisy, and early retrieval returned half-relevant chunks.
Lesson learned
Treat ingestion as a pipeline: Firecrawl extraction, recursive chunking, and MiniLM embeddings each earned their place in Qdrant Cloud.
Mistake 02
Telegram and Web started drifting apart with separate retrieval paths.
Lesson learned
Serve both surfaces from one shared collection and one answer path so fixes land everywhere at once.
Mistake 03
Documents went stale with no way to remove them, polluting answers.
Lesson learned
Ship PDF upload, listing, and deletion with the first version - knowledge-base hygiene is a feature.