RefolkCandidates
ReferenceReading the market

The Bootcamp Outcomes Report Decoder, Metric by Metric

You will be able to read a bootcamp's outcomes page, name what each number proves, flag the inflation tactic inside it, and decide whether to trust it.

15 min readLast reviewed September 4, 2026Read as Markdown

Before you pay for a bootcamp, certificate, or retraining program, you want to know whether its advertised placement and salary numbers are real. This is the document you keep open while reading one specific outcomes page: one row per metric, what it proves, and the exact way it gets padded. Read it and you will leave knowing whether the report in front of you is honest, not which brand ranked highest.

Every ranking site tells you to "verify outcomes" and "look for third-party audits." None of them decodes the line items on the page you are actually staring at. That is the gap this fills.

What each outcomes metric actually proves

An outcomes report is a small set of numbers, and each one answers a narrow question. The trouble is that programs advertise the flattering number and let you assume it answers a broader one. Match each metric to the claim it can honestly support before you read the value.

The Council on Integrity in Results Reporting (CIRR) is a standardized reporting framework a coalition of bootcamps formed in 2016 to publish graduation and placement data in one template. Its definitions are the reference point for everything below, because they were written to close the loopholes.

MetricWhat it honestly provesWhat it cannot prove
Graduation rateShare of enrollees who finishedAnything about jobs
In-field employed rateIn-field hires divided by all graduatesThat the roles are full-time
Full-time in-field rowReal 30+ hour, 6+ month jobsNothing padded; this is the honest core
Placement windowTiming of the measurementThat the rate holds at 180 days
Median salaryMiddle base pay of respondentsPay of non-responding graduates

The single most useful number on any page is the full-time in-field row: graduates working 30 or more hours for six or more months in a role related to the training. CIRR requires schools to break "employed in-field" into exactly that row, plus a separate row for apprenticeship, internship, and contract, plus a third for short-term, part-time, and freelance. When a program collapses all three into one "employed" figure, it is hiding which row carried the weight.

The denominator: who got removed before the math

The denominator is who the rate divides by, and it is the biggest lever on the page. A 90% headline is often 90% of the 70% who stayed in the funnel, which is really a 63% cohort outcome wearing a bigger number.

The mechanism is simple. Some schools count only "job-seeking graduates" and quietly exclude anyone who did not use career services, did not apply to enough jobs, or stopped responding. If 30% of a cohort opted out of job support, removing them turns a genuine 70% success rate into a 90% headline. Some schools have omitted as much as 40% of graduates from their placement tallies.

CIRR blocks this by fixing job-seeking status before enrollment, so a graduate cannot be relabeled a non-seeker after the fact to improve the rate. The documented swing from denominator games alone is roughly 20 points, from a real 70% to a headline 90%.

40%
Share of graduates some schools omitted from placement tallies
Removing unresponsive or low-application graduates shrinks the base and inflates the surviving rate.

Sheree Speakman, a former CIRR CEO, gives the practical threshold: be suspicious of any non-job-seeking rate above 10% of the cohort. Below that, exclusions are plausible noise. Above it, the rate no longer describes the class you would be joining.

How to read a denominator honestly

  • Divide the numerator by all graduates, not by job-seekers, and recompute the rate yourself.
  • Ask when job-seeking intent was recorded. Pre-enrollment is honest; post-graduation invites relabeling.
  • Demand the cohort size. A rate with no denominator is a rate you cannot check.

A program placing 91% of 20 graduates tells a very different story from one placing 91% of 400. Always find the count behind the percentage.

The window: the same students, a different number

The placement window is the time after graduation the rate is measured over, and it moves the number more than honesty does. CIRR reports employment at 90, 180, and 360 days for exactly this reason: the same graduates look very different at each.

Codesmith's own CIRR report is the cleanest illustration, because it is one honest school reporting all three windows on identical students.

CIRR windowIn-field employedFull-time employee only
~90 days37.8%35.7%
180 days70.1%66.1%
360 days81.0%77.4%

The 360-day in-field figure is about 2.1 times the earliest window: 81.0% versus 37.8%, a 43-point spread on the same class with no padding whatsoever. That is the size of the effect before anyone cheats.

Two honest reports can differ by 43 points before a single graduate is miscounted, purely on window choice.

