A founder-built application created with AI coding tools ran into common AI-assisted development challenges, including missing source code and performance issues. Keyhole Software reconstructed the system, optimized Python processing, and enabled a successful launch.
A client without a formal software background spent close to a year building a stock alerting app, mostly using AI-assisted coding tools and a lot of trial and error. The app had a working interface and some backend pieces in place, but it wasnโt reliable enough to actually use.
When a Keyhole consultant stepped in, things turned out to be more complicated than they first appeared. Large portions of the source code were missing from the repository. The application had been running off cached files on the server, which were eventually deleted before everything was properly saved and version-controlled.
That left the project in a tough spot. It couldnโt be redeployed, and making meaningful improvements wasnโt really possible. Performance issues made things worse; key alert-processing jobs were timing out, so even when the system did run, it wasnโt usable.
The client needed help quickly to stabilize the application and get it ready to launch.
Reconstructing a Missing Foundation
With no reliable source of truth in the codebase, the first step was figuring out what the application was actually supposed to do. That meant working backward from incomplete pieces and leftover artifacts to understand how the alert system was intended to function.
The alerting engine was rebuilt in Python so it could run consistently outside of a cached environment, with proper structure around dependency and package management.
Once that foundation was in place, the application could finally be built, deployed, and iterated on like a normal software project, something that hadnโt been possible before.
Improving Performance Under Real Constraints
After restoring core functionality, the focus shifted to performance. The platform processes financial market data across multiple time intervals and exchanges, so alert conditions have to be evaluated frequently against fairly large datasets.
The existing implementation couldnโt keep up. Alert-processing jobs were regularly timing out, which made the system unreliable. This is a common challenge in AI-generated applications, where initial functionality exists but performance and scalability havenโt been addressed. To fix this, the data processing layer was reworked to handle the volume and frequency of incoming data.
Asynchronous I/O was introduced to handle high-volume requests to the Financial Modeling Prep (FMP) API, while PostgreSQL queries were optimized through batching to reduce database overhead. Parallel execution was used to evaluate alert conditions more efficiently, and Redis-based caching helped eliminate redundant processing across repeated runs. Together, these changes removed the biggest bottlenecks and made the system fast enough to be usable.
All of this was done within the constraints of a single 4GB server hosted on Vultr, which required careful trade-offs to balance performance gains with limited resources.
Technologies Used
The platform was rebuilt in Python, with PostgreSQL handling data storage and Redis used for caching. Docker was used to containerize the application, and Vultr hosted the system within a constrained environment. GitHub Actions handled CI/CD for automated builds and deployments. AI-assisted tools, including Claude and Cursor, were also used during development.
Results & Impact
Core functionality was restored within the first two weeks, allowing the system to run reliably again. Over the following weeks, performance improvements brought alert-processing times down from consistent timeouts to anywhere from a few seconds to under a minute.
These changes allowed the founder to successfully launch the application and start using it as intended. Just as importantly, the platform is now something they can actually build on, rather than having to constantly rework or patch around issues.
When AI-Assisted Evolution Breaks Down
AI-assisted development can accelerate early progress, but without structure around architecture, testing, and version control, systems often become difficult to maintain or scale. This project is a clear example of how quickly momentum can stall without that foundation in place.
Common Challenges in AI-Assisted Development
This project reflects common AI-assisted development challenges. These tools can speed up early progress, but without much structure behind them, things tend to break down as the system grows.
Stepping in at that point, Keyhole Software helped turn a fragile implementation into something stable and usable, so the client could actually move forward instead of starting over.



