Epstein Files · ← Back to Completeness · Flight Index
This is the full methodology writeup behind the /completeness page. Status: analytical estimate, not a documented fact — read section 7 (assumptions and limitations) before quoting any number. Analysis code and estimator tables are in the research repository.

How Many Epstein Flights Appear in No Public Source? A Capture–Recapture Estimate

Status: analytical estimate, not a documented fact. Everything below is a model-based inference from the overlap structure of ~20 evidentiary sources. The assumptions of capture–recapture are all violated here to some degree; the honest deliverable is a range with stated directions of bias, not a number.

Analysis date: 2026-07-12. Inputs: network-analysis/data/flight_external.csv (34,919 records), scope-trimmed to 1991-01-01 – 2019-08-10. Outputs: capture_matrix_summary.csv, estimates.csv (this directory).


Headline

A one-sentence version that survives scrutiny: the overlap structure of the released records is consistent with several thousand flight events — a floor of roughly two to five thousand, plausibly on the order of five to fifteen thousand — that appear in no public release, concentrated in the post-2005 era and in travel booked around Epstein rather than flown on his own jets.


1. Observation unit and capture matrix

Unit: a flight event, keyed by (date, origin, destination), with tail-number conflicts splitting clusters. Airport strings were normalized through a cascade (ICAO→IATA, parenthesized codes, "X Airport" forms, a curated city-name dictionary, and a metro-area grouping: NYC = {JFK, LGA, EWR, TEB, HPN}, Palm Beach, Paris = {CDG, ORY, LBG}, USVI = {STT, LSJ, GSJ}, etc.). Three merge levels bound the key-definition uncertainty:

Key Definition Distinct flights
strict exact airport, exact date 12,857
loose (main spec) metro area, exact date 11,563
loose±1 metro area, dates within 1 day 10,692

28,755 of 31,923 in-scope records had a usable date+route. Two sources (amex_subject, 2,630 records; dojogr_tecsii, 276) contain no route information (person + date only) and are excluded from the capture matrix entirely — their flights are simply invisible to this analysis.

Lists. Sources were analyzed at three granularities: raw source (17 lists), source family (5 lists — main spec), and custodian/production (4 lists):

Family Sources What it can see
LOGBOOK epsteinexposed, carstensen, dleerdefi pilot-logbook legs of the fleet
OVERSIGHT jmail, ho_vision House Oversight release: emails + manifest/logbook pages
ESTATE_MAIL travel_sweep, scheduling_emails, fbo_emails estate (EFTA) email production
BOOKING amex_invoice, commercial_itinerary, eticket_orbitz, jetsuite, charter_confirmation commercial/charter bookings, mostly AmEx-derived
GOV dojogr_tecs, pbc_sa_manifest, deposition, dojogr_person_encounter DHS TECS border crossings, Palm Beach SA manifests, sworn testimony

2. The singleton signal

Capture–recapture logic in one line: if most observed flights were caught by only one source, the sources are sampling a much larger universe; if most were caught repeatedly, the universe is nearly exhausted. The estimate is driven by the shape of this distribution (main spec, family level):

Seen by k families 1 2 3 4
flights 8,051 (69.6%) 2,777 655 80

Nearly 70% singletons is a strong signal that the corpus has not saturated the flight universe. But two artifacts inflate singletons and must be dealt with before believing any number:

  1. Linkage failure masquerading as darkness. 2,010 clusters (17.4%) contain an airport string that could not be normalized to a code; 99.4% of those are singletons — almost certainly duplicates of flights in other records that failed to link, not new flights. All "floor" figures above exclude them; naive figures that include them run ≈30–50% higher.
  2. Under-merging across date conventions (email date vs flight date). The loose±1 key bounds this: it removes ~900 clusters (~8%).

3. Source dependence is severe — and it biases simple estimators downward

The largest pairwise overlaps are within families, i.e. between sources that are re-descriptions of the same underlying paper:

Positive dependence inflates observed overlap, which deflates N̂: simple two-source estimates on dependent pairs are lower bounds on top of lower bounds. Conversely, pairs of lists with nearly disjoint catchability domains explode upward: the BOOKING × OVERSIGHT Chapman estimate is 89,323 — not because 89k flights exist, but because commercial bookings and fleet manifests barely can see the same flights. Both failure modes are shown in estimates.csv deliberately, as calibration for how seriously to take any single pair.

The defensible pairs sit between different custodians with overlapping domains:

Pair (window, domain) Observed N̂ (95% CI) Reading
carstensen × DHS TECS (2000–15, international routes) 298 678 (523–834) the logbook missed roughly half the border-crossing legs TECS saw, and vice versa
epsteinexposed × TECS (2000–19, intl) 544 1,783 (1,358–2,208) same story, wider window
carstensen × Palm Beach SA manifests (2004–05) 245 293 (269–317) near-saturation where an official manifest exists
ESTATE_MAIL × OVERSIGHT (2006–19) 7,175 18,048 (17,068–19,028) two custodians, both email-heavy → residual dependence; read as a soft lower estimate

4. Multi-list log-linear models (the proper machinery, honestly reported)

Poisson GLMs on the 2^k−1 capture-pattern counts, fitted per era, with the all-zero cell extrapolated; model set: independence, all two-way interactions, forward-AIC selection of interaction terms, and a heterogeneity (capture-count) term; checked by deviance/df and compared by AIC (selected rows in estimates.csv).

1999–2005 (S = 1,833): independence N̂ ≈ 2,909; heterogeneity model ≈ 2,157; dependence-adjusted ≈ 14,800–16,900 (bootstrap 95% ≈ 11,700–28,100). With only 3 effective lists the dependence-adjusted model is saturated-adjacent: it fits perfectly (dev ≈ 0.4 on 1 df) and is barely identified. Era range: ≈2,200–17,000; Chao floor (parseable subset) 4,032 (3,676–4,451).

