Inspiration

Noesis was born from a simple observation: the most profound learning often happens in the "quiet" moments of a classroom—the hesitant scribble in a notebook or the silent curiosity of a student who isn't comfortable raising their hand. We realized that traditional classroom dynamics often suffer from a "participation gap," where only the loudest voices drive the conversation. We were inspired to build a tool that could bridge this gap, using AI not as a judge, but as a sense-making partner that could surface these hidden threads of thought and weave them into the collective classroom dialogue.

What it does

Noesis is a sense-making platform that organizes and thematizes student ideas in real-time. By analyzing student notes and reflections, it generates an anonymous thematic heatmap that allows teachers to see cognitive patterns across the room. Unlike evaluative tools, it preserves the student's original language and gives them "interpretive authority" through a self-classification step. It identifies "dissonance points"—moments where a student's self-reported confidence differs from the AI's semantic analysis—allowing teachers to intervene exactly when a student might have a false sense of mastery.

How we built it

We built Noesis using a modern, asynchronous Python stack:The Brain: We utilized the Google GenAI SDK, leveraging gemini-1.5-flash for classification and text-embedding-004 to convert text into high-dimensional vectors.The Engine: The backend is powered by FastAPI and Uvicorn, utilizing motor for asynchronous MongoDB interactions.The Math: We applied Principal Component Analysis (PCA) to reduce 768-dimensional embeddings into a $2D$ coordinate system.The Clustering: We used DBSCAN to group thoughts by density, calculating "semantic closeness" via Cosine Similarity:$$\text{similarity} = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|}$$

Google Gemini API project number: 693704099958

Challenges we ran into

One of our biggest hurdles was the "Agency Gap." Initially, our AI labeled students automatically, but we quickly realized this stripped students of authority over their own minds. We solved this by redesigning the flow to include a mandatory self-classification step. Technically, we also struggled with asynchronous timing issues where the AI client would initialize before the environment variables were loaded; we resolved this by refactoring our service layer to prioritize load_dotenv() at the application's entry point.

Accomplishments that we're proud of

We are particularly proud of our "Dissonance Detection" logic. Successfully bridging the gap between a student's subjective feeling and an AI's objective semantic analysis provides a unique pedagogical signal that isn't found in standard educational software. We are also proud of our commitment to Privacy by Design, ensuring that student data is vectorized and anonymized so that the classroom remains a safe space for exploratory, unfinished thought.

What we learned

We learned that the "math of meaning" is complex. Flattening a student's high-dimensional thought into a $2D$ point $(x, y)$ involves a significant loss of nuance, which we learned to mitigate by keeping the raw text "one-click away" for the teacher. We also learned that in a classroom setting, Support over Replacement is the only ethical path for AI; the tool is most powerful when it acts as a catalyst for human conversation, not a replacement for it.

What's next for Noesis

Moving forward, we want to shift Noesis from a "predictive" tool to a "co-designed" tool. We plan to:

Partner with Educators: Move beyond synthetic data to pilot Noesis in live, diverse classroom environments.

Collaborative Labeling: Allow students to collectively name the clusters on the heatmap, turning data visualization into a peer-learning activity.

Longitudinal Insights: Develop a way to track the evolution of a class's "thematic journey" over an entire semester while maintaining strict data purge policies to protect student privacy.

Built With

Share this project:

Updates