1
0 Comments

How I built a 100% offline finance dashboard in Python (Full Architecture Breakdown)

When I decided to build FinFortress - a local-first, privacy-focused wealth tracker - I ran into some problems.

I couldn't rely on a React frontend talking to a Postgres database on AWS, and I definitely couldn't use Plaid or an OpenAI API key to parse user bank data. Everything had to run strictly on the user's local machine without them needing to open a terminal or install complex dependencies.

Here is a quick look at the stack I ended up using to make it work:

  • The UI (Streamlit & Plotly): I used Streamlit to build the frontend. It is incredible for quickly turning Python data scripts into something that actually looks and feels like a premium SaaS dashboard. Plotly handles the dynamic Sankey cashflow diagrams and Wealth Waterfall charts.

  • The Engine (Local AI): The hardest part was transaction categorization. I built a local text classifier using scikit-learn (LinearSVC and TfidfVectorizer). The user manually categorizes ~20 baseline transactions, and the local model learns to predict all future .csv uploads instantly on their CPU.

  • The Delivery: The app is packaged as a .zip file with 1-click startup scripts (start.bat for Windows and a simple bash bypass for Mac) so non-developers can spin up the local server effortlessly.

Because trust and data sovereignty are the core selling points of the app, I decided not to hide the mechanics. I want people to know exactly how their data is being processed locally.

I just published a massive technical deep dive on my blog explaining the exact architecture, the Streamlit layout, and the logic behind the local machine learning categorization engine.

If you are curious about building offline Python apps or local ML scripts, you can read the full breakdown here: ExploreTheCosmos.org

I'd love to hear your thoughts on the stack! Has anyone else used Streamlit to build a standalone consumer product?

posted toAvatar for product FinFortress
FinFortress