Inspect eight eligible, six submitted, three reviewed, and two accepted sample IDs, with each count derived from the displayed stage memberships. Rate buttons switch previous-stage versus original-cohort ratios while count-based bar widths stay fixed. Separate source revisions expose an out-of-cohort ID, a stage increase, known empty sets and missing membership without silently repairing the source.

Start with one eight-person practice cohort
Practice cohort V1 uses fictional IDs S1 through S8. These are sample memberships, with no actual application or admission decisions behind them.
| Stage, in process order | Fictional member IDs | Count |
|---|---|---|
| Eligible | S1–S8 | 8 |
| Submitted | S1–S6 | 6 |
| Reviewed | S1–S3 | 3 |
| Accepted | S1–S2 | 2 |
All later sets belong to the earlier sets. S1 is eligible, submitted, reviewed, and accepted. S8 is eligible only. These statements describe the authored sample; they are not assessments of real people.
Keep a maintained cohort worksheet with one row per ID and four stage-membership fields. Include source revision and the same observation window for every stage. The chart and worksheet must refer to the same revision. Mixing last month's eligible population with this week's accepted population would produce a different calculation, even if the bars happened to decrease.
Microsoft describes funnel charts as stage-based process values and recommends stage and value columns. Here, explicit membership sets let you check whether the stage counts refer to the same cohort. Microsoft's funnel chart guidance
Put both rate questions beside the counts
Use the immediately preceding stage for stage-to-stage retention. Use the eligible cohort for original-cohort retention. Keep the numerator and denominator readable.
| Stage | Count | From previous stage | From original cohort |
|---|---|---|---|
| Eligible | 8 | Not applicable: no prior stage | 8 / 8 = 100% |
| Submitted | 6 | 6 / 8 = 75% | 6 / 8 = 75% |
| Reviewed | 3 | 3 / 6 = 50% | 3 / 8 = 37.5% |
| Accepted | 2 | 2 / 3 ≈ 66.7% | 2 / 8 = 25% |
Round only the displayed percentage. Keep the counts and exact ratio available so a reader can see why two-thirds appears as 66.7%.
Do not add the counts and use 19 as the denominator. The sum 8 + 6 + 3 + 2 counts stage memberships. It does not create 19 distinct people. The accepted share of this cohort is 2 / 8, or 25%; 2 / 19 answers neither retention question.
Choose From previous stage or From original cohort to change the rate question. The heading and ratios change, while stage order, membership, counts, and bar widths stay the same.
Scale the widths by counts
The chart uses centered rectangles of equal height. The eligible bar takes the full available width; the next bars use 75%, 37.5%, and 25% of that width, corresponding to 6 / 8, 3 / 8, and 2 / 8.
Read each bar's width as a share of the eligible count. Labels remain outside the rectangles, including the narrow accepted bar.
The accepted bar remains one-quarter of the eligible width in both rate views. Switching to “From previous stage” changes its rate to approximately 66.7%; widening the accepted bar to 66.7% of the original width would silently change the visual meaning.
Read the stage labels and rate records alongside the bars. Each record names its stage, count, numerator, and denominator, so the narrow accepted bar does not have to hold all of its explanatory text.
Inspect a source revision
V2 puts S9 in Reviewed while leaving its count at 3; the subset check holds the chart and identifies the outside ID. V3 makes Accepted contain S4 although Reviewed ends at S3, also holding the complete funnel. Decreasing counts alone would not establish a coherent cohort.
V4 makes Reviewed and Accepted known empty. Accepted from the previous stage is undefined 0/0, while from the original cohort it is 0 / 8 = 0%. V5 has all known-empty sets and no division-based widths. V6 marks Reviewed missing, so its count is unknown and retention output is withheld. Missing is not zero. Reset returns to V1 and original-cohort rates; it edits no real records.
Copy a prompt for this example
Create a single self-contained HTML funnel inspector with embedded CSS and JavaScript. Use centered equal-height bars, labels outside the bars, readable rate records, source-membership text, and version buttons.
Use Practice cohort V1. Eligible contains S1 through S8; Submitted contains S1 through S6; Reviewed contains S1 through S3; Accepted contains S1 and S2. Derive counts of 8, 6, 3, and 2 from these sets.
Provide From original cohort and From previous stage buttons. Original-cohort rates are 100%, 75%, 37.5%, and 25%. Previous-stage rates are not applicable, 75%, 50%, and approximately 66.7%. Show numerator and denominator with each percentage. Keep bar widths fixed at 100%, 75%, 37.5%, and 25% of eligible width in either view.
Provide five additional source versions. V2 changes Reviewed to S1, S2, S9; identify S9 as outside Submitted and withhold the chart and rates. V3 changes Accepted to S1 through S4; withhold the incoherent funnel. V4 makes Reviewed and Accepted known empty; distinguish undefined 0/0 from 0/8. V5 makes every set known empty, with no divided bar widths. V6 makes Reviewed missing, with an unknown count and withheld rates.
Preserve the supplied memberships and show issues instead of repairing them silently. Reset restores V1 and original-cohort rates. Keep the cohort fictional and avoid claims about why counts dropped. Return only the complete HTML file.
For a denominator review, NOS can display this prepared HTML cohort chart. Switch the accepted rate from 2 / 8 to 2 / 3 while watching its width remain 25% of the eligible count, then trace any real source mismatch in the maintained cohort worksheet.