How I Vibe-Coded a Micro App in 10 Minutes with ChatGPT
Collaborative coding that saved hours of manual conversion work
I’ve always found that the most satisfying coding projects are the ones that solve a genuine personal need. Recently, I faced the rather tedious prospect of converting about 200 single-page PDFs into Markdown format on my Mac. Rather than spending hours manually coding a solution (or worse, converting each file by hand), I thought I’d try a more collaborative approach with ChatGPT to vibe-code it by guiding the AI to build a microapp. Currently, these small one-function apps or building quick prototypes are the best fit for vibe coding, but I know some people are building full apps or platforms using this approach.
So here’s how I did it. The challenge was straightforward but potentially time-consuming. I needed a script that would cycle through my folder of PDFs, extract the text content and save each as a properly formatted Markdown file. I was going to use the Markdown files as ‘knowledge’ for a RAG chatbot. The PyPDF2 library seemed the obvious choice for handling the PDF processing as I use Python as my main coding language, but I wanted to avoid getting bogged down in documentation.
My first interaction with ChatGPT involved outlining what I needed: a Python script that could run through a directory of PDFs, extract text from each single-page document and convert that text to a corresponding Markdown file with the same filename ( switching the extension from .pdf to .md). I was quite specific about my needs, which I find helps ChatGPT deliver more useful responses.
The AI returned with a comprehensive script that included the core functionality, useful comments and installation instructions for PyPDF2. I particularly appreciated that the code was structured to be easy to understand and modify. There was a dedicated function for the PDF-to-Markdown conversion and a main routine that handled the folder processing — exactly the organisation I would have created myself.
Of course, the initial script wasn’t perfect for my specific setup. I needed to tweak the folder path to match where my PDFs were stored on my Mac. I used Cursor (my preferred development environment for this sort of work) to make these edits and also adjust the error handling. These edits weren’t extensive, but they made the script feel more customised to my setup.
When it came time to run the script, I fired up Terminal in Cursor and watched as it methodically processed each PDF, creating corresponding Markdown files in the same directory. It was satisfying to see the files appear one after another without any manual intervention.
What struck me about this experience was how it represented a different approach to coding. Instead of starting with a blank editor and building from scratch, I collaborated with an AI to create a solution. I provided the requirements and domain knowledge (understanding what I needed the code to do and where my files were located). At the same time, ChatGPT contributed the technical implementation details and boilerplate code that would have taken me longer to write.
The outcome was exactly what I’d hoped for—a micro app that saved me hours of tedious work. Getting ChatGPT to generate the initial script, editing it to fit my needs and running it took perhaps 10 minutes, compared to the hours it would have taken to convert 200 files manually.
This approach is particularly useful for “utility coding” — creating small, targeted applications that solve specific problems rather than building complex systems. It’s pretty efficient to outline what you need and have ChatGPT generate a foundation you can customise to your requirements.
More on vibe coding here: