RJ DowellPERSONAL PORTFOLIO
← All projects

PROFESSIONAL WORK · Reporting & operations

Scheduling data workspace

Turns repeated vendor scheduling exports into a calendar, shift search, and change review backed by one consolidated database.

BuiltProductionDocumented October 5, 2026

21,169consolidated shifts · as of Oct 2, 2026
21imports · Jun 16–Oct 2, 2026

My contribution

Designed and implemented ingestion, the calendar interface, admin upload, reporting, and production hardening.

Tools
Python · Streamlit · Supabase · CSV ingestion

How it works

  1. Preview a vendor scheduling export with date, status, and row summaries.
  2. Skip an identical prior file or upsert shifts by source and source-shift identity.
  3. Record the ingestion outcome and refresh the database-backed views.
  4. Explore week/month calendars, filtered shift lists, recent changes, and CSV exports.

Decisions that mattered

Work with the source that exists

The vendor did not offer a supported scheduling API. The live path uses a deliberate manual export and upload, with visible freshness.

A refresh should not multiply shifts

Stable source identities support updates and cancellations without inserting another copy every time the export repeats a row.

Progress is part of reliability

SHA-based preview reuse, duplicate-file detection, import progress, and timing metrics make large uploads understandable.

Separate when work happens from when it changes

Shift dates and last-modified dates answer different questions. Both are available for operational review.

Results

By October 2, 2026, 21 imports had processed 415,040 source rows into 21,169 consolidated shifts (source rows include repeated snapshots). October 5 notes confirm memory hardening in production.

Scope & limits

One vendor source is live. More sources and writing changes back to the scheduling system are outside the delivered scope.

Related projects

Next projectRefreshable performance dashboard