Methodology

How we score programs

This guide summarizes the data inputs and ranking logic that power the Programs experience. It is written for a broad audience—no advanced math required.

What’s covered

The program rankings highlight degree programs reported through the federal Classification of Instructional Programs (CIP) taxonomy. We currently cover associate (level 2), bachelor’s (level 3), and master’s (level 5) programs in the latest dataset shared by our partners.

Baseline economics

Azimuth’s program ROI now benchmarks every credential against the question “What if a student didn’t enroll?” We still anchor earnings to College Scorecard’s highest-credential, two-year median measure (EARN_MDN_HI_2YR), but we tier the opportunity cost by credential level:

  • Associate and bachelor’s programs are judged against the national high-school baseline (a ten-year cumulative wage opportunity of roughly \$300k).
  • Master’s programs use the national bachelor baseline (about \$528k over ten years).
  • Other credentials continue to rely on the institutional net-price proxy when complementary earnings data would otherwise be suppressed.

The ROI we publish is the ten-year incremental earnings surplus divided by the appropriate baseline cost. Negative scores indicate programs that currently trail their opportunity cost.

What the scores mean

Program rankings flow from gold_program_mobility_scores. Each row includes four main metrics plus their percentile indices (1–99) and ranks:

  • Return – the raw opportunity-cost ROI (return_score,return_index_1_99, rank_aggregate_return).
  • Program Size – cohort proxy (completions_3yr_avg,program_size_index_1_99).
  • Aggregate Return – the combined return and size signal (aggregate_return_index_1_99).
  • Mobility Return – aggregate return adjusted by the institution’s mobility scalar (mobility_score, mobility_adjusted_aggregate_index_1_99,rank_mobility_adjusted).

The Programs page defaults to the regular return lens, but you can flip to the mobility lens at any time to re-rank on the mobility-adjusted aggregate score.

Smarter program labels

We now ingest the official NCES CIP 2010 catalog (cip_code_lookup) and an expanded dim_cip_crosswalk, so every six-digit CIP carries a title, definition, curated “submajor” slug, and two-digit major group. Front-end callers can join on program_name (CIP6) to show human-readable names or to group programs into broader clusters (for example, computer_science_general, nursing).

Filters and search

You can narrow the list by degree level, state, or a CIP family. Filters update the URL so you can copy and share views directly. As new six-digit CIP rows flow through the API, the program selector will expose them automatically.

Data sources

Program metrics come from gold_program_mobility_scores and the supporting program score tables (silver_program_scores_cip6, gold_program_scores_unified). The API contract is published at /v3/program-rankings.

Known limitations

  • Some programs have limited reporting, especially new or very small cohorts.
  • Affordability and access measures appear only when the source feeds include them.
  • Client-side buckets (e.g., cost ranges) rely on percentile cuts that we recompute when the dataset updates.

Program Rankings API

The public API lives at https://college-rank-v2-p77zdfaenq-uc.a.run.app/v3/program-rankings. It accepts the following filters:

  • rankmobility (default) or raw.
  • cip — two-, four-, or six-digit CIP family (zero padded). The service aligns cip_level automatically.
  • degreeassociate, bachelors, masters, or other Scorecard levels.
  • state — two-letter postal abbreviation.
  • limit / offset — pagination (up to 500 rows per request).
GET /v3/program-rankings?rank=mobility&degree=bachelors&cip=1101&limit=3
{
  "meta": { "rank": "mobility", "limit": 3, "offset": 0 },
  "rows": [
    {
      "program_name": "110100",
      "institution_name": "Alabama A & M University",
      "state": "AL",
      "return_score": 0.7369,
      "mobility_score": 0.6421,
      "completions_3yr_avg": 18.4,
      "return_index_1_99": 88,
      "program_size_index_1_99": 82,
      "aggregate_return_index_1_99": 86,
      "mobility_adjusted_aggregate_index_1_99": 92,
      "rank_raw": 214,
      "rank_mobility": 131,
      "rank_aggregate_return": 95,
      "rank_mobility_adjusted": 42,
      "program_roi_proxy": 0.7369,
      "median_earnings": 52107,
      "program_cost": 300000,
      "cohort_size": 20,
      "cip_code": "110100",
      "cip_level": 6,
      "cip2": "11",
      "cip4": "1101",
      "cip6": "110100",
      "cip_title": "Computer and Information Sciences, General",
      "cip_definition": "A program that focuses on ...",
      "submajor_slug": "computer-information-sciences",
      "major_group": "Computer and Information Sciences",
      "opeid": "00100200",
      "degree_level": 3,
      "degree_level_name": "Associate"
    },
    { "...": "..." }
  ]
}

Handle nulls gracefully — median_debt, cohort_size, and some ROI fields are suppressed when the upstream feeds lack that grain.

Staying transparent

We review the methodology each release to make sure the rankings remain clear and actionable. If you have questions or suggestions, reach out through our contact channel.