Devin Huber
Résumé
Analysis · take-home assignment

Fifteen hypotheses. None survived.

A take-home for an AI documentation product that turns recorded conversations into written summaries. The question of what makes those summaries better or worse was not in the brief — I asked it, tested fifteen candidates across 200 conversations, and the honest answer was that none of them held up. This is what I reported instead. The company is not named and its data is not published.

Data
Five table extracts · 200 recorded conversations
Method
Permutation tests, corrected with Benjamini–Hochberg and Bonferroni at α = 0.05
Delivered
A self-contained dashboard and a script that re-derives every figure
15relationships tested
0survived correction
3looked significant alone — about one is expected by chance

01 · The question What makes a summary good?

Users rate each AI-written summary. The obvious deliverable is a chart that ranks what drives those ratings — this model is better, longer conversations score worse, that team is struggling. It is the kind of chart a leadership team would act on.

It is also the chart most likely to be wrong. Ask fifteen questions of a small dataset and some answers will look real by chance alone. The only way to know which are real is to decide in advance how you will test them, and then accept the answer.

02 · How I tested it Five steps, fixed before looking

  1. Work from the raw rows

    Five table extracts — transcripts, summaries, prompt templates, users and feedback. Every figure is computed in the browser from those rows, not typed in from a summary, so anyone can change a filter and watch the numbers move.

  2. Name the candidates before looking

    Fifteen things that could plausibly drive how users rate a summary: conversation duration and length, the model, its temperature, the team, the topic, how much rework a summary needed, and others.

  3. Test each one without assuming a shape

    Permutation tests: shuffle the ratings over and over and ask how often chance alone produces a difference this large. No assumption that the data is normally distributed — which matters when a single template rests on 13 to 25 ratings.

  4. Correct for having asked fifteen times

    Run fifteen tests at the usual 5% threshold and roughly one will pass by luck. Every result was checked under two corrections, Benjamini–Hochberg and the stricter Bonferroni, at α = 0.05.

  5. Check the arithmetic independently

    A separate verification script re-derives every headline figure from the source extracts. The dashboard and the script have to agree before anything is reported.

03 · The result Nothing held up

Three of the fifteen relationships reached p < 0.05 on their own. Across fifteen tests you would expect roughly one to do that by chance, and none cleared the corrected threshold.

ClaimEvidenceVerdict
Rework predicts lower ratingsr = −0.17, p = 0.043Fails correction
Some models fail more than othersp = 0.37Not supported
Quality is worse in non-English conversationsUnder 20 rated conversationsToo few to test
Ratings disagree with comment sentimentComments drawn from 15 repeated stringsAn artifact of the extract

The failed tests were shown in the delivered dashboard on purpose. A version that rendered them as confident bars would have looked more useful, and it would have sent a leadership team planning around noise.

Why a null result is worth reporting

“We found nothing” reads like a failed analysis. It is the opposite: it shows the data don’t support fifteen stories someone would otherwise have told, several of which were one uncorrected test away from being presented as findings.

It also says something specific about the data. Ratings on 13 to 25 summaries per template cannot separate small effects from chance. The next step is not a cleverer test on the same data; it is collecting the signal that would actually answer the question — which is section 05.

04 · Worth acting on Counts, which need no inference

The findings a team could act on by Monday were not statistical at all. They were things you can count, and none of them depend on a significance test. The report counted each of these; the counts belong to the company, so only what was counted is shown here.

Usablehow many recorded conversations ended with a summary anyone could use
Repeatshow many runs repeated an earlier run on the same conversation
Stuckhow many jobs had stalled in the pipeline, and for how long
Wrong templatehow often a template built for a different kind of conversation was used
Redactionhow many recordings reached the model without personal information removed

05 · What to measure next Three columns would answer the question

The question stayed open because the data could not answer it. These would change that, and none of them needs a model:

  • An owner on every transcript

    So a stuck or repeated job can be traced to someone who can act on it.

  • A completion timestamp on every job

    So “stuck for over a week” is something the system reports, not something an analyst reconstructs.

  • The edit distance between the AI’s summary and what the user saved

    The strongest quality signal available, and it is not captured today. A rating says how someone felt; the edits say what was actually wrong.

Contact

Want to see one run?

I'll screen-share any build: the workflow, the test set and the results, including what didn't work.

Open to AI automation & AI engineering roles · Columbus, OH · relocation or remote