Potrafimy oszacować, ile każdy przewoźnik zarabia na pociąg, na korytarz, na dobę. Całka konsumpcji miejsc ważona ceną wzdłuż krzywej rezerwacji. Umożliwia najbardziej uderzające twierdzenie dla zarządu: „Szacowane przychody RegioJet na trasie Praha–Warszawa wynoszą X mln PLN/rok; ich wyjście pozostawia tę pulę do zagospodarowania."
✅ Gotowe dla 71% pociągów — price_observations + train_capacities. 🟡 29% bez danych o pojemności (cotygodniowy refresh nie obejmuje nowych pociągów). 98% pokrycia ostatnim snapshotem w ciągu 24h przed odjazdem.
Średni — całka przychodowa to jedno zapytanie SQL (window query) + sumowanie. UI: siatka przewoźnik × korytarz + widok szczegółowy pociągu. Bez nowej kolekcji danych dla v1.
Najsilniejszy mockup pitchowy dla finansowo wykształconych członków zarządu. Przekłada „mamy dane" na „wiemy, ile wart jest rynek". Bezpośrednio wspiera decyzje strategiczne: udział w rynku, skutki wyjścia przewoźnika, scenariusze przejęć.
Top-3 priorytetów budowy obok 04 Zmiany rynkowe i 07 AI Chat. Wdrożyć z przejrzystym panelem metodologii i zastrzeżeń zgodnie z zasadą „każdy fakt ma źródło".
(1) Zamknąć lukę 29% pojemności — zbadać cotygodniowy refresh. (2) Dodać fetche T-30/T-20 w daily_fetch.py --horizons. (3) Zbudować zapytanie całki przychodowej na price_observations + train_capacities. (4) Wyrenderować siatkę przewoźnik × korytarz z trendem tydz./tydz.
Szacowane przychody brutto ze sprzedaży biletów według przewoźnika i korytarza. Metodologia poniżej.
Przychody szacowane na podstawie price_observations × train_capacities. Tygodnie przed 12 sty wykluczone z powodu niewystarczającej gęstości snapshotów. [źródło: /api/revenue/timeseries]
price_observations — price + free_seats per fetch, per train-day-classtrain_capacities — total seats per train-class (weekly refresh cron)train_capacities data — used directlyEvery fetch is logged with timestamp and source URL. Full source registry available in view 08 — Data Trust. [/api/fetch-log]
29% capacity gap: under investigation — weekly refresh_train_capacities() cron may be missing trains discovered after last full seed. See CLAUDE.md known issue.
Assumes IC can add capacity immediately (trainsets available). Historically IC has absorbed RJ exits on domestic corridors within 2–4 weeks.
Most likely scenario based on 2020 RJ domestic exit pattern. Demand partially suppressed by fare increases (IC tends to price higher post-competition exit).
Worst case: passengers shift to car/bus/plane on international corridors (esp. WAW–Praha), producing net revenue destruction for the rail market.
Scenarios are model estimates based on historical corridor behaviour and current price_observations. Not forecast. [/api/revenue/scenario/rj-exit]
Standard revenue management practice: integrate the seat-consumption curve against the price curve to approximate gross yield. We observe snapshots of (price, free_seats) per train-day; the difference in free_seats between consecutive fetches represents consumed seats at that observed price. Summation over all fetches approximates the booking-curve integral.
Per "every fact must have a source": all revenue figures link to the API endpoint that produced them. The methodology box is mandatory on any published view. The "what we can't see" list is displayed by default, not hidden in a footnote.