Historical Notes from Rebolforum
Below are some messages from from the old Rebolforum discussion about the zip file workflow. These are scattered throughout the full copy of the old Rebolforum posts, which are available in full, in the General Discussion thread on this forum - the most important pieces are copied here.
These notes trace a bit about how the technique developed, as well as some redundant conversation with other developers, but all the relevant notes from old discussions are copied in full, so that details about the methodology and benefits are available in this single post:
Nick — 14-Sep-2025/23:47:31-7:00
I'm absolutely still favoring ChatGPT as my core LLM workhorse. It's just the best at working with files, and making long iterative workflows progress ergonomically (for lack of a better word). My favorite methodology is to upload a complete code base for a project, in a single zip file.
I always ask for complete updated code in a downloadable zip file, with an incremented revision number in each new file name (v26.zip for example). I SCP that file to my server, unzip it and overwrite all, then run the app (python3 app.py). On the server this all happens in a folder with a Python environment active - all libraries in requirements.txt (which stays in the zip file). I also keep all current environment variables in a .env file in the zip package.
GPT edits the code directly in each successive zip file, and provides a downloadable zip with all the updated code needed for each revision. This makes it super simple to switch between revisions, revert, jump around, etc. - just unzip any revision numbered zip file and run the app. This workflow is really fast and productive.
At the end of every conversation, I save the entire conversation text, together with all the zip file versions, into a single big zip file, which I backup. This is a really clean way to archive every single step of work I've done on any project - and even to automatically document my work hours and the tasks I've completed in any session (to add to invoices) - I just use GPT to summarize all the work which was completed in the conversation :)
Whenever I start a new session, I simply upload the most recent zip file revision and begin prompting to make revisions from there. If I ever need to merge development paths, I just upload revisions which contain working code for features that I want to add to the main trunk revision. I tell GPT that the master branch features should not be removed or changed, and that the revision branch simply contains some example working code which needs to be merged in.
This whole workflow keeps me ridiculously productive over complex projects which can last weeks-months, without ever having to keep even a full day's work in context. Whenever a conversation context gets to long, I just start another session with a stable master branch version, and work from there. I can rely on GPT to understand exactly how it's own code works, so I very rarely need to provide any context - just start making revisions. This is a production quality workflow that actually works without end and produces consistently effective results.
I have brought Gemini Pro 2.5 into the mix many times (and quite a few other frontier models, just to evaluate their effectiveness and to get experience with each of their personalities, strengths & weaknesses), but that's becoming less and less of a necessity. Those most important part of the development process is to provide detailed, clear, organized instructions for bite sized pieces of code and functionalities which need to be built in an application. If you're working on manageably sized changes in each iteration, you will be successful. Basically, I still do all the detailed work of organizing application structure and properly engineering the details of how an application's code base is built - I just don't need to write the code manually. If you break the whole process down to the point where you'd actually write code, then you can have the LLM write that particular code. That's an entirely different thing than asking an LLM to create an app that does ___ ...
Nick — 23-Oct-2025/10:03:27-7:00
I've shown several people the workflow that I quickly demonstrate in this video:
https://youtu.be/9k0mwKhfSTY
It's become clear to me that the power of that workflow is not immediately obvious. That workflow with GPT, particularly the use of zip files to contain all the code in a project, and the process of uploading previous conversations saved as .mhtml files, has scaled fantastically well.
I've been working on several medium sized projects of 30,000+ lines, and that workflow has made managing and continuing in any direction with projects, from any point, utterly painless.
One key is that this workflow gives GPT the ability to see every piece of connected code in any entire project, and gets to understand everything you intend to accomplish - without consuming all the context window size - and without you having to repeat what you think is important. You simply ask GPT to read the entire previous conversation (in the attached .mhtml file). It starts with that understanding, and also sees all the steps you've previously worked through, all the console output you've previously pasted, etc. -so it has access to all the work you've accomplished, the results of every step, everything you've described about your intended goals, etc.
Another key is that by using GPT to surgically replace code in the project zip file, without displaying multiple revisions of the code in the chat history, you avoid output which would otherwise completely consume the context window. The zip file contains everything in the entire project (including every associated piece, such as environment variables, if needed), and GPT can explore, access, and write code to adjust any piece.
It's so critically important that GPT can see the entire project and all previous work which has taken place, without nuking context window length. Attaching the full project zip file, and any previous chat conversation related to a current goal, makes it painless to provide a complete understanding of the full scope and working context, without completely filling up the current working context memory, and without taking any time on your part.
I've noticed very clearly that GPT begins to produce less effective output after long conversations. In the early days, I relied on keeping all the required context within a single conversation, but now I do the opposite. I no longer worry about ending a conversation as soon as I see GPT's performance begin to degrade. Instead, I simply start a new conversation, with the .mhtml of the previous conversation and the current zip file version attached. It *always performs better in the new conversation. Always.
Using SCP to upload the complete current project version, and overwriting the entire project on the server, makes for super simple project management. If I need to collaborate with another developer, I can still use Git. I accept any changes, then the entire current working master version on the server simply gets downloaded as a zip file, and I upload that to GPT. I can revert to any version at any time by simply unzipping a previous version number - and those version numbers are all fully documented in my saved chat conversations. It just takes seconds. I switch between these branches constantly as I build and test. It's utterly painless and fast.
Like most things, the devil is in the details, and the details of this workflow are critically important to how I'm able to work so successfully and easily on larger projects with GPT.
Nick — 23-Oct-2025/10:33:01-7:00
It's also important to note that I still never spend more than $20 per month, total, for all of the generative AI tools I use ($20 for ChatGPT). I very often spend many hours per day, multiple days a week, on ChatGPT, and I've never once hit a rate limit. I've also never run into any development task which I couldn't complete with the help of GPT, for many hundreds of significant tasks, within many dozen of large projects in the past 3+ years. I also use GPT to regularly help with research about engineering decisions, server configuration, communication with team members, clients, etc., which saves an absolutely massive amount of time and energy, and helps lead to better outcomes in every way.
Rolling back to previous versions of an application requires simply unpacking a zip file version on the server - it just takes a few seconds.
I've used the GPT zip file technique explained previously to complete a large number of progressively complex projects, without having to manually write any code from scratch at any point, and my largest current project, which consists of multiple integrated applications, each 10,000 lines or more, is made up of code largely written by GPT - and that code connects to many tables in Baserow which have been created almost entirely by client stakeholders (as well as additional SQLAlchemy connections to other databases, created by GPT).
It is GPT's proven ability to handle applications with code bases of tens of thousands of lines, and most important, its ability to manage what appear to be multiple separate 'helper' contexts (in its 'thoughts', which are hidden from the main user display by default, but can be shown), which is what has made GPT so much more effective than the other models, without requiring any other tools.
I haven't seen this sort of context management native to any other models. You *can manage that sort of context using agentic systems, but that requires a lot more tooling, all set up with API access, and lots of cost for token use - and to use those tools, you need give access to your system's command line. I don't like any of that idea at all, and from what I've seen, those sorts of systems are just a huge mess.
Until I see another model able to manage multiple contexts, the way GPT currently does - with the entire project code being examined, and the code within an input zip file being surgically updated, and then only the results summarized and made available in the main conversation context - will any of the other models be as effective as GPT, for the way I'm currently building software.
For most pieces of projects, I don't expect to run up against huge context walls, because I expect it's entirely possible to keep pieces of projects limited to 10,000 lines or less - but GPT has already been able to handle much more than that, without *any additional tooling, and it's just so fantastically capable of working with the Flask ecosystem and anything I can attach to it (for example, learning in-context how to use unknown 3rd party REST APIs from docs, learning to use any existing Python back-end libraries, front-end web based UI libraries, database ORMs, real-time features, etc.).
And I still only spend $20 per month to do all this, and never spend any time installing IDEs or any of the big agentic frameworks or tools which need command line access to my machine.
I still jump between working on multiple machines at different locations, throughout my week - all by simply transferring current project zip files between machines, connecting to servers via SSH, and sending files to servers via SCP (all of which only requires command line tools on any modern desktop machine, and which I can even run conveniently on my cheap Android phone).
And I only ever use the web based chat interface to interact with GPT, for all of this (which also requires no installation).
The SSH/SCP setup used to transfer zip files and manage projects on the server is super streamlined and sooooo fast to iterate with - plus I keep every version I ever create of an app, on the server, so can instantly revert to any previous version, in just a few seconds. That all works better for me than the Git fetch and merge scripting automations I had gotten used to using with Anvil. And of course, I can hook up Git if I want other developers to be able to work on branches - everything that I send to an LLM just gets downloaded in a zip file.
It takes me just a few minutes to set up new environments on new VPS servers, or on in-house physical servers managed by an in-house IT team, or on my own machines, etc., on any common OS - and everything is so stinking light weight. Python is already installed everywhere, and I could literally serve projects on a $40 Android phone if I wanted.
Larger mainstream no-code solutions do need a server machine to run well, but really with only the most minimal hardware specifications you'd ever expect to see, in the least expensive VPS solutions which cost just a couple dollars a month to operate.
I've noticed the biggest improvements in my recent development processes, whenever I have to make sweeping changes to existing application functionality, when refactoring and integrating new requirement specifications with old code, when altering/extending existing workflows, UI interfaces, logic, database schema, etc.
Building new features from the ground up has always been the easiest phase of developing software. It's rolling with the changes that clients request, which has always been the hardest part of long term projects - especially when clients ask to tear down and refactor existing code that has been forgotten about for months/years.
This is one of the areas where AI-based development really shines, especially when using the full project zip file workflow that has matured recently with GPT.
All the LLMs are absolute whizzes at refactoring and integrating code with new features. In fact, with GPT capability to employ the zip file workflow, I've successfully integrated changes across multiple apps connected by APIs, all in single sessions - and by that I mean I've uploaded complete applications in zip files, and made changes to the functionality of all the applications, in a single conversation.
As a comparison, I started using GPT to refactor functions a few years ago, but that was a complex and careful process, fraught with diligent attention required, which typically involved techniques such as providing function stubs, and for example, explaining parameters which would be sent from a front-end call to a back-end function, and refactoring existing functions, over a series of careful passes, with code review, debugging, and testing in between to, ensure there were no regressions, errors, etc.
Now I work at a much higher level - typically a level where I feed conceptual requirements, as they come from my clients, to the LLM - often using my client's descriptive words, along with my explanations of the context involved - and the LLM makes all the changes required to UI, logic, database schema, etc., all at once, from that described conceptual idea.
Sometimes there's a bit of debugging required, but that's been reduced by orders of magnitude, over even a year ago. Mostly, I review detailed code explanations provided in the chat conversation, perform updates (upload/unpack zip files and re-run apps), and test functionality.
A big part of the real work is now centered around clearly explaining required functionality, which I try to clarify in writing, during initial conversations about requirement specifications with my clients. I get those requirements written in a format that the LLM will understand, with all the context the LLM will require - which is typically what I also need to understand, about how the solution might be implemented - but that implementation is *not written in stone. I'll give the AI the ability to conceive its own technical solution.
So, with that in mind, the other work I do most is building multiple branches, and then re-integrating features from successfully implemented branches, into my main project branch.
I'll often have several simultaneous branches of new features being developed, and I'll need to take fully working features from one branch, and integrate those features with another branch that has other fully working features implemented, without allowing for regressions in either of the working branches, or among any other existing functionalities withing the app.
The new zip file workflow has made this so much easier to handle. It just requires lots of clear explanation about what needs to be accomplished, at the structural level, but rarely at the line-by-line code level.
I'll explain in detail to the LLM that in version vXXX.zip we added _ functionality, and need to integrate that _ functionality into vYYY.zip of the app, without changing anything else about the functionality of version vYYY.zip. I've been absolutely astounded at how well GPT has been able to make these sorts of complex conceptual changes, even in significantly sized code bases. It can deal with extremely high level conceptual tasks, especially when the code needed to achieve a task has been completed - it does a better job of integrating existing working code, than having to build all new untested code, all at once.
The productivity gains of being able to work at that very high conceptual level, over working strictly at the level of adjusting functions, parameters, variables, etc., has dramatically altered how difficult it is to complete sweeping changes and code refactoring alterations in applications. It takes time to do all this well, but there are still manifold productivity improvements over what was possible even just a few months ago.
What used to require iterations overs weeks of discussions about refactoring functionality, now can often be accomplished several times, with several significant pieces of an application, in a single night.
What I'm finding is that I'm just taking on much deeper change requests, and relentlessly working to fully satisfy long term expectations and improvements to projects which may never have even been on the horizon in projects from just a few years ago.
This sort of productivity improvement couldn't have been achieved if I'd relied on doing all the work myself in a framework like Anvil, and just building pieces of code with the LLM. I need to give the LLM access to the entire project and all supporting files/context (server configuration, etc.), as well as freedom to choose tools which it knows best - while I work at defining requirements better, rather than defining narrowly conceived technical solutions better.
One of the most important changes I'm able to better explore and handle successfully now, is building multiple branches of solutions, comparing how they turn out, and picking which works best to form a long term foundation for current functionality and for future extensibility.
Being able to fearlessly build multiple branches in a single sitting, as opposed to the days/weeks/months it would have taken in the past, has changed absolutely everything.
Using my current full-project zip file workflow, I can build and abandon versions as needed, and refactor/combine chosen branches, without anything near the comparable work, time, and fatigue I would have experienced even a few months ago.
The most recent versions of GPT since 5.0 have made this sort of workflow much more easily achievable, and I think all the other frontier LLMs (Claude, Gemini, Grok) are right in line in terms of coding capability (including all the best most recent open source LLMs: Kimi, Deepseek, GLM, and Minimax).
I just currently rely on the zip file project and context management which GPT has enabled, and none of the other LLMs do natively. That's been the biggest improvement I've experienced which has made workflows explode in productivity.
I'm sure I can write code just a well with the other models, especially in conjunction with other tools that help work on full source code repositories - but GPT's ability to manage context size, even with large code bases, requiring no other tools beyond zip files - surgically refactoring the code in existing zip files, and providing entire updated project as another single zip file, has been an absolute game changer.
I think most developers currently using LLMs, agentic tools and IDE plugins to write code, have never even begun to explore this approach, and I haven't yet seen any other tooling which can effectively surpass this methodology in as many ways that affect the whole life cycle of how a project grows, changes, and improves. It's such a simple workflow, and the potential of this process to work on projects involving absolutely massive context, is something I haven't even even begun to reach the limits of yet.
Nick — 2025-12-25 14:16:56
The short version is that I now use GPT to build most production code, using its native tools to surgically edit code within zip files. This helps dramatically to manage context length and workflow complexity, without needing any other agentic tools, and it keeps costs to $20 per month for even the most complex projects.
I use Flask and all the typical Flask ecosystem libraries to handle ORM, auth, real-time interactions, etc. This keeps project sizes really small/lightweight (and able to be deployed virtually anywhere), and enables GPT to use language tools which it's trained on deeply (so it can typically build solutions easily, with virtually no manual debugging).
When discussions with GPT grow too long, I save the entire GPT conversation as an .mhtml file, to avoid ever needing to re-explain context from previous conversations.
GPT's native ability to work directly with zip files and .mhtml files has eliminated so much work, and has streamlined my development workflow to be much simpler, and manageable for even very large projects.
Managing context by having GPT work with the entire codebase of a project, entirely within zip files, has been the game changer which makes it possible to manage much larger projects with an LLM. In my experience, those few simple features built into GPT have replaced all the heavy agentic tools, IDEs, etc. used in more complex LLM workflows which I see everyone struggling to make work as effectively.
Whatever tools you use, try the zip file development process I've described above, with GPT. You'll be astonished at how well you can build and manage large projects using it alone, without any of the agentic tooling mess that everyone is pushing these days.
Nick — 2026-01-01 19:31:47
I've written about this, but to be clear about how my workflow goes, AI code generation can now handle database development entirely without hand-holding, so when building any sort of small application, I'll let GPT build the database schema and queries as needed to satisfy requirements. When using Flask, SQLAlchemy will be the default ORM. All the schema definitions are included in the code, so zip files contain all the info needed by GPT (or any other LLM), to work with the database. You don't need anything else when building applications of any scale, to manage internal database schema and queries.
All that capability together provides a massively capable tool set to handle any situation. I'm currently at version 291 of one single app that's connected to the big Baserow project (~30,000 lines), and there are several other apps in that project suite which connect and communicate with one another via REST API, and by interactions with the Baserow database, all of which have evolved through at least a few dozen version iterations, and all more than 10,000 lines of code each.
GPT has been able to connect each app, entirely without any hand-written code, using the zip file project management system I've described above. That suite of applications is mature and complex, not just in terms of the number of features, but also the complexity of each feature - these apps go far beyond CRUD functionality - they include a deeply capable real-time messaging system wired into other apps, an entirely in-house Notinatim geocoding and Open Street maps mapping system (not the simple Google Maps integrations you see everywhere), an intricate SMS notification system, as well as real-time in-app notifications per user and group, and lots of other complex user/group oriented features.
Nick — 2026-01-01 21:14:32
I can't express how important the zip file workflow is to my productivity - it's the reason I'm using GPT almost exclusively these days. Otherwise, I'd have to use a lot of other agentic tools.
Most applications get built incrementally. So in a typical session, I typically start by uploading the current zip file of an existing project, and make incremental changes to it, to satisfy very specific requirements/change requests. If context beyond the existing structure of the application is needed, then .mhtml files of previous conversations can save a massive amount of time explaining any previously discussed information, but I typically only need that when the requirements related to that information haven't been completed - and that's rarely a situation I find myself in any more.
You've seen GPT's ability to surgically update entire projects contained in a zip file. Other models don't do that yet - instead, you typically need to install something like Claude Code and let it run on your local PC, giving it access to system resources on your command line, and using your RAM, CPU, etc. to get work done. Most important, and what most people seem to miss, it that GPT has developed some absolutely fantastic internal methodologies for managing context size. You can get 1 million tokens of context in a conversation with Gemini, but upload a single large file, and the entire conversation context is spent. I've uploaded 16Mb documentation files to GPT, along with multiple other files, in a single conversation - GPT goes off in *another context, reads the files, summarizes to itself what it needs, without using up the context of your conversation. It does something similar with every code update it makes to a project contained in a project zip file. So in some sessions, I'm dealing with tens of millions of tokens, without ever making GPT sweat. And when the conversation context does start getting polluted, I just start another conversation with an uploaded zip and/or mhtml file, and it starts fresh, managing contexts for those files, without immediately filling up the conversation context. I haven't seen other models' chat interfaces do that yet. The agentic frameworks do that, but at the expense of needing to work on your machine. I can use ChatGPT on my phone, or on any device, without having to install or give permissions to some mess of agentic tooling.
I saw this article, which was well written, and I'm sure based on solid experience, but which made me realize that I get all the same described benefits using the plain, simple Vanilla Flask/Python ecosystem, and agents built into GPT to generate code and fully build massive projects, without any other tooling whatsoever beyond cheap VPSs needed to deploy projects:
https://www.kdnuggets.com/tech-stack-for-vibe-coding-modern-applications
I've used Claude Code and a pile of other agentic systems, and nothing comes close to the simplicity and effectiveness (not to mention the low cost, flexibility, and portability) of the system I've described with GPT and zip files. That simple tool set has been *staggeringly effective across an absolutely massive set of tough projects, with hundreds of deep revisions, over many months of development on each project.
I still only spend $20 per month for GPT, to get all my production worked completed - that has produced six figure revenue, working as a sole developer, with no other overhead, employees, or contractors, on a wide variety of projects which I never would have been able to take on otherwise.
After ChatGPT, Minimax now provides the first hosted chat system which has all the built-in agentic capabilities required to work with full project zip files, the way I've been working with ChatGPT during the past 1/2 year.
I just used Minimax to update a project, using the same simple zip file workflow I've been using with GPT (upload the project zip file for a complete full-stack Flask application, prompt the model to complete required functionality updates, and download the updated zip file). It did a great job. Minimax appears to work just as well as GPT with Flask, Python, HTML, JS, etc. - and now it can be used to update complete projects automatically.
None of the other hosted chat systems have enabled this particular blend of built-in agentic capabilities yet. Most other chat systems don't even accept zip files as file attachments yet, so they're desperately behind, in terms of providing the workflow I've become accustomed to using recently.
It may seem trivial, if you haven't worked this way, but this set of capabilities is what saves me from having to install a pile of agentic tools on any particular local development machine (no Claude Code, no IDE, etc.), and from having to give those tools access to files on my local system. I can work from any device, even my phone, in any location, entirely within a remotely hosted chat environment. This workflow manages all the agentic tooling needed to open the code files in the zip package, as well as the spawning of agentic swarms that handle opening multiple context workflows to reason and research about required solutions - and then provides a file download of the final updated project - all without anything installed on my local computer (which is the current messy state of the art with most other AI based development systems such as those based on Claude Code).
None of the other commercial or open-source frontier chat systems beside GPT, have previously enabled this workflow. I'm absolutely tickled to have an alternative :)
These are some older discussions from when I was just getting started with the zip file technique. I no longer use the zip file scripts to work with other LLMS:
I typically start workflow conversations in GPT5, because its file handling is far superior to the other chat interfaces. You can upload an entire project in a single zip file, without polluting the entire context of a ChatGPT conversation. GPT will even accept and read pieces like SQLite databases and other binary data files - just pile them all into a single uploaded zip file.
After the context of a single chat has gotten too long for GPT, I'll often copy an entire conversation and upload it as a single text file, into a fresh new conversation, and response times will speed up dramatically. This is a fundamentally useful workflow hack, which I never hear people discuss. Without it, GPT would regularly grind to a halt and be useless for anything but toy projects. With it, GPT is a powerhouse (has been since version 4).
If/when GPT struggles with any task, I'll paste the *entire copied conversation from GPT5 (CTRL+a, CTRL+c on the entire UI chat page in ChatGPT) directly into a fresh new Gemini chat interface in Google AI Studio, and go from there with your prompt workflow.
When copying any full conversation from ChatGPT, OpenWebUI, or any other chat interface, I make sure to always show all the thought processes, and especially all the 'analysis' processes throughout the conversation, so that Gemini and other LLMs can see all the generated code, even for zip files that GPT provides for download (the 'analyzing' sections typically contain all the code used to generate downloadable zip packages which contain multiple code files - just pop that section open so you can copy/paste it). Since Gemini and other LLMs only handle a small subset of file types, copy/pasting all those sections from any GPT output is the only way to neatly provide all the required info to other systems. Gemini and a few Qwen models both have fully usable contexts of 1 million tokens (hundreds of pages of chat text), so this is typically a successful generalized workflow (i.e., have your initial project conversation with GPT - upload all existing project files to it - then copy the *entire conversation with thoughts and analysis sections into AI studio, Qwen chat, OpenWebUI on your own server, LM Studio or Jan on your local machine, etc.)
Beware aware that it's much tougher to copy/paste entire long conversations from Google AI Studio. I'll typically simply upload the resulting output files from a conversation with Gemini, back into another GPT, Qwen, etc. chat interface, with some context about project goals, and iterate the same way again, starting fresh with the current state of an existing generated codebase - exactly as you would with any code you've written.
I prefer to run code manually and feed output exceptions manually back into a chat context, and discuss/steer the logic of debug cycles, instead of using automated agents. Current agents move a lot faster than humans, but they tend to spin off into long processes which can massively broaden the scope of a workflow, when they don't fully understand that a simpler solution is available - but that's just my preference. I'd prefer to spend a bit more time explaining the context of an error to the LLM, when it's clear why any exception occurred, than let it pollute and derail the context with thousands of unnecessary debug/test cycle tokens.
Finally, using only the best known languages and libraries makes the biggest difference. The quality of LLM output depends entirely on how much training data was provided in pre-training. You can provide in-context learning materials (LLM's are great at learning new REST APIs from documentation, for example), and even perform fine-tuning, but the benefit of billions of tokens of example code and documentation in a pre-training corpus will always out-perform any later training materials. Flask, HTML, CSS, JS, Bootstrap, and jQuery code seem to be extremely well represented in most training data (the total volume and quality of code examples, tutorials, books, etc. ever written and shared on the Internet during the past few decades), so those particular tools are hard to beat when it comes to what LLMs understand deeply, which code patterns in an ecosystem actually work, and why, how various alternate solutions can be substituted and combined, etc.
Here's one little tool that's proved useful for my larger AI development workflows (of course the code was generated by GPT in a few seconds):
https://com-pute.com/nick/combine_folder.py
It combines all the files in a given folder, as well as all that folder's subfolders, into a single text file, with the path and filename of each file inserted as a header, before each file's content. This is helpful because what often happens with such rapid development sessions, is that I have the opportunity to explore multiple development paths. Perhaps I'll try using different UI libraries, or implementing different logical solutions, or I'll experiment with how multiple interactivity patterns effect UX - basically I'll build multiple complete versions of applications to see which paths are more usable, scalable, maintainable, etc. Perhaps I'll prefer the UI in one version, and the database structure, logical workflow, etc., in another (I just did that yesterday, choosing whether to keep data for a particular workflow in Baserow and using API calls, or in a local SQLite database, using SQLAlchemy).
That whole exploratory effort can lead to huge messes of code, with many hundreds of files that are hard to manage - and only GPT currently enables zip file uploads. So I'll pack all the files in the project folder for each version of an application, into a single text file (LLMs work most efficiently with pure text), using the script above, upload all those single file text versions of the application code to any of the LLM's chat interface, and prompt to combine and integrate the preferred features of each. I can even do this with chat interfaces that don't enable file uploads - just copy/paste text.
This eliminates problems with, for example, Gemini not accepting zip files, or Qwen and others only accepting 5-10 attached files. In Flask, all my UI files are in the /template and /static folders, and of course all the frontier models understand those conventions.
That iterative revision process can start anew in fresh chat sessions, ad infinitum, where I and the LLM always have a small very small set of clean files or paste-able text to deal with. This keeps context size manageable, and I can combine/clean all the useful work, from all the versions of exploratory application solutions, which would otherwise be too complicated to keep entirely organized and understood in my head.
That stupid simple tool dramatically broadens the scope of project size and productive workflows which yield useful solutions. Little workflow improvements like that come from many hundreds of hours working at improving LLM based software development patterns, and for me have been far more successful than using IDEs, agentic workflow tools, etc. Plain old chat with plain old text continues to work best for me. The chat based workflow is more malleable and versatile, and enables the involvement of more numerous intelligent frontier models, all of which bring different capabilities, perspectives, and strengths to solving problems and creating solutions.
I extended the utility script above to convert entire zip files to a single text file, and back again to a zip file. The entire folder structure, with all file names, is kept intact during both conversion processes (from zip2text and text2zip). You can optionally choose to include include binary files as base64.
This enables quick upload of all the source code and supporting files in a project, as a single text file, which any LLM can read and alter. Providing the complete source code and every other files used in a project, is critical for any LLM development work to go well, and most LLM interfaces can't work directly with zip files, so this makes all the difference in the world.
When you and the LLM are done making changes to project code, download the updated text file, convert it back to a zip package, then upload that zip file directly to your application server.
I find this process to be far and away more effective than all the IDE and agentic tools which are being flooded into the market. That methodology doesn't require any complex tooling, or even API access to any LLM.
Instructions are included in the script:
https://com-pute.com/nick/zip_text_roundtrip.py
I haven't done any production work using that little zip2text utility yet, but I have tried it with a small application example using GPT-OSS:20b, on my laptop with the little RTX 3080ti GPU, and that small open-source model understood the project & was able to produce a working code update, which was successfully converted back into a zip file, and uploaded to run successfully on a VPS server :)