Functional Requirements Specification (FRS) - ashishbhardwaj138/bfa_finance_tracker_with_ai_budget_forecasting GitHub Wiki

1. Introduction

The Smart Personal Finance Tracker is a privacy-first application that automatically fetches transaction emails from a user's inbox, parses them intelligently using NLP and pattern matching, stores structured transaction data, categorizes it, visualizes spending patterns, and forecasts future expenses. This document captures all functional capabilities in detail.


2. Scope

The scope of this document is to define all user-visible features and backend capabilities that collectively enable:

  • Secure email integration (Gmail API, IMAP)

  • Transaction extraction from unstructured emails

  • Categorization and tagging

  • Visualization dashboards

  • Forecasting monthly expenses

  • Fully local operation


3. Actors & Roles

Actor | Description -- | -- End User | Individual using the tool on their personal machine Email Parser Engine | Automated component extracting transaction data ML Engine | Predicts future expenses and detects anomalies Admin (Dev/Power User) | Can define new email parsing templates
  • Parsing template editor (YAML)

  • Auto-refresh frequency

  • Category mappings

  • Delete token/logout |
    | Acceptance Criteria |

  • Template editor updates YAML safely

  • Settings persist between sessions


5. System Requirements

5.1 Hardware Requirements

  • RAM: 4GB minimum

  • Disk: 500MB for container + 100MB per year of transactions

5.2 Software Requirements

  • OS: Windows / Linux / macOS

  • Python 3.10+

  • Docker Engine (if containerized)

  • Optional: Gmail access


6. Interfaces

6.1 UI Interfaces

  • React frontend served from /app/frontend/

  • API endpoints (REST) exposed from Django /api/

6.2 External APIs

  • Gmail API (OAuth2, Read-only Gmail scope)

  • IMAP (fallback)


7. Assumptions and Constraints

  • Only financial emails in English are supported in v1.

  • User must give permission to access their email.

  • All data is processed locally; no cloud support is implemented.

⚠️ **GitHub.com Fallback** ⚠️