2006–2019 (S = 8,630): independence 12,183; heterogeneity 11,544; heterogeneity + two-way 46,619 (bootstrap 21,500–109,700; dev/df ≈ 5.0 — a poor fit, flagged); all-two-way 152,892 (unstable, rejected). Production-level grouping (4 custodians) gives 8,977–15,434 for the stable models. Chao floor (parseable subset) 9,152 (8,966–9,356). Era range: ≈9,200–46,600, with weight on 12,000–20,000.

Fleet-only stratum (tail-verified aircraft; the population where all of LOGBOOK, OVERSIGHT, GOV, ESTATE_MAIL genuinely could capture every flight, so heterogeneity is mildest and fits are good, dev/df 0.4–0.7): best models give 1,743–5,603 vs 1,693 observed (1999–2005) and 2,169–6,303 vs 2,014 observed (2006–2019); Chao floors 3,973 and 2,645. This is the most defensible cell in the whole analysis: even for Epstein's own aircraft, the released record is plausibly missing several hundred to a few thousand legs.

5. The 1991–1998 non-answer is a finding

For 1991–1998 the corpus contains essentially one independent custodian — the pilot logbooks (three transcriptions of them) — plus 9 government records. Family-level f₂ = 0: no flight in that era is attested by two independent custodians. Capture– recapture is mathematically silent: the dark count for the first eight years is unbounded by these data. Any flight not entered in the pilots' logbooks in the 1990s is invisible to every source we have. The pattern of what does not exist — no financial production, no border records, no manifests for an eight-year span of heavy documented activity — is itself informative about where document discovery has and has not reached.

6. Sensitivity analysis (what moves N̂ and which way)

Perturbation Effect on N̂ Direction/meaning
strict → loose → loose±1 key observed 12,857 → 11,563 → 10,692; floors move ~proportionally under-merging inflates N̂; bounded at ≈±10%
exclude unparseable-airport clusters era-3 Chao 13,472 → 9,152 the single largest artifact; floors quoted post-exclusion
drop travel_sweep era-3 Chao 13,472 → 20,828 the sweep is what connects lists; removing it shows how much the floor leans on one extraction effort
drop epsteinexposed (aggregator) era-3 Chao → 13,085 small; aggregation dependence is mostly within the LOGBOOK family
source vs family vs production lists full-span Chao 11,720 / 14,857 / 49,609 finer lists = more within-family dependence = lower floor; production level mixes disjoint domains = inflated; family level is the reasoned middle
independence → dependence terms (log-linear) N̂ rises 3–10× positive dependence hides dark flights from simple estimators; truth likely between the heterogeneity model and the two-way model

The stable ordering across every specification: heterogeneity-only < independence < Chao floor < dependence-adjusted, which is exactly the ordering theory predicts when lists are positively dependent and catchability is heterogeneous.

7. Assumptions and limitations (read before quoting any number)

  1. Closed population — violated. Sources cover different eras (logbooks 1991–2015, AmEx 2011–19, TECS 2000–19). Mitigation: all estimates era-stratified; pooled-era fits reported only as sensitivity. Residual within-era coverage drift remains.
  2. List independence — violated, direction known. Sources within a family are re-descriptions of the same documents; even across families, the estate emails discuss the same trips the AmEx statements bill. Positive dependence ⇒ simple estimators biased downward ⇒ our floors are genuinely floors. Log-linear two-way terms absorb pairwise dependence, but three-way dependence is unidentified without further assumptions — irreducible with these data.
  3. Homogeneous catchability — violated, direction known. A subpoenaed 2004 leg is far more catchable than a 2015 helicopter hop or a guest's commercial ticket. Heterogeneity ⇒ N̂ biased downward (the unseen flights are precisely the low-catchability ones). Mitigation: Chao estimators (heterogeneity-robust lower bounds) and the fleet-only stratum.
  4. Record linkage is itself inference. Merge errors move N̂ in both directions; bounded by the strict/loose/±1 grid (~±10%) plus the unparseable-string exclusion (~30–50% on naive floors — corrected in the headline figures).
  5. The estimand is conditional. Capture–recapture estimates the universe of flights catchable by at least one list in principle. It says nothing about categories no source covers: aircraft never logged anywhere, travel never booked through captured channels, movements never crossing a US border, and everything in 1991–1998 beyond the logbooks. The true total of all Epstein-network movement is strictly larger than any number here.
  6. The population is heterogeneous in kind. "Flight events" mixes fleet legs, staff and guest commercial tickets, and charters. The fleet-only stratum is the clean subset; the all-events figures should be read as "travel events within the evidentiary record's domain."
  7. ~2,900 records from route-less sources (amex_subject, dojogr_tecsii) and ~3,200 date/route-incomplete records could not enter the matrix at all.

8. Documents/Bates dimension — assessed, deferred

The production dimension (EFTA vs HOUSE_OVERSIGHT vs DOJ-OGR vs public web) was used above as a source grouping for flights. A true document-level capture–recapture (how many documents exist in no production) requires establishing that the same underlying document appears in multiple productions — content-hash or Bates-crosswalk linkage that this dataset does not contain (each record carries a single source_doc). The flight-level production overlap is suggestive: only 16 of 11,563 flights are attested by all 4 productions, and 9,956 by just one [VALIDATED: capture_matrix_summary.csv, production rows]. Building a document crosswalk (e.g., duplicate-text detection across the EFTA / HOUSE_OVERSIGHT / DOJ-OGR corpora) is the natural next step; flagged as future work.

9. Files