Smart Park Overall Plan
Welcome to SmartParkSD: Predict Parking Availability
“Find, Park, Go”
Introduction
SmartParkSD transforms the way people find parking in cities by using historical transaction data and machine learning to forecast meter availability. Instead of circling blocks in frustration, drivers get real-time, location-aware predictions on open spots—saving time, fuel, and sanity.
💡 Project Idea: “SmartPark San Diego” – Predict Parking Availability”
Goal:
User inputs:
- a specific address, will use geo encoding to convert to coordinates.
- a time & day,
And the app predicts whether parking will likely be available or occupied, and how much it will cost to park there.
🧠 Why this project?
-
Real Dataset (A): We’re using official San Diego city parking transaction and meter location data, which is rich in temporal and spatial signals.
-
Community Purpose (B): It helps solve a major urban problem—wasted time and emissions caused by circling for parking.
-
Our Interest (C & D): As drivers and commuters ourselves, we know how painful parking can be. The project combines ML, data visualization, and user-friendly design, aligning with each of our technical passions—from data science to frontend interactivity.
✅ Feasibility: YES
We can train a model to predict parking availability at a given location (pole_id) and time, based on historical usage patterns.
🧠 Machine Learning Plan
1. Preprocessing / Feature Engineering: From each transaction, create:
day_of_week,hour,is_weekend,monthoccupied_duration = expire - startoccupied = 1during occupied time window,0otherwise
Then, aggregate transactions per pole_id per time window (e.g., 15-min or 1-hour) to calculate:
- average occupancy
- peak hours
- typical transaction lengths
2. Training Data Format: Each row = a time slot for a pole
- Inputs:
pole_id,day_of_week,hour,meter_type, etc. - Output:
occupied(binary classification)
3. Model:
Start with a simple classifier: Random Forest, Decision Tree, or even Logistic Regression
🌐 Web App Interface (Frontend + Backend)
User Interface:
- Choose location by entering address, using google maps geo location API, and corresponding coordinates in second data table, we will get nearest parking meter in coordinates.
- Pick day/time
- Click “Check Parking”
- App responds: “High chance of available space” or “Likely full”
Backend:
- Flask or Express server
- Takes user input → formats it → sends to model → returns prediction
🚀 Bonus Features
- Visualize occupancy on a heatmap
- Show historical trends by hour/day
- Let users compare multiple locations
Frontend Overview
Description of the Figma Prototype
- Search by Address or Area: Users can type in an address to find nearby meters.
- Prediction Heatmap: A real-time visual showing the likelihood of available meters in color-coded zones.
- Meter Details Popup: Tapping a pole reveals past trends, pay type, average occupied hours.
- Authenticated Dashboard: Registered users can bookmark locations and get notifications

Backend Overview
- Flask + ML Pipeline with API’s to serve frontend
GitHub Repositories
| Repository | Description |
|---|---|
| SmartPark_frontend | Frontend app (HTML/CSS/JS) |
| SmartPark_backend | Flask backend with ML models and APIs, pre processing and ML pipline |
Timing (ESTIMATES)
-
User stories and planning should be completed by Thursday (03/26/25)
-
Backend integration and ML model deployment should be finished by next Friday (04/18/25)
-
Hard deadline set to May 9th, one week prior to meeting with Derick Lee. Last trimster we had a habit of waiting until the last minute, so we want to improve on our last tri's retrospective and fix these issues.
-
Final refinements and feedback integration should be done by May 16 (05/16/25)
Definition of “Done”
Though projects can never be truly “done”, as of now the project is considered “Done” when the website fully integrates front-end and back-end functionalities, enabling users to view real-time and predicted parking availability. Features include an intuitive UI with a table displaying parking predictions, a machine learning model processing historical and real-time data, and the ability for users to submit feedback on predictions to refine the model.
📈 System Flowchart
A visual representation of how users interact with the system and how predictions are generated:

Technical Foundation
| Component | Technology |
|---|---|
| Frontend | Bootstrap |
| Backend | Flask (Python) |
| ML | scikit-learn, pandas, xgboost |
| Mapping | Leaflet.js or Google Maps API |
| Geocoding | Google Maps API / OpenCage |
| Auth | JWT-based with secure cookies |
Authentication & Smart Routing
Login Behavior
Authenticated users can:
✅ Set location alerts
✅ View prediction history
✅ Bookmark “favorite” parking spots
Team and Project Roles
| Name | Role | Responsibilities |
|---|---|---|
| Mihir | Scrum Master | Oversees progress, coordinates tasks |
| Shawn | Backend Engineer | Builds Flask API, connects model to frontend |
| Kiruthic | ML Engineer | Processes data, trains models, builds prediction logic |
| Xavier | Assistant Scrum Master | Keeps documentation clear and timelines accurate |
| Spencer | Frontend Developer | Designs UI/UX, integrates map and result display |
🧠 Innovative Features
Predictive Availability Engine
Using timestamps (date_trans_start, date_meter_expire), transaction patterns are modeled to predict future occupancy likelihoods for any meter.
| Feature | Description |
|---|---|
| Time-based Forecasting | Model trained on usage by hour, day, season |
| Custom Location Inputs | Users can enter an address, which geocodes to the nearest pole(s) |
| Confidence Score | Model outputs likelihood % of spot being open |
Address to Meter Matching
Geocoding turns user input into lat/lon, matched to nearby pole_ids via distance comparison.
➡️ Uses Haversine formula or geospatial queries (e.g., PostGIS or GeoPandas)
Visual Parking Forecasts
Color-coded zones display real-time predictions:
| Likelihood | Color |
|---|---|
| High (>80%) | Green |
| Medium (50–80%) | Yellow |
| Low (<50%) | Red |
Why SmartPark Stands Out
| Feature | Differentiator |
|---|---|
| ML-Powered Insight | Predictions from real city parking data |
| Geolocation Matching | Find meters near any address |
| Custom Alerts | Let users know when a favorite spot opens up |
| Scalable Design | Built for expansion to other cities or data types |