Inspiration

I am a person who believes that every student deserves a fair chance to learn. But the reality in most public schools is brutal — one teacher, 150 students, and a stack of quiz papers that nobody has time to fully analyze. Most teachers can only look at the final score. The why behind a wrong answer never gets explored. Students fall behind, and by the time anyone notices, it is already too late. That thought kept bothering me. What if a teacher could know — within seconds of a quiz being submitted — exactly which concept confused 80% of her class? What if she didn't just get a list of wrong answers, but a ready-to-use lesson plan to fix it? That is the problem Gap Finder was built to solve.

What it does

Gap Finder is an AI agent built for teachers. A teacher uploads her quiz results as a simple CSV file — the kind you can export directly from Google Forms or any gradebook. The agent then reads every single student answer, finds patterns in how students got things wrong, and surfaces the most common misconceptions in plain language.

But it does not stop there. For every gap it finds, Gap Finder automatically writes a differentiated re-teaching plan — three versions, one for struggling students, one for on-track students, and one for advanced students. The teacher reviews everything, approves what she likes, and the plan is ready to distribute. No grading marathon. No Sunday night spreadsheet. Just clarity, fast.

How we built it

The entire project runs on Google Cloud and Elastic.

Data Layer: Quiz responses come in as a CSV and get pushed into Elastic Cloud through a Cloud Functions ingest pipeline. Each student answer is stored with both a keyword index and a semantic embedding using ELSER — Elastic's built-in sparse encoder model — so the search understands meaning, not just words.

Agent Layer: An agent powered by Gemini 3.5 Flash runs two core tools. The first tool is the Elastic Mcp which runs the elastic search command and upload the data to the index of the elastic 'quiz-data' and map data against it. The second tool takes those clustered misconceptions and calls Gemini to generate the three-tier re-teaching plan in structured JSON.

Frontend: A clean json app deployed on Cloud Run gives teachers a three-screen workflow: upload, review gaps, approve plan.

MCP Integration: We used the Elastic MCP server to connect the agent's search tools directly to Elasticsearch, which was one of the most interesting and challenging parts of the build.

Challenges we ran into

Honestly, this project pushed me in ways I did not expect.

Elastic MCP was completely new to me. I had never used the Model Context Protocol before. Understanding how the agent communicates with Elasticsearch through MCP, how tools are registered, and how responses come back took a lot of trial and error. There were moments where the agent was calling the right tool but getting back empty results, and I had no idea why. Turns out the index mapping was wrong.

Docker and Cloud Run took hours to figure out. This was probably my biggest technical battle. Getting the app containerized, making sure the Docker image built correctly, handling environment variables for secrets, and finally getting it to actually run on Cloud Run without crashing — that alone consumed nearly two full days. Every time I fixed one thing, something else broke.

Building the Elasticsearch index correctly was harder than expected. Getting the semantic_text field mapping right, deploying the ELSER model, waiting for it to download, and then re-indexing the data after fixing the mapping — I had to redo this process multiple times. Connecting to the endpoint and making sure authentication worked through Secret Manager added another layer of complexity. Prompt engineering for structured output was trickier than I expected. Getting Gemini to consistently return clean JSON with three tiers — struggling, on-track, advanced — without hallucinating extra fields or breaking the schema required a lot of iteration on the system prompt.

Accomplishments that we're proud of

The moment the agent correctly identified that 80% of students shared the same misconception — that chlorophyll itself produces oxygen — using nothing but their free-text answers, felt genuinely exciting. These were 18 different students who all phrased it differently, and the semantic search connected them all. Getting the full pipeline working end to end — from CSV upload to differentiated lesson plan — in a hackathon window is something I am really proud of. And honestly, figuring out Docker and Cloud Run after hours of struggle felt like climbing a mountain. When it finally deployed and the app loaded, that was a great moment.

What we learned

I learned that search is fundamentally different from storage — and that difference matters enormously when your data is messy, informal, free text written by 9th graders. A regular database would have found nothing useful in those answers. ELSER found the pattern immediately.

I learned that MCP is genuinely powerful once you understand the mental model. It is a clean way to give an AI agent real tools that talk to real services, and once it clicked, building the agent felt very natural. I learned that Docker is not optional if you want to deploy anything serious on Cloud Run. It felt like a detour at the time, but now I understand why it is the foundation of everything in cloud deployment.I learned that the hardest part of building something useful is not the code — it is deeply understanding the problem. Every design decision in Gap Finder came from thinking hard about what a real teacher actually needs at 10pm on a Sunday night.

What's next for GapFinder

I want to actually solve the problem of my educational institution and I want that my teachers should understand where we are lacking. The demo works for one class and one quiz. But the real vision is bigger. I know that everything is possible but how figuring out takes some time but my vision is
** Google Classroom integration ** — instead of uploading a CSV, the teacher just connects her Google Classroom account and Gap Finder reads quiz results automatically. There is one more thing on which I want to work is that School-wide dashboard — giving department heads a view across all classes and all teachers, so the school can identify systemic gaps in the curriculum itself, not just individual student struggles.

Built With

  • cloud-run
  • elastic
  • elser
  • gemini
  • gemini3.5flash
  • google-cloud-agent-builder
  • google-cloud-run
Share this project:

Updates