Methodology
How SceneF knows.
A showtime is a promise about the physical world: a projector, a room, a start time. We treat every listing as a claim to be checked, not a feed to be relayed. Three rings of verification stand between a source and this site.
The three rings
Ring one — schema gates, nightly, on everything
Every screening we ingest must pass shape checks before it exists here at all: a known venue, a real start time in the theater’s own timezone, and a film identity keyed to TMDB — never a bare title, so two films that share a name can never merge. Each venue also has a normal volume band; when a fetch comes back outside its band, that venue is held and we serve the previous verified set rather than guess. Held venues are marked on the status board.
Ring two — rotating cross-checks
Through the week, a rotating sample of listings is compared against independent sources — the theater’s public calendar page, a second listing service — looking for drift: a moved start time, a swapped print, a cancelled night. A mismatch flags the venue for a fresh fetch and a closer look before the listing keeps its verified mark.
Ring three — weekly mystery-shopper runs
Once a week we do what a reader does: follow our own published ticket links and confirm that the page on the other side sells the film we named, on the date and time we printed — stopping before any account or payment step. If the door does not open onto the right auditorium, the link and its source are pulled for repair.
Verified against the theater’s own calendar.
Source tiers
- venue-api
- The theater’s own ticketing system, read directly. The independent houses on Veezi — Roxie, Balboa, 4-Star, Vogue — sit here: the same sessions their own box office sells from.
- public-feed
- A structured feed the venue itself publishes, such as Alamo Drafthouse’s calendar data. First-party, machine-readable, one step removed from the ticketing engine.
- verified-scrape
- Read from the venue’s own public pages — the neighborhood houses, the events rooms — and held to the same three rings as everything else. The tier is disclosed per venue on the status board; nothing pretends to be more direct than it is.
- licensed-feed
- The chains — AMC, Regal, Apple Cinemas — publish their schedules to the industry’s listing pipeline but challenge every machine that asks them directly. We buy those times from a licensed aggregator rather than force a door. It is the one tier we do not read first-hand, so it carries the weakest claim on this site, and the theater’s own box office is the last word on a same-day change. We would rather hold their calendar at arm’s length and say so than leave the city’s picture incomplete.
How well a showtime is known
The tier says where a listing came from. Confidence says how well we actually know it, and it is computed at publish — from the tier and from whether any independent source agrees — never typed in by hand. Every screening carries one of four levels, in the API payload as much as on the page. The count at each level, for the whole board, is published on the record page.
- venue-published
- The theater itself said so — its own ticketing system, its own feed, its own calendar page. The strongest claim available short of standing in the lobby, and the level most of this city’s screens sit at.
- corroborated
- Two sources that do not share a pipe reported the same show at the same minute. Agreement between strangers is worth more than confidence from one voice.
- single-source
- One licensed feed lists it and nothing contradicts it — the chains, whose own systems refuse machines at the door. It is probably right and we are not going to pretend it is more than that: rows at this level wear the word unconfirmedon the strip, and the theater’s box office is the last word on a same-day change.
- disputed
- Sources disagree about this show — a moved time, a print swapped, a night one of them has dropped. We keep it listed and mark it disputed rather than quietly pick a winner. Deleting the disagreement would look tidier and tell you less.
A screening at the top two levels wears nothing at all. Silence is the mark of a well-known fact; only the two weaker levels earn a word, so a mark means something when you see one.
Cadence
The dataset rebuilds nightly, with the verification rings rotating through the day between rebuilds. Pages, APIs, and calendar feeds all serve from the same dataset with a 15-minute cache, and every JSON payload carries a data_as_of stamp so a caller always knows the age of what it is holding. Current per-venue health lives on the status board.
Honest limits
Two seams show, and we would rather point at them than paint over them. The chains currently link out to their own sites rather than to seat-level checkout — vendor adapters are pending, so a chain ticket link lands on the chain’s page for that theater. And the events houses, the Castro chief among them, list irregularly: films interleave with concerts, dates arrive late and sometimes move, so their calendars here are as good as their announcements — no better, and never worse.
