Introducing CashFlow AI - Expense Tracker

Hamza WaleedHamza Waleed
6 min read

A casual discussion with colleagues about an upcoming product hackathon sparked an idea for an app that everyone liked. However, due to other commitments and time constraints, we didn't sign up for the hackathon.

I couldn’t let go of the idea, though, and decided it was simple enough to build in a couple of weeks😮‍💨.

To bring it to life, I onboarded a former colleague to design Figma mockups, and he did a fantastic job. While he was working on the designs, I had already started developing the backend and integrating it into a basic React Native Expo app.

Let me walk you through the technical and functional details of what we built.

The Idea Behind CashFlowAI

CashFlowAI simplifies expense tracking by making it conversational. The app allows users to log expenses in natural language. For example, you can type:

  • "I spent $10 on groceries."

  • "Transferred $100 to my brother from ABC account."

  • "Received $5000 salary in XYZ account and paid $500 for a family dinner at a hotel…."

The app uses AI to parse these inputs and create accurate financial records. It’s available on Google Play for anyone to try. Your feedback and feature suggestions are welcome, and if you enjoy using it, a review on the Play Store would mean a lot!

How CashFlowAI Works

This AI-powered expense manager is designed to be user-friendly and intuitive. Here are some of its key features:

  1. Natural Language Input Logging expenses is as easy as typing them out in plain English. You can even enter multiple transactions at once, and the app's AI will process them into structured records.

  2. Multiple Accounts Manage various accounts such as bank accounts, credit cards, and cash. The app updates balances in real time based on your transactions. Use specific account names in your input, and the AI will assign the expense to the correct account automatically.

  3. Advanced Search Quickly search transactions using descriptions, amounts, accounts, categories, or dates, making it easy to find the details you need.

  4. Flexible Record Customization While the AI-generated records are usually spot-on, you can edit them to ensure accuracy. Customization options ensure every record meets your requirements.

  5. Intelligent Category Creation The AI auto-categorizes your expenses for streamlined management, but you can also create custom categories with personalized icons.

  6. Default Currency Selection Set your preferred currency for consistent transaction management.

Lessons from the Launch

To promote CashFlowAI, I ran Google Ads campaigns for a couple of months.

This effort took the app from 0 to 1,000 installs. However, my focus is on Daily Active Users (DAUs), and the results weren’t as impressive.

During my initial campaign, I selected the “More Downloads” goal instead of “More Engagement.” This led to an increase in downloads, but many users didn’t even open the app. It’s almost as if Google knew these users would download but not engage 🤦🏻‍♂️. Lesson learned!

I then adjusted the campaign settings to prioritize engagement.

Front-End

I used React Native (with the new architecture) to build the mobile app but released it only on the Android Play Store for now. The idea was to validate the concept first before investing in an iOS launch since the App Store has a comparatively limited audience for this. Oh, and I chose Expo instead of the React Native CLI.

I wasn’t a huge fan of Expo five years ago when I worked at a startup that used it. Back then, I remember a hilarious moment when our senior dev pushed some changes using an Expo command. None of us really understood what was happening behind the scenes, but the changes went live in production instantly—like magic! It felt like pressing cmd+s to save a file but for a production release.

Fast forward to today, Expo has improved massively. The EAS (Expo Application Services) is my favorite. Imagine just running the eas build command, and your Android and iOS build files are downloaded and installed directly onto your simulator.

I’m also using AdMob and Firebase for analytics, even tracking and social auth.

Screenshot from Expo official website

Then, with eas submit, the app gets released on stores:

eas submit  
Submitting to the Play Store…  
Submitting to the App Store…  
Submissions complete!

(Of course, you’ll need to set up your keys and manually go through the submission process the first time. You’ll provide assets like store icons, titles, descriptions, etc.) After that, it’s just a matter of picking your recent build with eas build.

Another cool Expo feature is the eas update command, which allows Over-The-Air (OTA) updates. These updates load on the user’s next app launch, applying changes right from the splash screen. What I love is the flexibility—like GitHub branches, you can push changes to specific runtime versions. For example, pushing updates to internal builds won’t impact production users.

For the designs, my ex-colleague Shahzaib created them in Figma—his design skills are amazing. Another ex-colleague, and I worked together on the app development (yes it was a paid task).

Back-End

I built the backend in Python Django with the help of the Cursor editor, Claude Sonnet, and OpenAI APIs in just a couple of weeks 🫣. For the app's website, cashflow.hamzawaleed.com I used a premium Next.js template instead of building one from scratch—modified it to meet the basic requirements. The mockups came from Shahzaib, and I used GPT for the content. The idea was to focus on the app itself rather than spending too much time on secondary tasks like the website - it’s not a SaaS where most of the sales will come through landing page.

I also created a simple dashboard in Django in about an hour or two, again thanks to the Cursor editor.

I hosted the app on DigitalOcean App Platform, a fully managed platform that simplifies app deployment. It handles infrastructure scaling, monitoring, and CI/CD with minimal effort—perfect for small projects. Alongside, I used a Postgres database instance within DigitalOcean, which seamlessly integrates with the app. The setup ensures reliable performance, secure connections, and easy management from a unified dashboard.

AI Stuff

The app's main USP is AI-powered transaction creation. I implemented a simple Retrieval-Augmented Generation (RAG) system using Google's Gemini API, which worked perfectly. Initially, I used OpenAI APIs, but they were too slow for this task. Since the requirement was simple, Gemini AI fit the bill.

I also experimented with building a chatbot on top of users' transaction data. It could answer queries like “How much did I spend on food this year?” or “How can I save more this month?” However, this feature wasn’t free to run, and adding payment walls to the app didn’t align with my initial plan. This project started as a fun side thing, and I’ve already spent more than I planned. I might revisit this feature in the future if the user base grows—it’s definitely something exciting to build!

1
Subscribe to my newsletter

Read articles from Hamza Waleed directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Hamza Waleed
Hamza Waleed

A Sr. Software Engineer specialising in React, React Native and Next.js development and is never afraid of learning new tools and technologies.