Team information


김선규(BE) : https://seonkyukim.github.io/about/

정재홍(FE, app-developer) : https://jaehong21.com/careers

이준명(ML) : https://slime0519.github.io/

제갈윤(BE, ML serving) : https://yunjegal.notion.site/Yun-Jegal-a1aab6ba45574b2e8f058b5f382bfabb

About our service


Our service has been developed to assist high school students in Korea with their mathematics learning. High school mathematics education in Korea covers a wide range of topics including algebra, geometry, and more, and it involves various types of problems. As a result, it is not easy for students to make fast learning progress. Therefore, our team has developed a service that, when students capture a problem they are unfamiliar with, recommends similar problems to help them quickly improve their areas of weakness.

System design


To facilitate the recommendation of similar problems, our team utilized an embedding-based similarity search approach. The embedding-based method make system to robust in handling unseen data and require tiny computation cost in inference time. Additionally, if we need scalability and speed optimization, we can attach vector search frameworks like faiss, on the vector index.

This system runs on CPU inference only, with no GPU instances. So, we were able to build a low-cost system using only AWS lambda instances for computation.

Overall system diagram

Overall system diagram

The sequence of events above happens in real time

  1. A user takes a picture of a math problem and passes it to the backend API.
  2. The backend API calls the MathPix API to convert the math problem image into a Latex String.
  3. The backend API gets the embedding from the converted Latex String by making an Inference API request.
  4. Select the 3 most similar math problems from the existing problem set stored in S3 using the Embedding similarity and respond to the user.