← back

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

live

highlights.md
  • Developed (and led a team of 5) a full-stack web application optimizing 2 US-Mexico port of entry crossings using machine learning predictions and real-time data integration.
  • Engineered Random Forest and Decision Tree models trained on historical CBP data to predict traffic wait times with real-time and long-term prediction modes.
  • Built a Flask REST API with 50+ endpoints on AWS EC2, implementing JWT authentication, SQLAlchemy ORM, and an automated ML model retraining pipeline.
  • Integrated live CBP API, NOAA weather data, Google Maps directions, and custom timelapse video generation from border camera feeds.

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.

↑↓ navigate · ↵ select · esc close