📝 getLa.TeCH: Handwritten Notes to LaTeX

Inspiration

At Northwestern University, many classes—especially in Math, Computer Science, and Physics—require students to submit assignments and notes in LaTeX. We noticed a common struggle: students were spending hours manually converting handwritten notes into LaTeX code, often battling syntax, formatting, and obscure errors.

This problem inspired us to build getLa.TeCH — a tool that automates the conversion of handwritten notes into clean, polished LaTeX. Our goal was to make it easier and faster for students (and anyone else) to produce professional-looking notes and documents with minimal effort.

What We Learned

Throughout the development of getLa.TeCH, we dove deep into a variety of technical domains and gained valuable insights:

  • Transforming handwriting to LaTeX using Gemini
  • Designing a LaTeX compilation system that could run smoothly and catch errors
  • Orchestrating asynchronous LLM calls to compare outputs across models and select the best one
  • Building real-time error detection and user feedback mechanisms
  • Creating an intuitive, responsive frontend for previewing, editing, and exporting LaTeX documents

What Makes Our Tech Unique

Our tech is unique because it combines handwriting recognition, LaTeX generation, and real-time compilation into one seamless tool. While other solutions may handle just one step of the process, getLa.TeCH is the first to:

  • Take handwritten math, CS, or physics notes and accurately convert them to LaTeX
  • Use LLM cross-checking to select the most reliable output from multiple models
  • Include a custom-built live preview and editing interface—without relying on external APIs
  • Provide real-time LaTeX error checking, improving both the user experience and final document quality

This end-to-end workflow empowers users to focus on their content while we handle the formatting, syntax, and conversion behind the scenes.

How We Built It

Our tech stack was a mix of modern frontend and backend tools that allowed us to build a fast, responsive, and reliable system:

Frontend

  • Next.js – React framework with SSR and frontend routing
  • Tailwind CSS – Utility-first CSS for rapid UI development
  • TypeScript – Added static typing to JavaScript for safety and scalability
  • React – Component-driven UI for building dynamic user interfaces

Backend

  • FastAPI – Lightweight Python framework for building our API endpoints
  • Python – Core backend logic and integration language
  • Google Generative AI SDK – Used Gemini Pro for generating accurate LaTeX from handwriting
  • pdflatex – On-the-fly LaTeX to PDF conversion

Dev Tools

  • Postman – API testing and debugging
  • WSL – Linux environment setup within Windows
  • VS Code – Our code editor of choice
  • concurrently – To run frontend and backend servers in development together

Challenges We Faced

  • Handwriting to LaTeX accuracy: Getting accurate LaTeX output from handwritten notes was the biggest hurdle. After extensive testing, we found Gemini Pro offered the best performance for our specific use case.
  • Real-time preview and editing: Initially, we planned to use an external LaTeX API for rendering and editing. However, we didn’t have access to the required features, so we had to build our own custom interface for editing and live preview.
  • Compilation and rendering: Ensuring LaTeX code compiled correctly and displayed beautifully in the browser required careful integration of pdflatex, and real-time error feedback to the user.

Next Steps

  • Error handling and model consistency: We attempted to develop a system for asynchronous LLM calls, allowing us to cross-check multiple model responses and choose the most reliable LaTeX output using a voting algorithm. This would be useful for very large PDF documents -- say, converting a whole notebook of notes -- where the user would not feasibly be able to check the document for errors, and therefore would be willing to sacrifice processing time for higher accuracy. We weren't able to finish incorporating this feature, but it remains an interesting feature for future implementation.
  • Collaborative Editing: For group homeworks, a collaborative editing functionality, combined with our already-made interface with the real-time preview, would allow for synchronous group work without having to use separate documents.

Final Thoughts

getLa.TeCH bridges the gap between traditional handwritten notes and the formal elegance of LaTeX documents. It saves time, reduces frustration, and empowers students and professionals to focus on what they’re learning instead of how to format it.

We’re excited about the potential for getLa.TeCH to help students, researchers, and educators create accurate and beautiful documents with ease.

Built With

Share this project:

Updates

Submission history