Project Info
Everything in this project was planned & completed during TreeHacks.
Inspiration
Every student knows the week in a course after which nothing makes much sense. When enough "knowledge gaps" form in a course that builds upon itself, it becomes impossible to learn, and easy to stop paying attention, doubt yourself, or even switch majors. A top-tier TED talk is Sal Khan on mastery learning. His core idea is that if we teach for mastery rather than passing, we can remedy the problems in learning caused by knowledge gaps, which grow exponentially over time. There's lots of talk about using AI to catch cheating, to assist in grading and translation, but less about facilitating mastery learning. We want to build a tool that helps educators facilitate this seamlessly.
What it does
Educators join Ta.ai and get a QR code students can scan to join their class. Before lecture, educators upload their slides, and as students leave lecture, they receive a few short/long-answer questions based on the slides via text, allowing them to answer at their convenience. Each answer gets a quantitative score depending on how thoroughly the student answered the question. On the flip side, educators are able to track which students are yet to complete the questions, the cumulative % of correctness in each lecture, and the individual-level responses to each question sent out. This helps educators understand what topics need to be better communicated, and what students are failing to grasp the material. As the class progresses, students have access to a search that provides chatGPT-style answers to their questions about course content, powered by the content of the slide decks.
How we built it
We thought about our pain points at students, and then asked educators about theirs. We learned educators needed better ways to track student knowledge gaps. We knew that we needed an easier, more engaging way to demonstrate knowledge: text-messaging is a non-utilized and highly-convenient medium, which made it a good one to try. The product emerged from this intersection. We used Convex as our backend, Flask to deploy functions, and Next.js as our front-end. We used Chroma, Langchain and OpenAI to generate multi-modal embeddings for the slides and conduct Retrieval-Augmented Detection (RAG.) We used Twillio to send text messages to students.
Challenges we ran into
Refusing to compromise front-end quality Coming from a startup background, we knew that the devil is in the details for product usage, and wanted to build something that was shippable and usable for real-world usage. This came with a lot of extra time spent on interaction design, animation, and hosting. Picking up Convex Had to pick up a new backend stack and then play musical chairs switching ownership and membership as only 2 people were allowed in the free tier. Stuck with it because we loved the ease of using Convex in our stack otherwise :) Deploying with Twillio Spent hours debugging a niche error which was turned out to be the need to run it locally on a specific port :(
Accomplishments we're proud of
First ever hackathon for all of us! Shipped a lot, fast to bring the vision to life Lots of laughing with each other 20 hours of sleep between the 4 of us
What we learned
Don't shoot for the moon We originally planned to be a lot more ambitious, hoping to make embeddings for lecture recordings, and integrate the search with Canvas and Ed. Picking up new stacks isn't easy Two of us were completely new to web development 36 hours ago. Tools like v0 and Cursor make it a lot easier to learn, but the learning curve is still there!
What's next
We're going to expand search functionality and data availability, by allowing search across Canvas and EdStem too. We've already sent a few feeler emails to run a pilot program with Stanford CS classes this Spring quarter. We'll be cold-emailing 100 more CS professors across quarter-system schools.
This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Inter, a custom Google Font.
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
Analysis
View
Metric
- 28
- 16
- 14
- 9
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- JavaScriptIn code
- Next.jsIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- FlaskClaimed
- LangChainClaimed
- OpenAIClaimed
- PythonClaimed
6 of 10 appear in the indexed code. 4 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
114 KB
Source files
47
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
zcsabbagh/Treehacks24
65 files · 532 KB · @ de5e3a7
Structure
Interface
24 files · 37%Screens, components and styles rendered to the user.
+3 moreAPI & routing
1 file · 2%Request entry points: routes, handlers and controllers.
Application logic
18 files · 28%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript91%
- JavaScript4%
- Markdown3%
- CSS1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 24- @auth0/nextjs-auth0
- @nivo/line
- @radix-ui/react-icons
- @radix-ui/react-slot
- @react-pdf/renderer
- @xixixao/uploadstuff
- class-variance-authority
- clsx
- convex
- lucide-react
- next
- react
- react-dom
- tailwind-merge
- tailwindcss-animate
- +9 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.