{{ toast }}
Update the seniority list
Currently using the list as of {{ senCurAsOf }} ({{ senCurCount }} crewmembers). Whichever list is more current wins — the app reads the “as of” date, not the upload time.
Drop the seniority list PDF here
or
PDF reading needs a one-time online download. Pasting always works offline.
Or paste the text
{{ senMsg }}
{{ senErr }}
Everything is parsed on this device — the list never leaves your browser. No-bidder flags carry over from the previous list, since the seniority list itself does not carry them.
Import a BidPro .BP packet
📄
Drop a .BP file here
e.g. SDF757XX.BP — any domicile, fleet or bid period
{{ importMsg }}
{{ importMsg }}
Private by design: the file is parsed right here in your browser and saved to this device's local storage. Nothing is uploaded to any server. Each crewmember imports their own packet.
BID
PilotBidder
Schedule bidding · VTO · VOR · every bid period
Administrator sign-in
Opens the ingest tools, the data inventory and the PDF extraction inspector. Crewmembers never see these.
{{ adminErr }}
This code only hides the tools in the prototype — it is not real security. Server-side roles come with the backend.
Sign in with your GEMS number
Pulls your seniority-list record, sets your fleet, seat and domicile, and restores your saved bid work on this device.
{{ gfName }}
{{ gfMeta }}
Not on the master seniority list dated {{ msAsOf }} — you can still continue; pick your packet and seat below.
{{ gateNoPacketMsg }}
Bidding as
{{ gateResPacket }} · {{ gateResSeat }}
{{ gateResFleet }} · from {{ gateResFrom }}
Bid packet
Seat
Your profile, bid order, notes and eliminations save in this browser — per packet, per pilot. Nothing is sent anywhere.
{{ hdrEqp }}
{{ hdrDom }}
PilotBidder
{{ hdrSub }}
Admin
Bid packets · {{ hdrPeriodLabel }}
{{ p.dom }} {{ p.fleetName }} {{ p.homeMark }} {{ p.eqp }}
Import a .BP packet… local only
{{ ctxChipText }}
{{ hdrPeriodTag }} ▾
{{ hdrPeriodRange }}
Signed in as
Administrator
Bidding as
{{ myName }}
🎓 TRAINING {{ trainFlagGroup }} THIS BID
bidding
{{ bidPosChip }}
proj. line
{{ myProj }}
loading hold…
Log in with your GEMS #
Runs your live bid snapshot so every view shows what you can hold.
That GEMS is a No-Bidder.
Couldn't reach the snapshot service — try again.
Where you bid · this period
{{ b.label }} {{ b.val }} {{ b.suffix }}
{{ b.lead }}
{{ b.note }}
All four are your position in the pool. Schedule = the packet list; Training = your recurrent group (awarded in seniority order, Art 13.D.8); VTO/VOR = which taker of that line type you would be, out of the lines in your packet for your seat — counted from a seniority award simulation of every filed bid, so a senior holding a HIGHER-numbered VTO/VOR line still counts against you. {{ bidPosSim }}. {{ bidPosAsOf }}
Profile · saved in this browser
{{ profileName }}
{{ profileMeta }}
Site session · Cloudflare OTP
{{ cfEmail }}
{{ l.mark }}{{ l.label }}
⚠ VIEWING OLD BID PERIOD {{ oldPeriodLabel }} — this data is NOT current. Click here to return to {{ oldPeriodCurrent }}.
Snapshot connection doctor
Tests every route from this exact page and domain. The app uses the first route that passes, in this order — if they all fail on your domain, add your own proxy below and this app routes through it first.
{{ r.mark }} {{ r.label }} {{ r.note }} {{ r.ms }}
Your own proxy (the permanent fix)
Best on your setup (GitHub repo published by Cloudflare Pages): commit the snippet below as functions/api/snap.js at the repo root. Pages auto-deploys a same-origin proxy at /api/snap and this app tries it automatically for every visitor — nothing to paste or save. Alternative: a separate Worker (dash.cloudflare.com → Workers & Pages → Create Worker) — then paste its URL below ending in ?u=
{{ snapWorkerCode }}
✓ Proxy saved — it is tried first on every snapshot call. Hit Re-test to confirm.
Page errors on this tab
Everything any script on this page threw since load — including scripts your host or CDN injected. If the source below isn't this app's page, the fix belongs to that plugin/optimizer, not the app.
{{ er.head }}
{{ er.msg }}
{{ er.src }}
{{ er.stack }}
Reading the results: primary direct failing = the Azure snapshot service itself is down (nothing your site can fix). All relay rows failing = your domain is being blocked by the public proxies — use your own proxy above. The proxy is saved per-browser.
G
Create your Google OAuth Client ID
One-time setup, about 5 minutes, free. It lets this page read your calendar read-only — nothing is written or shared. Google requires you to bring your own ID because this tool runs entirely in your browser: your calendar data never touches anyone else's server.
{{ s.n }}
{{ s.title }}
{{ s.body }}
{{ s.chip }}
Google will show an “unverified app” warning when you connect — expected, since it is your own app in testing mode: click Continue. Your Client ID is saved in this browser so you only do this once per device. If you open the tool from a different web address later, add that address to the origins list in step 4.
Loading bid package…
◆ ARCHIVE You are looking at Bid Period {{ staleLabel }} — this is not the bid you are flying now. Every line, trip and calendar below is historical. Current period: {{ staleCurrent }}
{{ lineCountLabel }}
Type
{{ ln.holdMark }}{{ ln.line }}
{{ ln.descType }}{{ ln.seatBadge }}
✓ Reviewed 📝 note {{ tg.label }}
{{ ln.credit }}
{{ ln.daysOff }}
{{ ln.wknds }}
{{ ln.edw }}
{{ ln.trips }}
{{ ln.rank }}
Line {{ detail.line }}
{{ detail.holdLabel }}
{{ detail.descType }}
{{ detail.typeText }}
Bid rank #{{ detail.bidRank }}
{{ s.label }}
{{ s.value }}
Where this line flies
{{ mapCount }} · {{ mapFrameLabel }}
{{ mapLandNode }}
{{ d.label }}
flying deadhead domicile
All features
{{ f.label }}{{ f.value }}
⚑ Hits {{ detail.conflictCount }} of your conflicts: {{ detail.conflictNames }}
✓ Clear of all your conflicts
{{ detail.tripLabel }}
{{ t.range }}
{{ t.sub }}
No scheduled duty in this line.
{{ d.label }}
Line {{ selectedLineNum }} selected No line selected
{{ pillCount }} lines
Select by type
{{ calSelLabel }}
Move in bid
below
{{ bidMsg }}
Pick · Rank
Line
Cred
Blk
DO
DD
Rpt
EDW
{{ m.label }} {{ m.year }}
{{ h.dow }}
{{ h.num }}
{{ r.selMark }}
{{ r.rank }}
📝{{ r.holdMark }}{{ r.line }}
{{ r.credit }}
{{ r.block }}
{{ r.do }}
{{ r.dd }}
{{ r.reports }}
{{ r.edwPct }}
{{ k.c }}
{{ c.credit }}
VAC
{{ pillRemaining }} Showing all of them at once will make this tab slow
L {{ flightLineNum }}
{{ flightWeekLabel }}
SDF-local axis · commercial · bus · click a day for trip detail
Bid rank #{{ flightRank }}
{{ h.num }}
{{ k.c }}
{{ c.credit }}
ZULU
SDF
{{ hr.zulu }}
{{ hr.ldt }}
{{ d.dow }} {{ d.num }}
{{ d.credit }} cr
{{ d.typeLabel }}
⚑ {{ d.conflict }}
{{ b.route }}
{{ b.time }}
{{ b.flt }}
Select a line in the Lines or Pill-grid view to see its flights by time of day.
G
Google Calendar
✓ Connected · {{ gcalEventCount }} events
Opening Google sign-in…
View your personal calendar. Paste your Google OAuth Client ID, then connect (read-only).
{{ gcalErr }}
Bid around conflicts
Add dates you can't work — duty days that hit them get flagged.
Start
End · optional
My conflicts
{{ c.label }}
{{ c.dateLabel }}
No conflicts yet.
L {{ d2LineNum }}
Line {{ d2line }} {{ d2type }} PP credit {{ d2creditPP }}
{{ t.label }} {{ t.n }}
{{ s.label }}
{{ s.value }}
{{ s.unit }}
All line features
{{ e.label }}{{ e.value }}
{{ mo.label }}
{{ dn }}
{{ day.num }} {{ day.typeTag }}
{{ day.barTxt }}
{{ day.creditLbl }}
{{ day.holiday }}
Select a line to see its full two-month breakdown.
What can I hold?
{{ hold.bidLabel }}
{{ hold.sub }}
Most-junior bidding captain
{{ hold.juniorName }}
Sen #{{ hold.juniorPos }} · GEMS {{ hold.juniorGems }}
Or enter a GEMS #
Live data via the bid snapshot service. Pick any pilot from the Seniority tab to run them here.
{{ s.value }} {{ s.label }}
Paste the {{ hold.bidLabel }} Bid Summary
{{ hold.pasteMsg }}
{{ hold.simNote }}
🎯
{{ hold.idleMsg }}
Querying bid snapshot… (service may take a few seconds to wake up)
⚠️
{{ hold.errorMsg }}
🚫
{{ hold.pilotName }} is listed as a No Bidder
They aren't bidding this period — try the most-junior bidding captain.
{{ hold.pilotName }}
{{ hold.pilotMeta }}
{{ hold.seniorCount }}
senior bid
{{ hold.holdCount }}
can hold
Projected award:
Line {{ hold.myLine }}
{{ hold.stamp }}
{{ hold.listLabel }}
clear of conflicts hits a conflict
Type
No holdable lines match the selected types.
{{ hold.emptyMsg }}
My bid order
{{ bidCount }} lines · {{ bidSelCount }} selected {{ bidMsg }}
Move under line
Select type
Pri
Line
Type
Cred
drag · move
Your bid order is empty. Add lines below, paste a bid string, or seed from your holdable lines.
{{ r.pri }}
{{ r.holdMark }}{{ r.line }}
📝{{ r.type }}
{{ r.credit }}
Add lines
Bid string
Space-separated line numbers, ready to paste into Schedule Bid. Block bids use the = sign (e.g. 7=10).
Collapsed (block format): {{ bidExportBlocks }}
Paste / import bid string
Bid Board — live snapshot
One snapshot shows every captain's status and projected award. Pull it once, then optionally deep-scan each pilot's full bid list.
Key: 1 wk vacation · ★★ 2 wks — their awarded trips drop to VTO those weeks
{{ s.value }}
{{ s.label }}
Pulling bid snapshot…
{{ boardErrorMsg }}
📋
Pull the snapshot to build the bid board
Deep scan — each pilot's full bid list
Calls every pilot's GEMS in seniority order and caches their bid-order list. Slow (the service wakes per call); runs in the background and resumes from cache. {{ scannedCount }} cached.
{{ scanLabel }}
{{ scanLabel }}
{{ boardCountLabel }}
Sen #
Name
Status
Proj. Line
Choice
{{ r.pos }}
{{ r.name }} {{ r.vacStars }}
{{ r.status }}
{{ r.projLine }}
{{ r.choice }}
Bid transition timeline
From the {{ bdPeriodLabel }} cover letter · times exactly as printed, in domicile local time{{ bdQcNote }}
Period showing {{ bdSrcPacket }} — no cover letter on file for your packet this period
No timeline data found for this packet.
{{ day.label }} {{ day.badge }}
{{ r.mark }}
{{ r.time }}
{{ r.event }}
Export to your calendar
Tick the events you care about, download the .ics, then import it into Google Calendar, Apple Calendar or Outlook.
{{ bdSelCount }} of {{ bdTotal }} events selected
Categories
{{ l.label }}
Timed events export with their local-domicile clock time (1 hr blocks); events without a published time export as all-day.
Add a bid package
Drop the whole bid period at once — a .zip straight from BidPro, or loose .BP packets, cover letters, BidLinePrint and PacketPrint PDFs and seniority lists. Archives are unpacked and everything is identified and parsed on this device; recognised files go in automatically, anything unclear waits for you.
Drop bid package files here
.ZIP · .BP · .PDF · .TXT — drop the whole archive and it unpacks itself
Reading files… large packets take a few seconds each.
File
Detected as
Packet
What was read
Status
{{ r.name }}
{{ r.sizeKb }}
{{ r.kind }}
{{ r.ident }}
{{ r.detail }}
{{ r.err }}
{{ r.statusLabel }}
Extraction inspector
{{ insName }}
Page {{ insPage }} / {{ insPages }}
{{ l.label }}
Nothing loaded
Go to Ingest, drop a PDF, then press Inspect on its row.
Every piece of text the reader found is boxed on the page, coloured by what the parser did with it.
{{ insErr }}
Rendering page…
{{ insImgNode }}
Selected text
{{ insSelText }}
role: {{ insSelRole }} · {{ insSelPos }}
Click any box on the page to read exactly what the extractor captured there.
Parsed from this page
{{ insEventCount }} events · click one to find it on the page
{{ e.date }}
{{ e.time }}
{{ e.event }}
Live bid period
Crew are seeing {{ dcActiveLabel }}
Promoting a period points every crewmember at it and marks the previous one as archive. A period only becomes promotable once its .BP packets are loaded — cover letters alone aren’t enough to bid.
{{ p.label }}
{{ p.state }}
{{ p.detail }}
Global
Seniority list
One list covers every fleet and domicile. The app always uses the most current one it holds — upload a newer PDF or paste the text and it takes over automatically.
In use
{{ dcSenActive }}
{{ dcSenCount }} crewmembers
{{ s.asOf }}
in use
{{ s.source }}
{{ s.count }}
{{ s.origin }}
By fleet & domicile
What source material is on file for each bid period
{{ dcHave }}/{{ dcCells }} on file
Fleet / domicile
{{ c.label }}
{{ r.dom }} {{ r.eqp }}
{{ r.fleetName }}
★ YOUR PACKET
{{ c.mark }}
{{ c.detail }}
on file and parsed on file, not parsed (reference only) not supplied A .BP holds both trips and lines, so one file satisfies two columns.
No inventory data loaded.
Packet quality control
Cross-checks the machine-readable .BP data against itself (declared duty-day counts vs the built calendar) and, for SDF 757, against the printed PDF bid-line grid.
⬆ This packet came from your upload {{ auditSrcName }} — stored only in this browser.
{{ c.label }}
{{ c.value }}
{{ c.sub }}
Loading the PDF-parsed grid for cross-check…
.BP vs printed PDF grid — cell-by-cell
The .BP is the bidding system's own data feed and is treated as authoritative; "PDF-only" rows are usually artifacts of reading the printed grid (evening cells were the known weak spot).
{{ c.value }}
{{ c.label }}
Line
Date
PDF grid
.BP packet
Reading
{{ r.line }}
{{ r.date }}
{{ r.pdf }}
{{ r.bp }}
{{ r.verdict }}
Internal consistency findings
{{ auditIssueCount }}
✓ Every line's calendar matches its declared duty-day counts.
{{ i.line }}
{{ i.kind }}
{{ i.detail }}
Vacations this bid period
{{ vacPilotCount }} pilots · {{ vacTotalWeeks }} weeks
{{ w.n }}
{{ w.label }}
Pilot
{{ h.label }}
#{{ r.sen }} {{ r.name }}
Short-term training (STT)
Recurrent class options on a time-of-day calendar · {{ sttCount }} options · multiple options per day shown side-by-side, labeled by bid #
⧗ Class dates — pending data ingest
🎓 Training bid builder
{{ tbMineNote }}
{{ tbSimNote }}
In Crew Applications open View Bid Summary, select the whole page (Ctrl+A), copy (Ctrl+C), and paste here. The schedule, system and training sections are all read — training updates this page; the rest is saved for future features.
Overlay line {{ tbOvLabel }}
Sort
{{ tbSelCount }} {{ tbSelNote }}
Move in bid
My training bid check options below and hit + Add to bid — they're added in the order shown {{ o.label }}
Paste into “Current Short Term Training Bid List” {{ tbBlocksHelp }}
Spaces between each bid number; for block bids use the equal sign (their example: 3000=3020) — block form is only offered where your picks cover every posted bid between the endpoints, so it means exactly the same list. Hit Submit only once.
{{ tbMsg }}
{{ tbMsg }}
{{ r.selMark }}
{{ r.bidLabel }}
{{ r.loc }}
{{ r.rank }}
{{ d.t }}
{{ r.holdT }} {{ c.t }}
Rules applied: 12:00 rest before training after a domestic duty period · 48:00 after international (Art 10.C.2) · 12:00 from training release to any other duty (Art 10.C.10) · STT awarded in seniority order (Art 13.D.8) · STT on your days off ≈ 4:00 credit per training day (Art 11.G.1.b / 13.D.11.b). Rest checks are estimates from scheduled times — verify tight ones against your actual release.
{{ g.title }}
{{ g.count }}
{{ g.qcBadge }}
from the 26-06 cover letter
Crewmembers
{{ r.sen }}{{ r.name }}{{ r.dom }}{{ r.gems }}
Class dates available to bid
BidLocClass days (all days shown)
{{ b.bid }}{{ b.loc }}{{ d.t }}
{{ wk.label }}
{{ hr.label }}
{{ d.dow }} {{ d.num }}
{{ it.bid }}
{{ it.prog }}
{{ it.sub }}
Your VOR position
{{ vbMyRank }}
Projected award
{{ vbMyAward }}
{{ vbGuarantee }}
{{ vbNoBidAbove }}
{{ vbMyNote }}
Log in with your GEMS # (top right) to highlight your row, project your award, and light up hold dots on the Lines and Calendar tabs.
VOR bidders
Awarded a VTOR line ({{vbCatRange}}) in the main bid — scanned from the snapshot, ranked by seniority
{{ vbCount }}
Scanning the bid snapshot…
{{ vbErrorText }}
No VOR bidders known yet
Run the deep scan below — it is what builds this list. “Rescan snapshot” only pulls the fleet-wide table, which often does not cover every VTOR line. Pasting your Schedule Bid Summary on the right also seeds it.
#
Sen
Pilot
GEMS
Main line
Current VOR bid
Proj. award
{{ r.rank }}
{{ r.sen }}
{{ r.name }}YOU
{{ r.sub }}
{{ r.gems }}
{{ r.mainLine }}
no bid yet PLANNED {{ b.n }}
{{ r.award }}
{{ vbUnfilledNote }}
{{ vbScanLabel }}
Checks juniors first, one pilot at a time · results cached · found bidders drop in live
My VOR bid
{{ vbMyBidCount }}
The projection uses this list — same bid as the Bid Order tab. First open choice at your turn = your projected award.
{{ b.label }}
No choices yet — the projection can't place you. Enter your bid below, in the order you want the lines.
Upload current bids
Open the Schedule Bid Summary page in Crew Applications, select the whole page (Ctrl/Cmd‑A), copy, and paste here. Text paste beats a screenshot — no OCR errors, exact GEMS and choices.
{{ vbPasteMsg }}
{{ vbMetaText }}
Line status
{{ vbOpenCount }} open
On current bids — click a line to open it
{{ c.n }}
{{ c.tag }}
yours taken in senior bids open
No VTO line report published for this bid period. Once the VTO Line Report PDFs are parsed and published, this context gets Lines, Calendar, Bid Order and What can I hold — exactly like VOR.
VTO pool — awarded in the main bid
Pilots holding a VTO line ({{vtCatRange}}), scanned from the snapshot. These crewmembers bid the VTO portion.
{{ vtCount }}
Scanning the bid snapshot…
{{ vtErrorText }}
No VTO winners in the snapshot yet — hit “Rescan snapshot”.
#
Sen
Pilot
GEMS
Awarded
{{ r.rank }}
{{ r.sen }}
{{ r.name }}YOU
{{ r.gems }}
{{ r.line }}
Seniority list: {{ senProvenance }}
{{ senCountLabel }}
{{ r.pos }}
{{ r.sen }}
{{ r.name }} NB JR BIDDER
{{ r.gems }}
{{ r.doh }}
{{ r.dob }}
{{ r.retire }}
Climb projection
Log in with your GEMS (top right) or search above to pick a pilot.
Position
{{ projPosLabel }}
your login
Percentile
{{ projPct }}
of SDF 757 CPT
Age-65 date
{{ projRetire }}
{{ projName }}
Next retirement ahead
{{ projNext }}
{{ projNextSub }}
Projected position — retirements at 65, month by month
{{ yl.label }}
{{ xl.label }}
{{ projModelNote }}
Milestones
{{ ms.thr }}
{{ ms.when }}
{{ ms.sub }}
Retirement wave ahead
{{ projAheadCount }} captains ahead age out before this pilot does
{{ w.year }}
{{ w.count }}
{{ w.pos }}
year · retirements ahead · position at year end
Master seniority list — all fleets & domiciles
as of {{ msAsOf }}
System-wide list, currently the one dated {{ msAsOf }}. When a fleet/domicile/seat is set up for bidding, its group here seeds that bid’s starting seniority list.
{{ msCountLabel }}
Sen#
Pos
Name
GEMS
Dom / Eqp / Seat
DOH
DOB
Retire 65
{{ r.sen }}
{{ r.pos }}
{{ r.name }} NB
{{ r.gems }}
{{ r.grp }}
{{ r.doh }}
{{ r.dob }}
{{ r.retire }}
Showing the first 800 — search or pick a group above to narrow.
{{ stName }}
{{ stGems }}
{{ stGroup }} your login
System seniority {{ stSen }} · age-65 date {{ stRet }} ({{ stRetYrs }}) · list as of {{ msAsOf }}
Log in with your GEMS (top right) or search above — the relative-standing sections need a pilot. The retirement charts below work either way.
System seniority
{{ stSysRank }} {{ stSysTotal }}
{{ stSysSub }}
Among captains
{{ stCptRank }} {{ stCptTotal }}
{{ stCptSub }}
F/Os senior to you
{{ stFoN }} {{ stFoTotal }}
{{ stFoSub }}
F/Os bypassing upgrade
{{ stBypass }}
senior to the system junior captain, still in the right seat
{{ stJrCpt }}
Relative seniority by fleet & domicile
Δ = junior captain’s seniority number − yours · positive means you could hold captain there today
Fleet
CPTs senior to you
Jr CPT
Δ hold CPT
F/Os senior to you
F/Os bypassing
{{ r.fleet }}YOU
{{ r.cptRank }}{{ r.cptPct }}
{{ r.jrSen }}
{{ r.dlLabel }}
{{ r.dlSub }}
{{ r.foSr }}{{ r.foPct }}
{{ r.byp }}
Bypass = F/Os in that fleet senior to that fleet’s junior captain. Hover a Jr CPT number for the name. Holding captain also requires a vacancy bid — Δ measures pure seniority.
Retirement-age model
{{ retModelNote }}
{{ pjTitle }}
{{ yl.label }}
{{ xl.label }}
{{ pjNote }}
Retirement math
Pilots senior to you
{{ pjSrTot }}
Half of them gone by
{{ pjHalfSr }}
Your rank in 5 yrs
{{ pj5 }}
{{ pj5Sub }}
Your rank in 10 yrs
{{ pj10 }}
{{ pj10Sub }}
Top 1,000 by
{{ pjT1k }}
Top half of the list by
{{ pjHalf }}
Peak retirement year
{{ retPeak }}
Mandatory retirements by year
Captains First officers senior to you
next 5 yrs: {{ retNext5 }} (avg {{ retAvg5 }}/yr) next 10: {{ retNext10 }} (avg {{ retAvg10 }}/yr) next 20: {{ retNext20 }} (avg {{ retAvg20 }}/yr)
Click a year’s bar (or pick below) to list who goes that year. Hover for the split.
{{ retYearCount }}
Retires
Sen#
Name
GEMS
Fleet / Seat
DOH
{{ r.mo }}
{{ r.sen }}
{{ r.name }}
{{ r.gems }}
{{ r.grp }}
{{ r.doh }}
SENIOR
Age demographics
avg CPT {{ ageAvgCpt }} · avg F/O {{ ageAvgFo }}
{{ b.label }}
Brown = captains, gold = first officers · hover a bucket for counts. The 55–64 bulge is the retirement wave.
Context & cross-check
This list (as of {{ msAsOf }}): {{ ctxCounts }}. The IPA analysis site you screenshotted ran the 05/01/26 list (3,395 pilots) — small differences are retirements and new hires between publish dates.
Age 65 is federal law (FAA Part 121 mandatory retirement), so the “worst case” model is a hard ceiling — actual departures usually run earlier, between 62 and 65.
MD-11 wind-down: {{ ctxM1f }} pilots on this list still hold M1F seats. The MD-11 fleet was retired in early 2026 and those crewmembers are being retraining those crews onto 767/A300/747 — expect displacement bids to reshuffle relative seniority in every fleet, mostly in your favor if you hold a seat.
Model caveat: projections ignore future hiring, fleet growth or shrink, buyouts, and medical/early retirements — seniority-number projections are conservative; percentile projections depend on staffing levels.
Crew Scheduling — main line (VRU)
1-800-228-2739
757 SDF → 4 · 1 · 4
Future / Sched. Adjust. → 4 · 2
Chief Pilot (System) → 8 · 7
{{ g.title }}{{ g.count }}
{{ e.name }}
{{ e.sub }}
{{ e.vru }} {{ e.phone }}
Trip {{ popup.id }}
Report {{ popup.report }}
Lines {{ popup.lines }}
{{ popup.navLabel }}
Day
DH
Flt
Eqp
Dep
Arr
TOG
Lay
Blk
Duty
Cr
Cat
{{ r.dayLabel }}
{{ r.dh }}
{{ r.flt }}
{{ r.eqp }}
{{ r.dep }}
{{ r.arr }}
{{ r.tog }}
{{ r.lay }}
{{ r.blk }}
{{ r.duty }}
{{ r.cr }}
{{ r.cat }}
Credit {{ popup.credit }}
Block {{ popup.block }}
Ldgs {{ popup.ldgs }}
TAFB {{ popup.tafb }}
Per-diem {{ popup.perDiemD }}
Crew {{ popup.crew }}