Flagship project
CrossWise — Border Ports of Entry Management System
Mar 2024 – Jun 2024
Self-initiated; led a team of 5
- Flask
- AWS EC2
- SQLAlchemy
- JWT
- scikit-learn
- Jekyll
- Tailwind CSS
- GitHub Actions
Waiting hours to cross the border is a normal part of life in San Diego, so I started a project about it and led a team of five to build it: a full-stack web application for two US-Mexico ports of entry that combines live government data with machine-learning wait-time predictions.
Try it yourself — the live demo
has a test login: username and password cooltester.
What it does
A Flask REST API (50+ endpoints) on AWS EC2 handles authentication (JWT), data access (SQLAlchemy ORM), and prediction serving. Random Forest and Decision Tree models, trained on historical CBP crossing data, predict traffic wait times in both real-time and long-term modes — and retrain automatically as new data comes in, rather than going stale.
Where the data comes from
Four live sources get stitched together: the CBP border-wait API itself, NOAA weather data (weather materially affects crossing throughput), Google Maps for routing/directions, and a custom pipeline that generates timelapse video from public border camera feeds — genuinely useful for visually spot-checking congestion rather than trusting a single number.
Why it’s not just a data project
The frontend is a Jekyll site styled with Tailwind CSS, deployed via GitHub Pages with a full GitHub Actions CI/CD pipeline — meaning the “research project” half (the ML models) and the “product” half (an actual app someone could use to decide which crossing to take) both got built, not just the interesting half.