The de facto industry standard headline window is 180 days. Tech Elevator, for example, defines placement as an accepted offer in a technology role within 180 days of graduation. When a program advertises a rate "within one year," it has chosen the widest, most flattering window. Convert it back to 180 days in your head and expect a materially lower number.

How a headline rate narrows when you decode it

  1. Advertised "employed" rate
    90%

    blended, wide window

  2. Divide by all graduates
    70%

    denominator restored

  3. In-field only
    66%

    any-job stripped out

  4. At 180 days, full-time
    64%

    the number to enroll on

Each honest correction removes padding until you reach the number that describes your likely outcome.

The numerator: in-field, or any job at all

The numerator is who counts as placed, and the trick is counting an out-of-field job as a win. A rate that says "employed" with no "in-field" qualifier can include an admin role at a tech company, or a job the graduate could have gotten without the program.

This is where Refolk's own index is useful, because it shows where graduates actually land rather than what the brochure claims.

MarketMatching profilesSample top current titlesNotable current employers
United States96Mostly non-tech: retail, food, tax, postal, customer service; one Junior Software EngineerTarget, Home Depot, Boeing
United Kingdom9Mixed: Junior Web Developer, Service Desk Analyst, Police Constable, Live Sound EngineerMetropolitan Police, self-employed

In Refolk's index, 96 US profiles self-describe as coding bootcamp graduates, and in a 25-profile sample the most common current employers were the retailers Target and Home Depot, not tech firms. Out-of-field titles dominated. Treat this as directional given the small sample, but it is direct evidence that "employed" and "in-field employed" describe different populations. An any-job numerator can absorb every one of those retail roles and still call them placements.

96
US profiles in Refolk's index self-describing as coding bootcamp graduates
In a 25-profile sample, top current employers were retailers, not tech companies.

To check whether a program's own graduates ended up in-field, you do not have to trust the outcomes page. You can search for its named alumni directly and read their current titles.

Refolk writes your resume from your own history and scores how well you fit a posting, but here the same index doubles as a fact-check on where a program's graduates actually work.

The salary line: median, base, and response rate

A salary claim is only as honest as the share of graduates behind it. The three questions that decode it are median versus average, base-only versus total compensation, and what percentage of the cohort the figure draws from.

CIRR's median salary is the middle value when all salaries are sorted, and it counts base compensation only, excluding bonuses, equity, relocation, and other non-base pay. Averages are inflated by a long upper tail. Course Report respondents report a $65,000 median first-job salary against a $70,698 average, and average salaries run higher than medians at every step, which is exactly the signature of a long upper tail pulling the mean up.

The response rate is the decisive detail. Flatiron's advertised $74,447 average salary was drawn only from graduates who were full-time employed, and those were 58% of classroom graduates and 39% of online graduates. The missing 42% and 61% are precisely the graduates who would drag a true average down. A high average built on a thin, employed-only base is not a lie about arithmetic; it is a lie about who is in the sample.

Audited versus self-reported: how big the gap gets

The gap between what programs advertise and what audited data shows is now quantified, and it is large. CIRR audited data shows 64% to 78% in-field employment within 180 days under strict full-time definitions, while self-reported rates from unaudited schools run 70% to 90%, frequently counting any job rather than a coding role.

The extreme cases come from enforcement records, where regulators forced the real numbers into daylight.

ProgramAdvertisedVerified or actualWindow
Flatiron (2017)98.5% employedFull-time only = 58% of classroom grads180 days
BloomTech (site)71% to 86% placedNear 50%, as low as 30% internally6 months
BloomTech (BPPE filing)Not stated65% (2021), 47% (2022) in-fieldCalendar year
Industry self-reported70% to 90%CIRR audited 64% to 78% in-field180 days

BloomTech, formerly Lambda School, is the widest documented gap. It advertised that 71% to 86% of students were placed within six months while its nonpublic reporting to investors consistently showed placement closer to 50%. On April 17, 2024 the CFPB ordered BloomTech and CEO Austen Allred over the misrepresentation. Its own California BPPE regulator filing reported in-field placement of 65% in 2021 and 47% in 2022. The roughly 35-point gap only surfaced because investor filings existed to contradict the website.

Flatiron is the other landmark case: it claimed 98.5% employment within 180 days in early 2017, and the New York Attorney General announced a $375,000 settlement that October.

One more fact makes the audited gap matter: audited reporting is rare. As of early 2026, only about three schools publish CIRR-verified, third-party-audited outcomes, including Code Platoon and Codesmith. So "no audited report" is the normal case, not a scandal. It means most outcomes pages are self-attested by default, and absence of an audit is signal rather than noise.

