I use a Supernote A5X2 for taking notes. I couldn't find the perfect dot grid for it. I wanted something simple—a light, 6mm spaced dot grid. Every generator I found online came with a catch: they either slapped a watermark on the page, forced their logo into the corner, or simply didn't work.
Usually, building a custom PDF generator means spending an hour documentation-diving to find the right library and figuring out coordinate systems. I didn't have the luxury of time, so I gave Gemini a prompt describing exactly what I wanted: the command, arguments, and what I expected to get out of it.
With these instructions it popped out a functional Python script using beautifulsoup, I think (I don’t have the original Python code, Gemini decided to delete it). It worked remarkably well. With a few follow-up prompts to tweak the spacing and dot density, I had a near perfect PDF.
The script worked for me, but I wanted to share it with the Supernote community. Most users aren't going to install Python and run terminal commands just to get a notebook template. I needed a web application. But I didn’t want to run a server and have it generate the PDF. I wanted a static file that I could host it in GitHub.
I went back to Gemini with a new challenge: “Build me a pure JavaScript application that generates this PDF entirely in the browser.”
Gemini generated the HTML, CSS, and JavaScript files using a client-side library. After a few rounds of "polishing the vibes"—tweaking the UI and refining the PDF output—I had exactly what I envisioned.
You can see the final product here https://satran.github.io/grid-generator and the source code is available in the GitHub repository https://github.com/satran/grid-generator.
Looking back, what I enjoyed most wasn't the speed, but the scaffolding. I didn’t have to research which JS library was best for PDF generation; the LLM picked a standard one and implemented it correctly. It created the structural "bones" of the app, allowing me to focus on supplementing and finalising the details rather than writing boilerplate code. I went from a minor annoyance to a public-facing tool in a fraction of the time it would have taken traditionally. I think I’m officially a convert. This is it: I can focus on the intent of the code and let the LLM handle the syntax.