Star Vetter

I built a machine that hunts for new binary stars, then tries to kill everything it finds.

An unattended agent that screens unexamined stars from NASA's TESS telescope for eclipsing binaries - statistical vetting, cross-matching against 6 catalogs, and pixel-level source confirmation. Every number on this site comes from the pipeline itself.

16,723 of 872,720 TESS targets examined (1.92%)

II

The gauntlet

Every candidate faces a series of tests. Most do not survive.

Every dot is a share of the 16,723 targets examined. Pick a stage, or let it play.

See how it works →
III

An eclipse, explained

When two stars orbit edge-on to us, each blocks the other once per orbit. A telescope sees their combined light dip twice, on a precise clock.
PrimaryBoth visibleSecondary
Primary eclipse0.780

Illustration of the general pattern, not measured data for any specific star. Every real light curve on this site plots its primary eclipse at phase 0, the same convention used here.

IV

The impostor test

A TESS pixel is 21 arcseconds wide, so a neighbour's eclipse can leak into a star's light and look exactly like a real one. Subtracting the in-eclipse image from the out-of-eclipse image shows what actually dimmed.

2,226of 2,465 candidates were not confirmed on-target here.

Out of eclipse
In eclipse
+ targetx neighbour bright enough to cause the dipo other catalogued stars

A real survivor: TIC 251898081, TESS sector 84. The dimming centroid sits 0.15 px (3.1 arcsec) from the target. The nearest catalogued neighbour bright enough to cause the dip, TIC 251898060, is 2.48 px away.

V

The survivors

239 candidates remain. Each clock is one star's light curve folded on its period and wrapped into a circle: every inward notch is an eclipse, and the hand shows where the star is in its orbit right now.
-
of 239 mid-eclipse right now

Hover a clock to see which star it is; click to open its evidence.

CleanPeriod aliasFlagged
View all 239 candidates →

Glowing ring: mid-eclipse now, approximate, from the fitted ephemeris.

VI

The sky

Every survivor at its real catalog position on the whole sky. Hover a point for its coordinates; click it to open the full evidence.
+60°+30°0°-30°-60°0h6h18h
Galactic planeMilky Way band (schematic)

Equatorial J2000, Mollweide projection: right ascension increases to the left from 0h at the centre. Click a legend entry to hide or show that group; click a point to open its evidence.

VII

The machine is still running

The pipeline keeps drawing and vetting new TESS targets on a schedule. Every number on this site comes from its latest completed run.
Latest run
Run ID
20261019-043253
Status
Completed
Runtime
55.0 min
Examined to date
16,723
Survived to date
239
View run details ↓
Run details - pipeline stages, activity and run history

The pipeline

From raw TESS data to a vetted, written-up candidate

Methods →
  1. 01
    Sample
    16,723
    Fresh TIC targets
    stratified draw
  2. 02
    Fetch
    10,807
    TESS light curves
    -5,916 no usable data
  3. 03
    Vet
    2,608
    BLS + physical gates
    -8,199 rejected
  4. 04
    Catalogs
    2,283
    0/6
    matches
    6 catalogs
    -325 already known
  5. 05
    Neighbours
    2,465
    116
    stars in cutout
    Variable neighbours
    --182 contaminated
  6. 06
    Pixel
    239
    Difference imaging
    -2,226 not confirmed
  7. 07
    Dossier
    238
    Written up
    PDF per star

Latest run

orchestrator_20261019_043253.log

#20261019-04325319 Oct 2026, 04:32Completed
16,723
sampled
10,807
usable
2,608
stat. passing
2,283
novel
2,465
pixel-checked
239
confirmed

Counts are cumulative across every run to date, as of this run.

Runtime
55.0 min
New targets
150
Stage retries
0
Runs logged
1

Latest run activity

Orchestrator decisions, as logged

  1. F5 build dossiers

    Wrote dossiers for 239 confirmed candidate(s) to data/dossiers/.

  2. F5 build dossiers

    finished OK in 0.1 min

  3. Export ML model metrics to site

    finished OK in 0.0 min

  4. Retrain ML pixel-outcome model

    Retrained the pixel-outcome model on every real pixel-check result to date, including this run's. It will be used to score next run's new novel candidates before their pixel check.

  5. Retrain ML pixel-outcome model

    finished OK in 0.1 min

  6. Rebuild ML training set

    finished OK in 0.0 min

  7. Pixel-level source check

    Pixel-check verdicts across all candidates checked to date -> OFF_TARGET: 1179, INCONCLUSIVE: 886, ON_TARGET: 239, UNRESOLVED: 161. 239 confirmed ON_TARGET (dimming centred on this star, not a neighbour). Building dossiers for those.

  8. Pixel-level source check

    finished OK in 3.6 min

  9. Score novel candidates (ML pixel-outcome model)

    Scored this batch's novel candidates with the current pixel-outcome model (trained on prior runs only, so this is a genuine held-out prediction, not the model grading its own homework). Nothing is filtered by this - proceeding to pixel-check every candidate regardless of what the model predicted.

  10. Score novel candidates (ML pixel-outcome model)

    finished OK in 0.0 min

  11. F4f novelty cross-match (pass 2 of 2, applies contamination)

    2283 detection(s) remain NOVEL after the contamination check (24 were relabelled CONTAMINATED). Escalating ALL 2283 of them to the pixel-level check - not just the strongest few by signal-to-noise. The catalog check above only catches a neighbour that is already in a known-variable catalog; it cannot see an unlisted one. Only a pixel-level difference-image check can confirm the dimming is actually centred on this star, so every survivor gets checked.

  12. F4f novelty cross-match (pass 2 of 2, applies contamination)

    finished OK in 0.1 min

  13. Neighbour contamination check

    24 novel detection(s) have a known variable neighbour close enough and bright enough to plausibly be the true source. Re-running the novelty pass so these get relabelled CONTAMINATED before anything goes to the pixel-level check.

  14. Neighbour contamination check

    finished OK in 0.3 min

Runs

From the orchestrator logs

RunStartedNewConfirmedStatusRuntime
261019-04325319 Oct 2026, 04:32150239Completed55.0 min

Confirmed = total confirmed to date when that run finished. Parsed from the orchestrator logs.