The procedure: decode one report in about 45 minutes

Work the page top to bottom in this order. Each step ends with a concrete artifact so you know when you are done.

Decode a single outcomes report

  1. Find the denominator
    Locate whether the rate divides by all enrolled, all graduates, or only job-seeking graduates. Done when you can state the exact base; treat any post-graduation base with suspicion.
  2. Isolate the exclusions
    Find the non-job-seeking, opt-out, and unreachable counts removed before the rate. Done when you know what percent was excluded; over 10% is a warning.
  3. Classify the numerator
    Separate full-time in-field from apprenticeship, contract, part-time, freelance, and self-employment. Done when you hold an in-field, full-time-only number.
  4. Pin the window
    Identify 90, 180, or 360 days. Done when the rate is tied to a window; convert any "within a year" claim back to the 180-day standard.
  5. Decode the salary line
    Check median versus average, base-only versus total comp, and what share of graduates the figure draws from. Done when you know the salary response rate.
  6. Locate the audit
    Find a named third-party or CPA auditor and a single complete standardized report. Done when you can name the auditor or confirm none exists.
  7. Cross-check independently
    Compare the claim against CIRR, a state regulator filing, or your own search of named alumni. Done when you hold a second, independently sourced number.
  8. Decide
    If exclusions exceed ~10%, no audit exists, or independent numbers diverge sharply, treat the headline as marketing. Done when you have a go or no-go.

Where to find the cross-check documents: CIRR's school data library holds the standardized reports; California's BPPE publishes annual school performance filings that make a clean regulator cross-check; and Course Report maintains independent school pages. If a claim appears on none of these and only on the school's own site, you have your answer about its standing.

How this goes wrong: the seven tactics to catch

Every inflated report uses one of a small set of moves. Name the move and the number stops fooling you. Here is each one with the false positive that gives it away and the check that defeats it.

Denominator swap. A 90% headline that is really 90% of the 70% who stayed in the funnel. The tell is a big, round rate with no cohort size printed. Check: divide the numerator by all graduates and recompute.

"Any job" numerator. Counting an admin or retail role as a placement. The tell is "employed" with no "in-field" qualifier. Check: demand the full-time in-field row.

Window stretch. A "within one year" rate quietly replacing the 180-day standard. The tell is a window wider than 180 days on the headline. Check: convert to 180 days and expect a lower number.

Average-salary halo. A high average masking a low median and thin response rate. The tell is an average with no median beside it. Check: ask for the median, base-only, and the salary response rate.

After-the-fact non-seeker relabeling. Graduates designated non-job-seeking after they graduate, which CIRR bars by asking before enrollment. The tell is intent recorded post-graduation. Check: ask when job-seeking status was set.

Self-published only. No named auditor, testimonials instead of aggregate numbers. Programs that refuse to share their CIRR report, cite "data privacy" for withholding outcomes, or show only testimonials are a red flag. Check: find the report on CIRR or a state regulator, not just the school site.

Sample-of-one boasts. A "100% placement cohort" that is one person. Austen Allred once tweeted a 100% placement cohort and later acknowledged the sample size was a single student. Check: find the cohort size behind every rate.

Trust the report, or treat it as marketing

Exclusions under 10%Exclusions over 10%
Self-attested, tight cohort
Plausible but unverified; cross-check alumni yourself
Audited, tight cohort
Trustworthy; enroll on this number
Self-attested, heavy exclusions
Treat as marketing; assume padded
Audited, heavy exclusions
Read the exclusion list before trusting the rate
No named auditorNamed CPA or CIRR audit
Cross an audit against exclusion size to decide whether a headline is evidence or advertising.

The verification checklist

Run this before you send a deposit. If you cannot tick an item, you have found the tactic hiding in that report.

Before you enroll

  • I can state whether the rate divides by all graduates or by job-seekers only.
  • I know what percent of the cohort was excluded, and it is under 10%.
  • I have the full-time in-field placement number, separate from contract and freelance.
  • The rate is tied to the 180-day window, with any "one year" claim converted down.
  • I know the salary median, that it is base-only, and the salary response rate behind it.
  • I can name the third-party or CPA auditor, or I have confirmed there is none.
  • I have a second number from CIRR, a state regulator filing, or my own alumni search.
  • I have printed the cohort size behind every rate I am relying on.

