Skip to content

Estimated Incremental Applications

How many extra applications did paid digital media help generate — above what we would have gotten without it?

In every year we can fully measure, students who saw our paid media applied at roughly two to three times the rate of students who did not. This page estimates how many of those applications paid media is responsible for.

Paid media’s contribution grew every year as investment scaled — from an estimated 159 extra applications in FY2023 to 559 in FY2025.

Fiscal YearStudents Who Saw PaidTheir Apply RateEveryone Else’s RateExtra Applications
20231,55719.5%9.3%159
20241,73436.5%13.6%397
20252,71128.2%7.6%559
2026 (in progress)4,20317.9% (see note)5.5%522*

Paid media works, and it’s working better than ever. Every year we can fully measure, paid-exposed students apply at 2–3x the rate of everyone else — adding hundreds of applications a year, up to 559 in FY2025. FY2026 looks softer at a glance only because a new vendor’s students joined too recently to have applied yet. On an apples-to-apples basis, FY2026 paid media is our strongest year. Don’t judge the newest investment on a half-finished scoreboard.

This metric translates paid media into the language that matters to a board: applications, not impressions or clicks. It answers one question directly — how many applications would we lose if we stopped spending?

Two things make the case stronger over time:

  • The gap is widening. Students who see paid media apply at 2–3x the rate of those who don’t, and that multiple has grown as the general apply rate softened under the new application fee.
  • The newest dollars are still maturing. The FY2026 EDDY investment hasn’t had time to show its full return. As those students decide, both the paid apply rate and the estimated extra applications should rise.

Natural next steps for this metric:

  • Cost per extra application
  • Cost per extra enrollment
  • Extra net tuition revenue generated

Each person is classified as paid_exposed or not_exposed based on whether they have a paid_exposed tag in person_tags. Persons are grouped by fiscal year based on their created_at date using the July 1 cutoff.

Application rates are calculated for each group per fiscal year. The incremental rate is the difference between the paid and non-paid rates. Estimated incremental applications is that incremental rate applied to the paid applicant count:

estimated_incremental_applications = paid_applicants × (incremental_rate / paid_rate)

This formula asks: of the paid applicants we observed, how many applied at a rate above the non-paid baseline? It does not assume all paid applicants were influenced — only the portion above what the background rate would predict.

CREATE OR REPLACE TABLE paid_exposure_application_lift AS
WITH paid AS (
SELECT
person_id,
MIN(tag_date) AS first_paid_at
FROM person_tags
WHERE tag_type = 'paid_exposed'
GROUP BY person_id
),
applied AS (
SELECT
person_id,
MIN(tag_date) AS applied_at
FROM person_tags
WHERE tag_type = 'applied'
AND tag_value = 'Yes'
GROUP BY person_id
),
people AS (
SELECT
pd.person_id,
pd.fiscal_year,
CASE
WHEN paid.person_id IS NOT NULL THEN 'paid_exposed'
ELSE 'not_exposed'
END AS exposure_group,
applied.applied_at
FROM persons_dashboard pd
LEFT JOIN paid
ON pd.person_id = paid.person_id
LEFT JOIN applied
ON pd.person_id = applied.person_id
),
aggregated AS (
SELECT
fiscal_year,
exposure_group,
COUNT(DISTINCT person_id) AS people,
COUNT(DISTINCT CASE
WHEN applied_at IS NOT NULL
THEN person_id
END) AS applicants,
COUNT(DISTINCT CASE
WHEN applied_at IS NOT NULL
THEN person_id
END) * 1.0
/
COUNT(DISTINCT person_id) AS application_rate
FROM people
GROUP BY 1,2
),
pivoted AS (
SELECT
fiscal_year,
MAX(CASE
WHEN exposure_group = 'paid_exposed'
THEN people
END) AS paid_people,
MAX(CASE
WHEN exposure_group = 'paid_exposed'
THEN applicants
END) AS paid_applicants,
MAX(CASE
WHEN exposure_group = 'paid_exposed'
THEN application_rate
END) AS paid_rate,
MAX(CASE
WHEN exposure_group = 'not_exposed'
THEN people
END) AS non_paid_people,
MAX(CASE
WHEN exposure_group = 'not_exposed'
THEN applicants
END) AS non_paid_applicants,
MAX(CASE
WHEN exposure_group = 'not_exposed'
THEN application_rate
END) AS non_paid_rate
FROM aggregated
GROUP BY fiscal_year
)
SELECT
fiscal_year,
paid_people,
paid_applicants,
ROUND(paid_rate, 3) AS paid_rate,
non_paid_people,
non_paid_applicants,
ROUND(non_paid_rate, 3) AS non_paid_rate,
ROUND(
paid_rate / NULLIF(non_paid_rate, 0),
2
) AS lift_ratio,
ROUND(
paid_rate - non_paid_rate,
3
) AS incremental_rate,
ROUND(
paid_applicants
* (
(paid_rate - non_paid_rate)
/ NULLIF(paid_rate, 0)
),
0
) AS estimated_incremental_applications
FROM pivoted
WHERE fiscal_year::INT IN(2023, 2024, 2025, 2026)
ORDER BY fiscal_year;