Ask your material with page citations, revise in Studio, and keep evidence one click away.
Live demo | Product docs | Architecture
LUMA is a citation-grounded revision tool for college students. It turns course PDFs into a Sources-Chat-Studio workspace where answers stay tied to selected material, and study tools help surface weak understanding before an exam.
It is not a general chatbot and not a full adaptive-learning platform. The core promise:
Every factual answer should be traceable to the student's own material, and every study activity should help reveal what the student has not mastered.
Students often have large, fragmented notes and little time to revise them. Ordinary summarizers compress content without checking learning. Generic chatbots can answer from outside knowledge, hide uncertainty, and give no fast path back to the source page.
LUMA focuses on three frictions:
- Finding an answer across course PDFs.
- Verifying that answer against the exact source page.
- Discovering weak understanding before an exam.
- Keep every factual chat answer grounded in selected sources.
- Make page evidence one click away from any citation.
- Turn the same sources into summary, flashcards, quiz, teach-back, and optional voice study tools.
- Ship a reliable temporary demo without accounts, databases, or durable uploads.
The desktop workspace opens with pre-indexed demo sources (Economics and DSA), accepts temporary PDF uploads, answers with backend-validated page citations, and opens the cited PDF in an evidence sheet. Studio generates revision tools from the same selected sources. English-India speech is optional through Sarvam STT/TTS, with text fallback if speech fails.
Landing
Workspace
Cited chat
Cited summary
Explore tools
- Concise landing page with Start studying into
/workspace. - Sources-Chat-Studio desktop workspace with responsive sheet layout.
- Two bundled demo PDFs with precomputed embeddings (Economics, DSA).
- Temporary PDF upload with page-aware extraction and indexing feedback.
- Grounded chat with backend-validated page citations and evidence viewer.
- Studio: cited summary, flashcards, quiz, teach-back, audio overview, and visual deck fallback for the economics demo.
- Deterministic confidence and mastery signals from practice attempts.
- Session-scoped learning memory shared by Chat and Studio.
- Optional English-India push-to-talk and narration via Sarvam Saaras v3 / Bulbul v3.
- Temporary sessions with expiry, reset, and cleanup. No login required.
- Explore Tools page for curated specialist learning sites.
- Single Docker deployment serving React and FastAPI together.
- React, Vite, TypeScript
- Tailwind CSS and shadcn/ui patterns
- React Router
- FastAPI and Python
- PyMuPDF for page-aware PDF extraction
- NumPy cosine similarity for in-memory retrieval
- Official OpenAI SDK (Responses API, embeddings, structured outputs)
- Sarvam Saaras v3 for English-India speech-to-text
- Sarvam Bulbul v3 for text-to-speech
- Docker image with compiled frontend served by FastAPI
- Render web service for the live demo (single instance)
- No database, object storage, queue, or account system in this release
- Live demo: https://luma-study.onrender.com
- Repository: https://github.com/AbhineethVS/slashforge-build
- Python 3.12+
- Node.js 20+
OPENAI_API_KEYfor embeddings and generationSARVAM_API_KEYfor optional voice features
A ChatGPT subscription does not include OpenAI API usage. Create an OpenAI Platform API key with separate billing or prepaid credit.
Copy .env.example to .env and fill in keys:
OPENAI_API_KEY=
OPENAI_CHAT_MODEL=gpt-5-mini
OPENAI_AUDIO_OVERVIEW_MODEL=gpt-5
SARVAM_API_KEY=
SARVAM_TTS_SPEAKER=ishitacd backend
python -m pip install -e ".[dev]"
python -m pytestcd frontend
npm install
npm run buildAfter building the frontend:
cd backend
python -m uvicorn luma_api.main:app --reloadOr run frontend and backend separately during development:
# terminal 1
cd backend
python -m uvicorn luma_api.main:app --reload --host 127.0.0.1 --port 8000
# terminal 2
cd frontend
npm run dev -- --host 127.0.0.1 --port 5173Open http://127.0.0.1:5173 for Vite, or the FastAPI origin after npm run build.
docker build -t luma .
docker run --rm -p 8000:8000 --env-file .env lumacd backend
python -m luma_api.demo_assets ../demo.pdf --output ../demo_assets/economics --display-name "Economics - Theory of Cost.pdf" --source-id 8f4d0f62-5b8a-4f1e-9c2d-6a7b1c3d4e5f
python -m luma_api.demo_assets ../dsa.pdf --output ../demo_assets/dsa --display-name "DSA - Data Structures.pdf" --source-id c3e8a914-7f2b-4d91-9e55-2b6f0a8d1c47- Product requirements
- UX design specification
- System architecture
- AI and RAG specification
- Data model and API contracts
- Implementation plan
- Quality, security, and cost plan
- Architecture decisions
- References and licenses
- Temporary uploads and session activity can disappear after expiry, reset, or a server restart. Bundled demo sources remain.
- Page citations come from trusted chunk metadata, not model-written page numbers.
- Uploaded source text is treated as untrusted data.
- OpenAI and Sarvam keys stay on the server only.
Abhineeth V S
- GitHub: AbhineethVS
If this project is useful, star the repository and open issues or pull requests when you find gaps.
Thank you for checking out LUMA





