A friendly, privacy-focused web app that turns your transaction data into a calm, "Money Narrative". Designed for students, young adults, and even professionals who are busy and want to understand their spending without being overwhelmed by complex dashboards.
- Simple Data Input: Upload a CSV or use sample data to get started instantly.
- Mood-Adaptive Narrative: Select your current mood (Stressed, Motivated, etc.) to get a story tailored to your emotional state.
- The Money Narrative: A narrative summary of your month:
- Month at a Glance
- Surprises and Spikes
- Wins and Bright Spots
- One-Week Action Plan
- Chat with Finn: Ask follow-up questions to a friendly AI assistant who knows your data context.
- Privacy First: All data processing happens locally. Your CSV is never saved to disk or sent to a server. Only anonymized statistics are sent to the LLM for narrative generation.
- Anaconda/Miniconda OR Python 3.11+ installed.
- A Google Gemini API Key.
-
Clone the repository
git clone <repository-url> cd <repository-directory>
-
Create and activate the environment
Choose one of the following methods:
Option 1: Using Conda
# Create environment in project root conda create --prefix ./venv python=3.11 -y # Activate the environment conda activate ./venv
Option 2: Using Python venv
# Create environment python -m venv venv # Activate the environment # On macOS/Linux: source venv/bin/activate # On Windows: # venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Configure API Key
- Copy
.env.exampleto.env:cp .env.example .env
- Open
.envand paste your Gemini API Key:GEMINI_API_KEY="AIza..."
- Copy
-
Run the App
streamlit run app.py
- Welcome: Enter your name to personalize the experience.
- Upload Data: Click "Browse files" to upload your own CSV, or click "Use Sample Data" to try the app with demo transactions.
- Manage Data: Review your transactions in the data editor. You can edit values directly and click "Update Analysis" to refresh the insights.
- Select Mood: Tell the app how you're feeling about money right now (e.g., Stressed, Motivated). This adjusts the tone of the narrative.
- Generate Narrative: Click "Generate My Money Narrative" to receive a personalized 4-act summary of your financial month.
- Explore Insights:
- Narrative: Read your personalized story.
- Charts: Click "Show/Hide Charts" to visualize expenses by category and daily spending trends.
- Chat with Finn: Use the chat interface on the right to ask follow-up questions like "How can I save more on food?" or "What was my biggest expense?".
- Reset: Use the "Reset / Clear Data" button to wipe your session data, or "Log Out" to return to the welcome screen.
If uploading your own data, your CSV must have at least these columns:
| date | description | amount | category |
|---|---|---|---|
| 2023-10-01 | Uber Ride | -24.50 | Transport |
| 2023-10-02 | Starbucks | -5.75 | Dining |
| 2023-10-30 | Salary Deposit | 3500.00 | Income |
- date: YYYY-MM-DD format preferred.
- description: Text description of the transaction.
- amount: Numeric value. Negative numbers indicate expenses (e.g., -24.50), and Positive numbers indicate income (e.g., 3500.00).
- category (Optional): Text category for the transaction (e.g., Dining, Transport). If omitted, the app may try to categorize it or group it under 'Uncategorized'.
This project strictly adheres to Human-Centered AI (HCAI) and Shneiderman’s Eight Golden Rules:
- User Control: You choose when to upload, generate, and reset. No automatic background processing.
- Transparency: The story relies on visible statistics. The app explains why it says what it says.
- Privacy: Data is processed in-memory. We respect your financial privacy.
- Consistency: Uniform design language and clear navigation.
- Error Prevention: Friendly validation messages and sample data options prevent frustration.
- Internal Locus of Control: The user drives the experience; the AI assists, it doesn't command.
- Not Financial Advice: Finn is an AI, not a certified financial planner. Outputs are for educational and reflection purposes only.
- LLM Accuracy: While we ground the AI in calculated stats, large language models can occasionally hallucinate or misinterpret context. Always verify important numbers.
- Local Processing: Since data is not saved, refreshing the page will clear your session. This is a privacy feature, not a bug.
