Transparency Report

Here is exactly how your score is built.

Most “chance me” tools hand you a number and a shrug. We think you deserve better. Below is the real engine — every formula, every weight, every shortcut and every thing we don’t know. Nothing here is pseudo-mathematical fog. If a part is uncertain, we say so.

Our promise: the math on this page is the math in the code. We would rather show you an honest “we’re not sure” than a confident lie dressed up as a probability.

How the score works

AdmitGPT computes one number per college: P(admit), a value between 0 and 1. It is built from five pieces added together on a log-odds scale, then squashed back into a probability. That is the whole idea — not a mystery, an addition.

1Academic strength (Z-scores)

We place you on a bell curve against the college’s own admitted class — and against a clean US 4.0 reference, not the raw mixed-scale corpus mean (that older bug mapped a 2.90 GPA onto a positive Z and inflated everyone).

SAT_Z = (YourSAT − CollegeSATmean) / σcollegeσcollege = (SAT75 − SAT25) / 1.35 // IQR-based; fallback ±100 pts if no college SAT data → SAT_Z = nullGPA_Z = (YourGPA_4.0 − μref) / σrefμref, σref from computeGpaReference(): the corpus’s 4.0-plausible subset (raw GPA in [0, 4.3]), σ floored at 0.50 international non-standard GPA gets +0.4 if below ref (or +2.0 for Game Makers)Academic_Z = SAT_Z present ? 0.55·SAT_Z + 0.45·GPA_Z : GPA_Z − 0.20 // test-optional uncertainty penalty clamp(Academic_Z, [−4, 4])

2The “spike” (extracurriculars & awards)

Each activity is scored on six dimensions, then everything is combined with diminishing returns so one mega-achievement can’t run away with the score. Self-reported, unverifiable claims are downgraded one notch so you can’t invent a spike.

itemBase = W × T × R × P × D × V W = tier points (Game Maker 9, Outlier 7, T1 5, T2 3, T3 1.5) T = tier-level multiplier R = rarity factor P = institutional strength D = cognitive load V = validation weightitemContribution = ( itemBase > 10 ? 10 + 2·ln(1 + itemBase−10) : itemBase ) × C C = clamp(confidence/100, 0, 1)S = Σ(itemContribution) / 5.5 // scaled, caps per tier still enforced + diversityBonus (breadth across categories, up to +3.5) + depthBonus (repeat high-tier in one field, up to +1.5)

3Protocol selection

Your profile is tagged by what kind of applicant you are. This only changes how much weight the spike gets — never the formulas above.

Game Maker → spike weight 0.175 (academics 0.10, or 0.40 if academically weak) Outlier → spike weight 0.140 (academics 0.65, or 1.00 if weak) Standard → spike weight 0.110 (academics 0.90) International & weak academics → ×1.25 boost on spike weight

4Verification discount

A spike you can’t prove keeps a floor of its weight. Anything externally vouched (peer, institution, or professional audit) lifts it back toward full.

verifiedShare = verifiedItems / totalItems (0 if no items)verifiedMult = VERIFIED_SPIKE_FLOOR + (1 − FLOOR)·verifiedShare FLOOR = 0.6 → an all-self-reported profile keeps 60% of its spike weight

5Major & international fit

If past applicants to this college in your intended major were admitted at a very different rate than the overall pool, we nudge the score. International applicants at colleges that rarely admit non-residents get a small penalty.

majorMod = ( (majorRate / overallRate) − 1 ) × 0.5 // centred on 0intlMod = ( (nonResidentRate / 0.10) × 0.1 − 0.3 ) × isInternational

6The master formula

Everything is added on the log-odds scale, then passed through a logistic (sigmoid) curve. This is the standard, literature-grounded way to model admission probability (Giani & Walling 2020; Lee, Kizilcec & Joachims 2023). The spike is hard-capped so a single achievement can never overpower weak grades.

baseLogit = ln( rate / (1 − rate) )academicTerm = 1.5 × clamp(Academic_Z, [−4, 4])spikeTerm = clamp( S × spikeWeight × verifiedMult, [−2.0, 2.0] )majorMod, intlMod as abovecombinedLogit = baseLogit + academicTerm + spikeTerm + majorMod + intlModcalibratedLogit = 1.0 × combinedLogit + 0.0 // placeholder; see note belowP(admit) = 1 / (1 + e−calibratedLogit)

Honest footnote on calibration: the final step is a pass-through today.CALIB_SLOPE = 1.0 and CALIB_INTERCEPT = 0.0, so the output is the raw additive logit, not a calibrated probability. We deliberately rejected Platt scaling because our corpus is a positively-selected cohort (students who applied to selective schools), not a random sample. Standard calibration on non-random samples produces misleadingly confident probabilities. We report the output as an exploratory ordinal signal — a relative ranking you can trust more than the exact percentage.

Does it actually work?

We validated the engine against held-out profiles from our own corpus. The short version: the ranking is solid (AUC ≈ 0.74, meaning it correctly orders “got in” vs “rejected” about three times out of four), and the spike improves calibration (Brier −3.7%) but the exact percentage at the very top is shaky. We’re not going to pretend otherwise.

By school tier (held-out)

TierPredictedObserved
Reach (top decile of your list)46.2%63.2%✗ off
Match (middle 60%)33.0%31.0%✓ close
Safety (bottom 30%)89.1%93.8%✓ close

By admission-rate decile (the honesty test)

DecilePredictedObserved
1 (safest)0.9720.967
30.900.92
50.780.80
70.580.61
90.340.36
10 (most selective)0.0150.231✗ miscalibrated

Notice decile 10: we predict 1.5%, reality is 23.1%. At the most selective schools, our model under-confidently shrinks toward zero. That is a known limitation of training on a corpus where “got into Harvard” is rare. Take any single-digit percentage here as “very hard, but the true odds are higher than this says.”

What this number is not

  • Not an official probability. It is an exploratory, ordinal signal from one student corpus — not a calibrated likelihood and not affiliated with any college.
  • Not a guarantee. Admissions involve essays, fit, luck, and factors we don’t model. Use it to strategize, not to decide your worth.
  • Biased by its data. Our corpus skews toward a certain kind of high-achieving, internationally-minded applicant. Results for under-represented profiles are less reliable.
  • Narrow by design. It only scores schools already in our dataset. A school with no data simply can’t be scored honestly.

Where the data comes from

We are careful to only claim what we can point to.

  • Student outcomesstudentsdata.json: 1,122 self-reported profiles (2017–2023), 692 with an acceptance and 212 with a rejection. Crowd-sourced; noisy by nature.
  • College statscollegesdata.json: 6,273 institutions, primarily from the U.S. Department of Education College Scorecard.
  • Academic modeling basis — Giani & Walling (2020), Journal of College Access; Lee, Kizilcec & Joachims (2023), arXiv:2302.03610.

We deliberately removed earlier citations we could not verify (an “AdmitMatch technical guide”, a “College Board placement methodology”, and a vague “Fan et al.”). If we can’t link it, we don’t cite it.

Try AdmitGPTVerify a profileRead the source