Inspiration

What it does

How we built it

Challenges we ran into

Inspiration

Students juggle PDFs, browser tabs and revision notes, and generic chatbots make up sources. We wanted a study partner that shows where each answer came from, and that keeps what is in your documents separate from what comes from the web.

What it does

Nebius ResearchPilot is an AI research and study agent powered by NVIDIA Nemotron on Nebius Token Factory.

  • Smart tool routing: for each question, Nemotron returns a JSON plan choosing document_search, web_search, a calculator, or a combination.
  • Cited answers: PDF, DOCX, TXT and MD uploads are chunked and embedded, then retrieved with [DOC n] citations that include page numbers. Time-sensitive questions go to live web search.
  • Study Mode: generates notes (quick, standard or detailed) and interactive quizzes (MCQ, short answer, long answer, true/false, coding) with a score and a list of weak topics.
  • Streaming chat: shows live tool activity as the agent works.
  • Session memory: remembers project and topic context and filters out anything that looks sensitive.

How we built it

  • Model and inference: Nemotron chat and Nebius embeddings, called through Nebius's OpenAI-compatible API with the official openai SDK. Model names and endpoints are configurable, and <think> blocks from reasoning models are stripped.
  • RAG pipeline: PyMuPDF and python-docx extract text, paragraph-aware chunking (~900 characters, 150 overlap) feeds Nebius embeddings, and Qdrant stores them with cosine scoring and optional per-document filtering.
  • Agent: the model's tool plan is validated against an allow-list. A deterministic regex router takes over if the model call or its output fails.
  • Tools: an AST-based calculator with an operator allow-list (no eval), and a swappable Tavily search provider.
  • UI and deployment: Streamlit front end, with a Dockerfile and docker-compose (including Qdrant) for deployment on a Nebius VM.

Challenges

  • Getting reliable structured JSON for routing and quizzes from a reasoning model, which led to the allow-list validation and heuristic fallback.
  • Keeping document knowledge and web knowledge from blending, which meant grounding prompts so factual claims must carry [DOC n] tags, and saying so when nothing is found.
  • Handling user uploads safely: extension allow-list, 20 MB cap, and files parsed only as data, never executed.

What we learned

Routing and grounding matter more than raw model size for a trustworthy study assistant. A cheap deterministic fallback keeps the product usable when an LLM call misbehaves.

Evaluation and limits

evaluate.py measures routing accuracy (10 cases), retrieval hit@3 (8 checks) and citation presence (4 RAG answers), computed at run time. These keyword checks are a coarse proxy and don't judge answer quality. Known limits: no OCR for scanned PDFs, DOCX has no page numbers, and memory is single-user.

What's next

Persistent memory, OCR, reranking, multi-user auth, async ingestion and Nemotron guardrails.

Accomplishments that we're proud of

What we learned

What's next for Nebius ResearchPilot

Built With

  • docker
  • nebius-ai-cloud
  • nebius-token-factory
  • nvidia-nemotron
  • openai-sdk
  • pydantic
  • pymupdf
  • python
  • python-docx
  • qdrant
  • rag
  • streamlit
  • tavily
Share this project:

Updates

Submission history