Skip to content

Small classroom market: a saved run

Run this market yourself

A saved run of the simulator: everyone who opens it sees this same market. Simulated from the assumptions in the parameters; not a prediction of any real applicant's or program's match.

About this example

The same model in a market small enough to follow by hand: 60 applicants and 8 programs. Open any applicant or program to see every application, interview invitation, interview and rank, and how the match came out.

What to look at

  • Applicants: Follow one applicant from their applications to the match.
  • Programs: See whom a program invited, how it ranked them and who filled its positions.
  • Applications and interviews: Every application in one table, from the invitation to the match.
  • Match: Which choice each applicant got, and who was left unmatched.

This is one run of the market, with seed 2026 and model 2.1. Another seed draws other applicants and programs, so the numbers differ from run to run: run the market yourself to see by how much, or to change its parameters. The run's files are kept with the project's source code.

Summary

Market
60 × 8
Applicants per position
1.200
Match rate
83.3%
Positions filled
100.0%
Seed
2026
Matched to first choice
18.0%
Interviews per applicant
6.0
Time
4 ms
Saved
2026-10-06
Applicants
60 (generated)
Programs
8 with 50 positions (generated)

Checks passed The match is stable, within capacity and follows the rank order lists. See the match.

Which applicants get an interview and a match?

Which applicants get an interview and a match?

Every applicant counted once: whether they had at least one interview, and whether they matched. With Colour by strength on, each stage splits into five groups by strength percentile (fifths; applicants of equal strength stay in the same group), from the bottom 20% in red through the middle in grey to the top 20% in blue, and each drop-off shows which groups it holds, so the quality of the applicants can be followed through the stages. Each band's width is a number of applicants. Hover a stage or a band for its count and its share of all applicants (with the switch on, of its group) and to highlight its path; a band after the first stage also gives its share of the stage it leaves. No interview splits into never invited and invited without an interview. With the switch on, each drop-off's bar is split into the groups' colours in proportion, and the small bar beside its label shows the same mix from weaker to stronger; hover the drop-off for each group's count, its share of the drop-off and the share of the group it holds: a group that loses a larger share of its applicants does worse. Strength is the applicant's latent strength. The view all programs share is mostly strength, mixed with the applicant's attributes, and each program sees it only through its own noisy view. The funnel above counts applications instead: strong applicants hold many interviews but match only once.

Learn more in the help

Of 60 applicants, 60 had at least one interview and 50 matched (83.3%); 0 had no interview, 0 of them never invited. By strength, 50.0% of the bottom 20% matched, against 100.0% of the top 20%. The bottom 20% make up 6 of the 10 interviewed but not matched.

The numbers
WhoStrength (z)Applicants Never invitedInvited, no interview InterviewedInterviewed, not matched MatchedShare matched
Bottom 20% -3.03 to -0.90 12 0 0 12 6 6 50.0%
20th–40th percentile -0.76 to -0.27 12 0 0 12 2 10 83.3%
40th–60th percentile -0.26 to 0.10 12 0 0 12 1 11 91.7%
60th–80th percentile 0.12 to 0.93 12 0 0 12 1 11 91.7%
Top 20% 0.95 to 2.34 12 0 0 12 0 12 100.0%
All applicants 60 0 0 60 10 50 83.3%

Stages

StageStatusTimeResult
Population Finished 0 ms 60 applicants, 50 positions, 8 programs
Pre-interview Finished 1 ms 480 pairs
Applications Finished 0 ms 461 applications
Signals Finished 0 ms 0 signals
Invitations Finished 0 ms 362 interviews, 388 invitations
Interviews Finished 0 ms 362 interviews
Rank order lists Finished 0 ms 362 applicant list entries, 329 program list entries
Match Finished 1 ms 0 blocking pairs, 50 matched

Checks

How this match was checked
CheckResult
Blocking pairs: an applicant and a program that rank each other above their match 0
Programs matched to more applicants than they have positions 0
Matches that are not on both rank order lists 0
List entries without an interview 0
Rank order lists whose ranks are not exactly 1, 2, ..., k 0
Applicant list entries beyond rank 300 (the NRMP limit) 0
Both proposing sides match the same applicants and fill each program equally (rural hospitals) not run
No applicant prefers the program-proposing result (applicant optimality) not run

The last two checks run when Compare both sides proposing is on in the match settings. The engine is also checked on hundreds of random markets against an independent solver (docs/VALIDATION.md).

Parameters of this run

Show the parameters

Run

Random seed
2026

Market

Applicants
60
Applicants per position
1.2
Programs
8
Program sizes
lognormal
Mean positions per program
6.5
Program size spread
0.8

Applicants

Applicant groups
NameShareStrength meanStrength SDApplications (mean)Signals
us_md0.440.51.0NoneNone
us_do0.180.351.0NoneNone
us_img0.09-1.01.0NoneNone
non_us_img0.25-1.31.0NoneNone
other0.04-0.51.0NoneNone
Applicant attributes
AttributeCorrelation with strengthAverage weight
board_scores0.80.5
research0.50.3
honors0.60.2

Programs

Quality SD within tiers
1.0
Program attributes
AttributeCorrelation with qualityAverage weight
reputation0.90.5
program_size0.00.2
location0.00.3

Preferences

Applicant agreement
0.6
Program agreement
0.7
Taste share of personal preferences
0.5
Attribute share of the common view
0.3
Weight concentration
10.0

Information

Applicant pre-interview noise
0.5
Program pre-interview noise
0.5
Interview informativeness
0.6
Interview fit shock
0.3
Visibility effect
0.0
Shared error (halo)
0.0

Applications

Application count
negbin
Applications (mean)
30.0
Application strategy
portfolio
Reach
0.25
Target
0.5
Safety
0.25
Self-assessment error
0.5
Application dispersion
0.5
Target band
0.15

Signals

Signal allocation
realistic
Programs using signals
1.0
Signals affect rank lists
False

Invitations

Interviews per position
10.0
Invitation strategy
top_score
Invitation rounds
3
Screening attribute
blank
Screening minimum percentile
0.0
Yield protection
0.0

Interviews

Interviews per applicant (max)
12
Acceptance order
first_come

Rank order lists

Applicant rank lists
all_interviewed
Applicant list length
20
Program rank lists
dnr_quantile
Do-not-rank share
0.1
Reservation utility
-1.0

Match

Algorithm
applicant_proposing
Compare both sides proposing
False

Parameter hash 9a7b1c371c61b594274b5061dd73493be543e10452f0099c84af532ad191752c; population digest 79557f0ec40e6645eb6a48fed628defbc01cda8482418f449122fdc5f18fcfc3.