Deep Dive
Building EasyTeX.cc: From Friend's Resume to Production LaTeX Platform
How It Started
It started with a simple request: a friend from a non-CS background asked me to help build a LaTeX-based resume. As I walked them through the process (learning markup syntax, debugging compilation errors), I realized this wasn't just their problem. It was a universal pain point.
Non-technical users shouldn't have to learn LaTeX syntax at all. What if they could just describe what they want in plain English, and the system generates the LaTeX behind the scenes? That's when I decided to build EasyTeX.cc, an AI-powered webapp that takes natural language input, generates LaTeX in the backend, and renders professional PDFs instantly.
The First Version: Just Make It Work
I wanted to validate the idea fast, so I kept it minimal:
- Simple text input for natural language descriptions
- AI converts descriptions to LaTeX code behind the scenes
- PDF.js renders the result instantly
- Open-source LaTeX API for compilation (8 seconds, but good enough for v1)
- No accounts, no saves, no complexity
Friends loved it. No LaTeX knowledge needed, just describe what you want. But I knew this wouldn't scale.
Learning What Users Actually Want
User feedback shaped the product:
- More document types: Trained AI to understand resumes, cover letters, research papers with proper formatting conventions
- Auto-save: Added localStorage backup every few seconds so work never gets lost
- View LaTeX code: Toggle to show generated code with Monaco Editor for power users to view and copy
When Everything Broke
The free API hit its limits:
- 100 requests/hour throttling (I was hitting that in minutes)
- Constant timeouts and 500 errors
- Complete service outages some days
Solution? Build my own Flask server on AWS. Sounded simple: EC2 + Flask + TeX Live. Reality? Way more complicated.
Building the Flask API on AWS
Main challenges:
- Handling concurrent requests without file conflicts
- Securing against LaTeX shell command execution
- Parsing cryptic error logs into user-friendly messages
Got it working with systemd, nginx, and CloudWatch. Not glamorous, but reliable.
The Result: Finally Reliable
Night and day difference:
- Before: 8-12 seconds, 85% success rate, 100 requests/hour limit, constant downtime
- After: 2-3 seconds, 99%+ success rate, handles hundreds of concurrent users
Users noticed immediately. That feeling when something you built finally works reliably? Pure satisfaction.
What I Learned
- Ship fast, but own your core: Third-party APIs validate ideas quickly, but you need control over critical functionality
- Performance matters: Shaving 6 seconds off compile time changed everything. Fast feels like magic, slow feels broken
- Listen to users, filter feedback: Focus on solving the biggest pain points for the most people
- Security is not optional: Spent 20% of time hardening against LaTeX shell command execution
Where It Stands Today
EasyTeX.cc is live and being used by 1500+ people: students writing theses, researchers drafting papers, job seekers building resumes. It started as a weekend project to help one friend and turned into something genuinely useful.
Next up? I'm building a Chrome extension to make document generation even more accessible. The journey continues.