How praveen-devarakota/campusgpt-backend works
CampusGPT is a Flask backend for answering questions about college documents and student attendance. Its main workflow routes chat requests to either attendance lookup or document retrieval, then returns an answer with source details. Document indexing is a separate preparation path that loads PDFs, chunks and annotates their text, and stores embeddings in ChromaDB. The graph follows the sampled source and README; the indexing entry point and some internal implementations were not sampled, so their wiring is not inferred.
Main entry points: vectorstore.py Index builder · app.py Flask chat API · retriever.py Semantic retriever · llm.py Answer generation
Components 17
Chat API
- Flask chat API
app.py
Document RAG
- Embedding model
rag/embeddings.py - Chroma collection
chroma_db - Semantic retriever
rag/retriever.py - Answer generation
rag/llm.py - Metadata search
utils/metadata_search.py - Document metadata
metadata/metadata.json
Document Indexing
- Question-paper PDFs
data/question_papers - PDF OCR loader
rag/loader.py - Document chunker
rag/chunker.py - Source metadata
rag/metadata_extractor.py - Index builder
rag/vectorstore.py
Attendance
- Attendance PDF
data/attendance/attendance.pdf - Attendance query
utils/attendance_query.py - Attendance OCR parser
utils/attendance_parser.py
Other components
- Campus user
- Groq API
Connections 17
- Campus user → Flask chat API: submits query
- Flask chat API → Campus user: returns answer
- Flask chat API → Attendance query: checks attendance
- Attendance query → Attendance OCR parser: looks up record
- Attendance OCR parser → Attendance PDF: OCR reads
- Flask chat API → Semantic retriever: retrieves documents
- Semantic retriever → Embedding model: embeds query
- Semantic retriever → Chroma collection: searches
- Flask chat API → Answer generation: generates answer
- Answer generation → Groq API: requests completion
- Index builder → PDF OCR loader: loads PDFs
- PDF OCR loader → Question-paper PDFs: OCR reads
- Index builder → Document chunker: chunks documents
- Index builder → Embedding model: embeds chunks
- Index builder → Source metadata: extracts metadata
- Index builder → Chroma collection: stores vectors
- Metadata search → Document metadata: searches