< overcast.video

Case: Police Scanner — San Francisco

What it proves: overcast turns a live, keyless public-records feed into a

geolocated, triaged case brief. The San Francisco Police Department publishes its

computer-aided-dispatch (CAD) calls-for-service on the Socrata SODA open-data API

— no key required. overcast's dispatch source reads that feed, tags every call

with GPS, and plots them on a map you can hand to an analyst.

Everything below is reproducible on any machine with overcast installed — there

are no API keys in this case.

Run


# 1. a case is just a folder + its .overcast/ store
overcast case init --case showcase/sf-scanner

# 2. register the San Francisco CAD feed (a shipped preset; any Socrata city works
#    via dispatch:<domain>/<dataset>). No key — SOCRATA_APP_TOKEN only raises limits.
overcast source add "dispatch:sf" --case showcase/sf-scanner

# 3. validate the feed with a single scan — confirm rows parse and carry
#    gps / call-type / id columns (auto-detected per row)
overcast scan --source dispatch --limit 50 --case showcase/sf-scanner

# 4. open a line of investigation
overcast target add "Where are tonight's assault, battery, and suspicious-activity \
  calls clustering across SF districts?" --case showcase/sf-scanner

# 5. plot every geolocated call on one self-contained HTML map (live OSM tiles)
overcast map --since 24h --no-open --theme csi \
  --export showcase/sf-scanner/map.html --case showcase/sf-scanner

# 6. export the case brief (story-first: verdict, the line of investigation,
#    coverage, and the newest-first record trail)
overcast brief --theme csi \
  --export showcase/sf-scanner/brief.html --case showcase/sf-scanner

monitor turns the one-shot scan into a standing watch — the SF feed is a rolling

~48h real-time window, so it's a strong fit:


overcast monitor --once --case showcase/sf-scanner              # one diff pass
overcast monitor --source dispatch --every 15m --limit 20 --case showcase/sf-scanner

Artifacts

tiles, each marker linking back to the source SODA row (PETTY THEFT, TRAF

VIOLATION CITE, ASSAULT / BATTERY, WELL BEING CHECK, …). Fully self-contained.

Both are exported verbatim by the CLI. The only post-processing for hosting is a

scrub of the local case-directory path (see the site's scripts/publish-case.mjs).