Skip to content
Isaac Willson

Open to internships

Isaac WillsonDover, NJ

Hi, my name is Isaac.

I’m a software engineer studying computer science and data science at Rutgers. I build full stack projects with real users. And if the data doesn’t exist yet, I go and collect it.

Trace the figureDrag across the figure to read any hour
01020Weekends · 11amWeekdays · 5pm10am1pm4pm7pmMEAN ARRIVALS PER OPEN HOUR · 29 DAYS · JUL–AUG 2026

01How I work

I finish things, and I show my working.

Most of what I know came from picking a problem in front of me and refusing to stop before it was deployed and someone was using it. Three habits came out of that.

  1. 01

    I get the data

    When the numbers I needed did not exist anywhere, I transcribed a summer of paper sign-in sheets by hand.

    250 observed hours, 29 days, collected from scratch

  2. 02

    I ship the whole thing

    My model trains offline, deploys to Lambda as a container image, and answers a live site my neighbors actually open.

    300+ visitors on the dashboard it feeds

  3. 03

    I report honestly

    Every result is tested against a real baseline; even when my margin narrowed as I added more data.

    Leave-one-day-out CV, feature ablation, 24 graded evals

02Selected work

Three things I shipped.

Everything here is deployed and the source is public. The first one you can run without leaving this page.

Jul 2026 - Present

Pool Arrival Forecasting

Predicts how many families arrive at the pool each hour, from the day's weather.

Try it

82°F

Marked span is the 6790.2°F observed while training.Past it — this is extrapolation.

66
Arrivals that day
5PM
Busiest hour
10AM11AM12PM1PM2PM3PM4PM5PM6PM7PM
Fig. 1 — Predicted arrivals per open hour

A ridge approximation of the deployed model, fit on the same 250 hours. MAE 3.00/hr against the deployed model’s 2.97 under leave-one-day-out CV. Close, but not the same thing, so this page says so rather than pretending.

The data behind it29 days · 250 recorded hours · one square per hour

Fig. 2

The pool recorded arrivals on paper and nothing else — no database, no counter, no export. Inked squares were recorded, the palest are hours the pool was open and nobody came, and empty outlines were never logged. Keeping those zeros is the whole point: they are where the bad-weather signal lives.

Fig. 2 — Arrivals per open hourJul 8 – Aug 16, 2026 · hover a cell
Never recordedOpen, nobody came1 – 22 arrivals
29
Days observed
250
Hours transcribed
1,589
Arrivals logged
23%
Below baseline MAE

Pythonscikit-learnFastAPIDockerAWS LambdaAWS ECRGitHub ActionsNext.js

Jun 2026 - Present

Pondview Pool Status

A live dashboard telling 1,000+ residents how busy the pool is before they walk over.

300+
Unique visitors
1,000+
Units served
6
API endpoints

The sibling to the forecaster, and the one people actually use, with 300+ unique visitors. It answers what the pool looks like live.

Behind it is a six-endpoint REST API that ingests occupancy readings into PostgreSQL and computes the hourly activity curves, weekly stats, and live trends server-side, so every view derives from one source of truth and the client stays light. Admin routes are secured with Bearer-token and HMAC-signed cookie auth so an untrusted client cannot spoof a reading, and a Redis-backed override lets staff force-close the pool and have it reach residents' screens in seconds.

Crowd levels are only tracked on some days, so on an untracked day the dashboard says so plainly, names the next tracked day, and points at the typical pattern rather than showing a stale number or a fake zero. Residents check it on their phones on the way out the door, so every section was built for a narrow screen first.

Next.jsTypeScriptPostgreSQLRedisTailwind CSSVercel

Jun 2026

Chess AI

A chess engine that plays you, with different levels of difficulty.

3
Difficulty tiers
Minimax
With alpha-beta pruning

Full legal move generation, check and checkmate detection, and an opponent built on minimax with alpha-beta pruning over a positional evaluation function.

The three difficulty tiers are search depth. Easy searches shallowly and misses tactics because it genuinely cannot see them, while hard searches deep enough to punish you for the same moves.

PythonPygame

03Toolkit

Toolkit.

Languages
PythonJavaTypeScriptJavaScriptSQLC#HTML/CSS
ML and data
scikit-learnpandasNumPymatplotlibJupyterPostgreSQLRedisLLM tool-use
Web and backend
ReactNext.jsNode.jsFastAPIREST APIsTailwind CSS
Tools and infrastructure
GitGitHub ActionsDockerAWS LambdaAWS ECRVercel

04About

Who is doing all this.

Isaac Willson
Based in
Dover, NJ

I am a computer science and data science double major at Rutgers, and in the summers I work at the pool this site keeps refering too.

That job is where the projects came from. I was the one logging resident visits against a list of a thousand units, which meant I was also the one who heard residents questions and complaints about how busy the pool gets. So I built the dashboard, then went back through those paper sheets to train something that could predict it.

It taught me more about evaluation, deployment, and writing things down clearly than any tutorial would have, because there was nobody else to check the work.

There was nobody else to check the work.

On learning it alone

Education

Rutgers University, New Brunswick

B.S. Computer Science and B.S. Data Science

Double major · Expected May 2029

Data StructuresComputer ArchitectureLinear AlgebraDiscrete Structures I & IIInference for Data Science

Experience

Pool Attendant, seasonal

Garden Homes · Wharton, NJ · May 2025 - Present

Safety and access for the only pool serving 1,000+ units. The job is where both Pondview projects came from.

Sales Associate

Journeys · Dover, NJ · Aug 2024 - Present

Beat daily and weekly sales targets by about 20% on average.