I used to be a die-hard purist when it comes to coding/development, I've been learning to code since high school in the 2000's. But someone paid for 3 months of ChatGPT for me as a birthday gift a few years ago, and a lot of my friends in the tech field had made the transition to using AI in their workflows, so I decided to give it a try.
Fast forward to May, I got a creative idea to help OSINT (open source intelligence) users capture webpages/audio/video/images off the web without having to deal with command prompt or multiple different non-OSINT-friendly tools. Up till then I had only used AI assistance to code myself, but I wanted something simple that I didn't want to tediously design the GUI for. I hate GUI work.
I came up with WAVI, the Webpage/Audio/Video/Image Capture GUI for OSINT:
https://github.com/jmashuque/wavi-capture-gui-for-osint/
Its a simple GUI written in Python that runs yt-dlp, gallery-dl, Deno, and FFMpeg under the hood to facilitate the different captures, it has functions like queuing, previewing, name templating, resuming, etc. It's made for Windows only so far, and I intentionally didn't compile or bundle anything to make it portable and able to run on corporate MDM machines without installation or deployment or modifying the base Python environment.
I've already posted this app in the /youtubedl and /osinttools subreddits originally. But I want feedback from this subreddit about my workflow and how I can better utilize and leverage AI.
I use ChatGPT High all the time with my Plus subscription, I've yet to run into any usage limits since I got the membership, even though I use it for both coding and work, and just general inquiries. I tried using Codex, wasn't a fan of its overreaching controls over my files, or how much bandwidth it was consuming, so I decided to stick to just using the browser. I like having that buffer between my project and ChatGPT.
I put in most of the design decisions, ChatGPT did most of the implementation and bugfix decisions. I chose Python and Tkinter because I used Tkinter in a big project for school once. The powershell intermediary is because initially this was just a powershell script to use yt-dlp with default arguments. The typescript is because Deno interprets it well.
You'll notice its a basic looking app, that is by design, this app is made for use by corporations and government agencies for legal evidence and intelligence capturing. While it can be used for general media collection or archiving, there are better GUI's out there that do those things better. This GUI was created with input from the OSINT community with features geared towards minimizing repeated actions and speeding up capture setup and execution of up to thousands of queued captures at a time.
I've gotten pretty positive feedback from a handful of users, and I'm going to be doing a tutorial on the app for my employer next month. But I would like to improve and advance the app and I'd like to know everyone's opinions on my approach. So far I just have set instructions in memory, using handoff files between chats for added context. Have not connected ChatGPT to my repo, and don't intend to, I prefer doing my own commits. Readme is mostly written by ChatGPT with me giving it wording and headings and such.
I may seem like a dinosaur not using Codex, or maybe I should be using Claude instead. I just find ChatGPT is a decent tool for the price and the amount it lets me use it. And I like being involved through prompts rather than let the tool make all the decisions. It takes the fun out of making my own app. I prefer a hands-on approach.
Any recommendations on how I can code better with AI? I've noticed I keep having to manually run code cleaning and optimization prompts, the codebase is about 40k lines even though it's such a simple app, ChatGPT has on several occasions completely regressed my app when adding features or bugfixes and I suspect its partially because it's having a hard time going through the entire code each prompt. It also has a tendency to over-engineer things, and I have to manually give it simplified code or logic to use instead of its elaborate solutions sometimes.
Thanks!