Students who are accepted to college in the spring and never enrol in the fall are said to have
“melted.” Programs track a handful of milestones over the summer to catch it early.
This is the tool staff opened to see where a group stood —
one row per group, one column per milestone.
Every number here is invented
520 fictional students at eight fictional schools. I rebuilt this from scratch to show
how it works; the original runs on real student records and stays where it belongs.
Scroll the table sideways for all five milestones
A blank milestone means not started, not missing data. Blank is the resting state in
the records system, so treating it as missing would quietly shrink every denominator and
inflate every rate.
“Not applicable” is excluded by default. Housing carries most of it —
a student living at home does not need it. Including those students changes the pooled rate by
several points, so the reading you are looking at is always named above the table.
The pooled column pools, it does not average. It adds completions across all five
milestones rather than averaging five rates, so a group with more eligible milestones carries
more weight. That is a real methodological choice with a real consequence, so it is stated
rather than left implicit.
“Reached” is the share with at least one successful contact logged.
Not an average number of contacts. One is the bar.
A group with nothing eligible sorts to the bottom either way. A group of zero is never
the interesting answer, so it does not get the top of the table just because a sort flipped.
What you copy is what you see. Exports follow the current sort, grouping and filters.
Why it exists
The reporting built into the records system could show these rates, but not honestly. Any
milestone can be marked not applicable for an individual student, so each milestone needs its
own denominator — and a report filter applies to the whole report rather than row by row.
The only truthful way to do it there was a separate report per milestone, which consumed almost
the entire dashboard and left no room for anything else.
Worse, none of it could be re-cut. “Show me the same rates by where students ended up
instead of by school” meant building another full set of reports, so in practice people
asked me and waited a day. Every control on this page exists to remove one of those waits.
Built with Google Apps Script and a single page, reading from a sheet. No student names or
record identifiers ever reach the browser — the server sends counts, so a forwarded link
cannot leak anything about a student. This rebuild uses invented data and no server at all.