Crafting Budgeting & Actuals AI Assistant: A Meta Look at AI-Driven App Development
By Arrhen Knight | Published on
Welcome to the third post on my personal site, arrhen.me! After exploring the creation of this site with Gemini and a sci-fi game with Grok, I’m diving into another personal AI-assisted experiment: Budgeting & Actuals AI Assistant. This macOS desktop app, designed as a hypothetical tool to explore data management concepts, leverages Google’s Gemini API for intelligent processing and analysis of synthetic datasets. Let’s take a meta look at how AI has shaped this experimental development process, from project setup to testing, and the lessons learned along the way.
The Vision: AI as a Data Ally
Budgeting & Actuals AI Assistant is a personal project aimed at experimenting with data organization and analysis using AI. The goal was to create a proof-of-concept app that automates data imports, provides AI-driven insights, and offers basic trend visualization—all within a sleek macOS environment. As a solo hobbyist, I relied heavily on AI tools (Windsurf IDE with Gemini) to accelerate development while maintaining high standards, as outlined in a hypothetical Product Requirements Document (PRD).
The app’s architecture combines a Tauri frontend (HTML, Tailwind CSS, Alpine.js) with a Flask backend, using SQLAlchemy for database management and the Gemini API for AI capabilities. This setup, detailed in a Technical Specification, allowed me to create a local, data-secure app that explores user-friendly data processing with synthetic examples.
Laying the Foundation: Setup and Structure
The project kicked off with a decision to use Tauri and Flask, as logged in a Decision Log on April 5, 2025. Using a prompt like “Set up Tauri + Flask project structure per Tech Spec v1.1, Section 2,” I initialized the core structure: backend/app.py
for the Flask server and frontend/index.html
for the Tauri web view. Gemini helped generate the initial files, including SQLAlchemy models for sample data categories, and set up the database with SQLite.
A Style Guide ensured consistency, enforcing PEP 8 for Python and structured HTML with Tailwind and Alpine.js. For example, the folder structure (backend/routes/
, backend/services/
, frontend/js/
) was designed to keep the codebase modular, making it easier to manage as this experimental project grew.
Building with AI: From Imports to Insights
One of the most exciting aspects of Budgeting & Actuals is its AI-powered data import and analysis, both driven by Gemini using synthetic sample data. The Prompt Engineering Guide was invaluable here, helping me craft precise prompts to generate robust code. For the data import feature, I used a prompt like: “Implement the Python function standardize_and_store(file_stream) within backend/services/import_service.py, following the ‘Data Standardization (Import)’ workflow in Tech Spec v1.1 Section 5.” Gemini generated the function, which uses Pandas to parse CSVs and Gemini to standardize varied formats, with error handling to ensure feedback on failures.
For the AI analysis feature, I prompted: “In frontend/transactions.html, add an ‘Analyze with AI’ section below the data table, integrating with the POST /api/analyze endpoint per Tech Spec v1.1 Section 5.” The result was a seamless UI where users can filter synthetic data, ask questions like “What trends can you identify in this sample dataset?” and see the response as text, tables, or charts (using Chart.js).
Testing and Refinement: Ensuring Quality
Testing was a critical step, especially with AI-generated code. A Test Plan Outline guided this process, covering unit tests (e.g., testing the standardize_and_store
function with various synthetic CSV formats), integration tests (e.g., verifying API endpoints with SQLAlchemy), and end-to-end tests (e.g., simulating a user uploading a mock CSV and analyzing data). Manual testing ensured the UI rendered Gemini’s responses correctly, especially for charts.
The Decision Log notes several refinements, such as improving error handling by standardizing error responses and adding port management with sequential port searches. These changes, prompted by “Analyze the Budgeting & Actuals application codebase to identify and fix errors,” enhanced the app’s reliability and user experience in this experimental context.
Benefits and Challenges
Using Gemini via Windsurf IDE was a game-changer for this personal project. It accelerated development by generating boilerplate code, like the Flask Blueprints for data CRUD operations, and offered creative solutions, such as the Jinja2 template inheritance for UI consistency (noted in the Decision Log). The Prompt Engineering Guide’s emphasis on specificity—e.g., referencing Tech Spec sections—ensured the generated code aligned with my experimental goals.
However, challenges arose. Prompt engineering required precision; vague prompts led to generic code, necessitating multiple iterations. For instance, early attempts at the AI analysis feature lacked proper error handling, which I fixed with follow-up prompts. Code review was crucial—AI-generated code sometimes introduced subtle bugs, like improper data handling, which I caught during unit testing. Consistency across the codebase also demanded attention, especially with UI components, where I relied on the Style Guide to maintain standards.
Conclusion: A Smarter Way to Experiment
Developing Budgeting & Actuals AI Assistant with Gemini has been a rewarding personal experiment. AI didn’t replace me as a developer but amplified my capabilities, handling repetitive tasks and sparking innovative solutions—like the intelligent import parsing that saved hours of manual coding. The key was clear communication through well-crafted prompts, rigorous testing, and a structured approach to development, as outlined in the project’s documentation.
The app is now in the final stages of this experimental phase (Packaging & Polish), with a polished .app bundle ready for testing with synthetic data on macOS. I’ll continue sharing updates on arrhen.me as I explore new features, like advanced trend visualization, likely with Gemini by my side. Stay tuned for more insights from my AI-driven hobby projects!