LogicGoInfotechSpaces's picture
Merge branch 'main' of https://huggingface.co/spaces/LogicGoInfotechSpaces/SMART_BUDGET_RECOMMENDATION
d5ef069
|
raw
history blame
4.72 kB
---
license: mit
title: SMART_BUDGET_RECOMMENDATION
sdk: docker
emoji:
colorFrom: blue
colorTo: pink
---
# Smart Budget Recommendation API
A FastAPI-based service that provides intelligent budget recommendations based on past spending behavior. This service analyzes historical expense data and suggests personalized budgets for each category.
## Features
- **Smart Budget Recommendations**: Analyzes past spending patterns and recommends personalized budgets
- **Category-based Analysis**: Provides recommendations for each expense category
- **Confidence Scoring**: Each recommendation includes a confidence score based on data quality
- **MongoDB Integration**: Stores expenses and budgets in MongoDB
- **RESTful API**: Clean API endpoints for expense tracking and budget management
## Example Recommendation
```json
{
"category": "Groceries",
"average_expense": 3800.0,
"recommended_budget": 4000.0,
"reason": "Your average monthly grocery expense is Rs.3,800. We suggest setting your budget to Rs.4,000 for next month (includes a 5% buffer for variability).",
"confidence": 0.85
}
```
## API Endpoints
### Health Check
- `GET /health` - Check API and database connection status
### Expenses
- `POST /expenses` - Create a new expense
- `GET /expenses?user_id={user_id}` - Get expenses for a user
### Budgets
- `POST /budgets` - Create a new budget
- `GET /budgets?user_id={user_id}` - Get budgets for a user
### Recommendations
- `GET /recommendations/{user_id}?month={month}&year={year}` - Get smart budget recommendations
- `GET /category-expenses/{user_id}?months={months}` - Get average expenses by category
## Local Development
### Prerequisites
- Python 3.11+
- MongoDB connection string
### Setup
1. Install dependencies:
```bash
pip install -r requirements.txt
```
2. Set environment variables:
```bash
export MONGODB_URI="mongodb://expenseuser:Kem_6o%3F%[email protected]:27017/expense?authSource=admin"
# optional
export OPENAI_API_KEY="your_openai_key"
```
3. Run the application:
```bash
uvicorn app.main:app --reload
```
The API will be available at `http://localhost:8000`
## Docker Deployment
### Build Docker Image
```bash
docker build -t smart-budget-recommendation .
```
### Run Docker Container
```bash
docker run -p 7860:7860 -e MONGODB_URI="your_mongodb_uri" smart-budget-recommendation
```
## Hugging Face Deployment
### Prerequisites
1. Hugging Face account
2. Docker installed
3. MongoDB connection string stored as a secret in Hugging Face
### Steps
1. **Store secrets in Hugging Face**:
- Go to your Hugging Face Space settings
- Navigate to "Variables and secrets"
- Add `MONGODB_URI` with your MongoDB connection string
- *(Optional)* Add `OPENAI_API_KEY` if you want GPT-powered recommendations
2. **Create Hugging Face Space**:
- Create a new Space on Hugging Face
- Choose "Docker" as the SDK
3. **Upload Files**:
- Upload all files from this repository to your Space
- Ensure `Dockerfile` is in the root directory
4. **Configure Space**:
- The Dockerfile will automatically build and run the application
- The app will use the `MONGODB_URI` secret from Hugging Face environment variables
### Hugging Face Space Configuration
The Dockerfile is configured to:
- Use Python 3.11
- Install all dependencies
- Expose port 7860 (Hugging Face default)
- Run the FastAPI application with Uvicorn
Hugging Face will automatically:
- Build the Docker image
- Set environment variables from secrets
- Deploy the container
- Provide a public URL
## API Documentation
Once deployed, access interactive API documentation at:
- Swagger UI: `http://your-url/docs`
- ReDoc: `http://your-url/redoc`
## Algorithm Details
The Smart Budget Recommendation engine:
1. **Data Collection**: Analyzes expenses from the past 6 months
2. **Category Analysis**: Groups expenses by category and calculates:
- Average monthly spending
- Standard deviation (variability)
- Number of transactions
- Months of data available
3. **Budget Calculation**:
- Base: Average monthly expense
- Buffer: 5-10% based on spending variability
- Rounding: Rounds to nearest 100 for cleaner numbers
4. **Confidence Scoring**:
- Based on data quality (months analyzed, transaction count, consistency)
- Returns score from 0-1
5. **(Optional) GPT Refinement**:
- If `OPENAI_API_KEY` is set, GPT reviews the history and suggests increase/decrease/keep along with a natural-language reason.
## Environment Variables
- `MONGODB_URI`: MongoDB connection string (required)
- `OPENAI_API_KEY`: Optional. If set, GPT-based recommendations augment the rule-based engine.
## License
Copyright © 2025 WalletSync. All Rights Reserved