Salish Ops Intelligence   ← Live dashboard

Data sources & methods

Everything on this platform is computed from the sources below, collected continuously into one archive. Nothing is hand-entered. Where a number is an estimate, the page that shows it says so and states its assumptions.

Sources

AIS vessel positions AIS · observed

Position, speed, course and destination for the BC Ferries fleet and competitors (Hullo, Black Ball Coho, Victoria Clipper), from a privately operated AIS receiver contributing to the AISHub exchange, which pools stations coast-wide.

Polled every ~66 seconds, stored deduplicated. This is ground truth for where vessels actually were — it cannot be edited after the fact.

BC Ferries schedules & conditions BC Ferries · published

Scheduled sailings, vehicle-deck booking fill, announced delays, actual departure and arrival times (capacity-managed routes), via the community bcferriesapi.ca scraper of bcferries.com Current Conditions.

Polled every 5 minutes. Self-reported by the operator; an AIS cross-audit of these times is in the report — announced departures matched AIS to a median +0.2 min.

Service notices BC Ferries · published

Cancellation and disruption notices with full detail text, captured while live — BC Ferries removes notices once a disruption ends, so this archive preserves stated causes that later disappear from the web.

Polled every 15 minutes.

Weather, marine forecasts & tides

Hourly wind, gusts and temperature (Open-Meteo archive, Tsawwassen point — note the archive lags about two days); Environment Canada marine forecasts and wind warnings for the Strait of Georgia, Juan de Fuca and Haro Strait; DFO water levels for Vancouver.

Forecasts every 15 min; weather archive refreshed on a trailing window.

Road conditions

DriveBC Open511 incidents near ferry terminal approach corridors (Highways 17, 1, 99), for context on landside congestion.

Polled every 15 minutes.

Rider experience (X-data) Reddit · public

Public posts and comments from r/BCFerries, collected hourly, scored with a transparent word-lexicon sentiment (crude by design, labelled so) and joined to the same day's operational metrics. Aggregate analysis only, with a link back to every quoted post; no profiles are built and nothing beyond the public post is stored.

Polled hourly via the public RSS feeds.

Public records published documents

BC Ferry Commissioner annual reports (FY2020–FY2025 route financials, utilization, overloads, on-time performance), the Coastal Ferry Services Contract sailing minimums, monthly traffic releases, FOI-released per-route fuel consumption, and published fares. These anchor the report's multi-year analysis and calibrate the fuel model.

How the headline metrics are calculated

Arrival lateness / on-time performance
Actual arrival minus (scheduled departure + published crossing duration). A sailing is "on time" within 10 minutes. Multi-stop Gulf Islands sailings carry extra noise because the published duration doesn't always reflect that sailing's stop pattern.
Vehicle-deck utilization & sellouts
Peak booking fill per sailing, taken as the maximum ever observed in the fill history — the live feed zeroes fill once a sailing departs, so peak-tracking is the only honest measure. "Sold out" = fill reached 100% before departure.
Passenger delay cost
Delay minutes × vehicles aboard (capacity × fill) × 2.2 occupants per vehicle, walk-ons excluded (conservative), valued at $25 per passenger-hour — the convention used in transit economics. An estimate, always labelled.
Operations health score
100 minus weighted penalties for on-time shortfall, average delay, cancellations, sellout pressure and severe weather. The exact weights are printed on the Intelligence page.
Cascade predictions
Observed behaviour of this fleet: how much of a late arrival carries into the same vessel's next departure, measured across every consecutive-sailing pair in the archive.
Fuel & CO₂ per crossing
Class-level installed power × cube-law speed scaling × crossing time × typical marine-diesel consumption, sanity-checked against FOI annual fuel totals. Directional estimates, not measurements.
AIS-derived crossings
Berth-to-berth movements inferred from position tracks and terminal geofences — this covers the ~116 routes where BC Ferries publishes no actual times at all.

How to read confidence

AIS · observed Measured from vessel positions. Highest confidence; can't be revised. published BC Ferries' own feed or documents. Reliable but self-reported. estimated Modelled from the above with stated assumptions. Directional; the assumptions are printed beside the number. experimental New detectors still being validated against reality (e.g. missed-sailing detection). Shown with method and coverage guards.

Sample sizes matter: the archive grows daily, and pages state their n wherever a small sample would weaken a claim. If a pattern doesn't clear the guards, the platform says nothing rather than something shaky.

About this site's own data

The public site counts visits with GoatCounter: aggregate pageviews and referrers only — no cookies, no personal tracking, no consent banner needed. The same standard this platform applies to ferry data applies to yours.