Keeping this current

Outcomes reporting changes, so re-check the mechanism rather than memorizing values. Three things drift: which schools publish audited reports, what the standard window is, and where regulators are active.

The count of CIRR-audited schools was about three as of early 2026, but that number moves as programs join or drop out. Re-check the CIRR school data library directly rather than trusting a ranking site's summary. Windows are stickier: 180 days has been the de facto headline standard, but confirm the window on the specific report, since a program can quietly shift it. Regulator activity is the freshest signal. The Flatiron settlement came from the NY Attorney General and the BloomTech order from the CFPB, so a program's home-state regulator and the CFPB enforcement pages are worth a search under the program's legal name before you commit.

Note one place the dossier's own sources disagree: Course Report describes CIRR schools reporting every six months with third-party verification, while the current CIRR site describes annual publication. When sources conflict on cadence, trust the report's own dated cover page over any secondhand description.

The most durable check is the one you run yourself. A program's graduates are searchable by name and current title, and their real jobs do not care what the outcomes page claims. When the brochure says "in-field" and the alumni say "retail," believe the alumni.

Questions job seekers ask

How do bootcamps calculate placement rate?

Most divide the number of employed graduates by a base of graduates, but the base varies. CIRR uses in-field employed divided by all graduated students, excluding only those who declared before class they did not intend to seek an in-field job and those not authorized to work. Many self-reporting schools instead divide by job-seeking graduates, a smaller base that removes opt-outs and unreachable graduates. That base choice, not the numerator, drives most of the difference between an honest and an inflated rate.

What counts as job placement at a bootcamp?

It depends entirely on whether the report says in-field. CIRR-standard reports split placements into full-time in-field employees working 30-plus hours for six-plus months, apprenticeships and contracts, and short-term or freelance work. A rate that only says employed can count a retail or admin job as a placement. In Refolk's index, the top current employers among self-described US bootcamp grads were retailers, so any-job and in-field-job describe different populations.

Are coding bootcamp job stats real?

Some are audited and some are not, and absence of an audit is the normal case. CIRR audited in-field rates run 64% to 78% within 180 days, while unaudited self-reported rates run 70% to 90%. Enforcement cases show how far unaudited claims stretch: Flatiron settled with the NY Attorney General over a 98.5% claim, and the CFPB found BloomTech advertised 71% to 86% while internal reporting showed near 50%.

What is the difference between in-field and any-job placement rate?

In-field placement counts only graduates hired into roles related to the training, such as software engineer or developer for a coding program. Any-job placement counts any employment, including roles the graduate could have taken without the program. CIRR requires the in-field split; a report that only publishes an employed rate is likely blending the two. Always demand the full-time in-field row before trusting a headline.

How do I verify a bootcamp's placement rate before enrolling?

Run eight checks: name the denominator, isolate the exclusions, classify the numerator as in-field full-time, pin the window to 180 days, decode the salary response rate, locate a named CPA auditor, cross-check against CIRR or a state regulator filing, and then decide. If exclusions exceed 10%, no audit exists, or independent numbers diverge sharply, treat the headline as marketing rather than evidence.

Why does the placement window matter so much?

Because the same students produce very different rates at different windows. Codesmith's own CIRR report shows in-field employment of 37.8% at the earliest window, 70.1% at 180 days, and 81.0% at 360 days. That is a 2.1x swing with no padding at all. A program advertising a within one year number is choosing the widest, most flattering window, so convert it back to the 180-day standard to compare fairly.

Put this to work

Paste your career in once. Every application after that is written for you.

Drop a resume or a LinkedIn URL. I rank the live openings against it, rewrite the resume and write a cover letter for the best of them, and fill in the employer's form when you press the button. You read, you decide what goes out.

  1. 01Drop your resume

    A PDF or a LinkedIn URL. About a minute, once.

  2. 02I rank the openings

    Every weekday morning, the live catalog scored against your history. Up to 20 worth your time, not two hundred links.

  3. 03Each one is written up

    Resume rewritten for the posting, a cover letter, a fit score. Press send, or let me fill in the form.

  • New matches ranked and written before you are up.
  • Every bullet stays inside what your history supports. Nothing invented.
  • Queued, submitted, interviewing, offer: one screen, not a spreadsheet.

500 free credits on sign-up. No card. Nothing is sent until you say so.

Read next