Work · 06 of 9

AskMyNotes

RAG study copilot that answers only from your notes. First place, Noesis Hackathon

Role
Dashboard UI; co-built the RAG pipeline with Ved
Team
Nimit Jain, Ved Kumar Singh
Period
Feb to Mar 2026
Status
hackathon
Stack
  • Next.js 16
  • LangChain
  • Gemini 2.0 Flash
  • ChromaDB
  • Supabase Auth
askmynotes-algorise.vercel.app
AskMyNotes landing page, the team's copy, captured 2026-09-15
AskMyNotes landing page, the team's copy. Captured from the live site on 2026-09-15.

First place, Noesis Hackathon, Vedam School of Technology (8 hours, about 50 teams)

What it does

Upload lecture notes as PDF or text, then ask questions and get answers grounded only in that material, with citations to the file and chunk and a confidence badge. Or switch to study mode and generate five MCQs or three short-answer questions from the same chunks. Voice in and out through the Web Speech API. Every question is scoped to one subject, so notes for Operating Systems can never answer a question about Networks.

From the repository

22Commits3 mine, 14%
3,437Lines of code32 source files
Counted from AskMyNotes-AlgoRise on 2026-09-15, commits 2026-02-26 to 2026-02-27. Source lines only (no vendored, generated or built files). The origin is Ved's repository; my commits are the dashboard, the initial structure and the README.

Next.js 16 App Router with three API routes (upload, ask, study), LangChain with the Google GenAI and text-splitter packages, Gemini 2.0 Flash for both embeddings and generation, a persisted ChromaDB store, and Supabase auth with middleware-protected routes.

Retrieval

Notespdf-parse, 500/50 chunksGemini embeddingsper chunkChromaDBuser + subject metadataQuestionembedded, top-kThreshold 0.30else "Not found in yournotes"Answercitations, confidence
Chunks of 500 characters with 50 overlap; a 0.30 similarity floor; refusal when nothing clears it.

Upload splits the text with a recursive character splitter (500 characters, 50 overlap, so a sentence cut at a chunk edge still appears whole in one of them), embeds each chunk, and stores it in Chroma with the user id, subject, file name and chunk id as metadata. Ask embeds the question, retrieves the five nearest chunks filtered by user and subject, converts Chroma’s distances to similarities, and drops anything under 0.30. If nothing survives, the route returns “Not found in your notes” without calling the model at all. Otherwise the survivors are formatted as [Source n — File, Chunk] and sent with an instruction to answer only from them or reply with that exact refusal sentence.

Confidence is the best surviving similarity, banded: High above 0.50, Medium from 0.40, Low below, and forced to Low whenever the answer contains the refusal sentence. That refusal path is the anti-hallucination layer: the system would rather say nothing than invent. The bands were chosen by feel in an eight-hour hackathon and never calibrated, which is the honest limit of the design.

Try it

The same pipeline shape, in the browser: paste notes, watch them split, ask a question, see which chunks clear the floor and what the model would be given. Ask about something the notes do not cover to hit the refusal path.

Retrieval lab500/50 chunks · top-5 · floor 0.3 · refusal path
Chunks4 · 1,251 chars
  1. chunk 0 · 415 ch Operating Systems, Unit 3: Scheduling A process scheduler decides whi
  2. chunk 1 · 288 ch Round robin (RR) gives each process a time quantum, typically 10 to 10
  3. chunk 2 · 314 ch Priority scheduling can starve low-priority processes. Aging fixes sta
  4. chunk 3 · 228 ch Deadlock is a different topic: four conditions must hold at once, mutu
similaritySearchWithScoretop 5
chunksimilarityfloor
chunk 10.426kept
chunk 00.119dropped
chunk 20.069dropped
chunk 30.000dropped
Responseconfidence Medium

The model would receive the 1 surviving chunk below as context, with the instruction to answer only from them or reply exactly "Not found in your notes".

  • [Source 1 — File: notes.txt, Chunk: 1] Round robin (RR) gives each process a time quantum, typically 10 to 100 milliseconds. A small quantum approaches process

In the repository the embeddings are Gemini's and the store is ChromaDB filtered by user and subject, so scores differ from the lexical coverage score used here; the mechanism (top-k, floor, refusal, citations, confidence bands) is the same. The confidence bands were never calibrated against real questions, which is the main thing I would change: see the evaluation lab for how the retrieval on this site was measured instead.

The hackathon, and who did what

Noesis, Vedam School of Technology, eight hours, about fifty teams. A rule change halfway through and a connectivity failure near submission. We were shortlisted to the top ten and then announced first. Team: Nimit Jain (landing page, frontend, Supabase auth), Ved Kumar Singh (the three API routes), and me (the dashboard, and the RAG design with Ved: ChromaDB, the chunking and overlap, the retrieval and the refusal path). The commits for the routes are Ved’s; the design of what they do was shared work.

What I took from it went straight into Ask this site: a calibrated threshold instead of a guessed one, a published question set with per-question results, and adversarial questions that must be refused. The landing page’s “98% accuracy” and “5,000 students” are placeholder marketing copy from the hackathon night, not measurements, and are not repeated here.

keysKeyboard
j / k
next / previous row
Enter
open the focused row
⌘K or /
search, or ask this site
g then h w a c
go home, work, about, contact
t
toggle light and dark
Esc
close the palette or this map
?
this map