An HTML report template, and the figures to check before you send it

Generated report HTML saves real time on structure and costs real trust on content. Fluent prose makes an invented figure read exactly like a measured one.

A good HTML report template does two jobs: it fixes the order of the sections, and it makes every figure checkable. Generated reports are strong on the first and weak on the second, because the prose is fluent and fluency reads as authority.

An HTML report template rendered: sections in order, a figure with its base, an action with a date.
An HTML report template rendered: sections in order, a figure with its base, an action with a date.

A sentence like "conversion improved to 4.2%, driven largely by the onboarding change" has a figure, a direction and a cause, and all three may have been constructed because a sentence of that shape usually contains them.

This guide covers the structure worth reusing, the number rule, the phrases to strike, and the four steps to send the report as one address.

A generated report is a genuine time saving on structure and layout, and a genuine hazard on content. The hazard is specific: the prose is fluent, and fluency reads as authority.

The number problem an HTML report template has to solve

If you did not supply a figure, it was invented. Not estimated from data you cannot see — constructed because a sentence of that shape usually contains a number of roughly that size.

And it will read exactly like a measurement: "Conversion improved to 4.2%, driven largely by the onboarding change." That sentence has a figure, a direction and a cause. All three may be fabrications, and none of it looks like guesswork.

So the rule is unconditional: every figure you did not supply is a placeholder until you have replaced it.

How to reduce it at the source

Here is the data. [paste]

Write the report using only these figures. Do not estimate, extrapolate
or infer any number that is not above. If something is not in the data,
write "not measured" rather than filling it in.

Every percentage must show its base, e.g. "4.2% (54 of 1,284)".

The "not measured" instruction is the useful one. Given a gap, the default behaviour is to fill it; given permission to leave it empty, you get an empty space you can see.

Note that this reduces invention — it does not eliminate it. Check each figure against your source regardless.

Structure worth asking for

Conclusion first

The order that feels rigorous — background, method, data, conclusion — is the order that loses readers. Findings at the top, method below for anyone who wants to check, detail last.

Anchored headings

<h2 id="findings">What we found</h2>

Readers look for their section. Anchors also let you send someone a link straight to the paragraph that concerns them, which is the single most useful thing a report-as-a-page does.

Add scroll-margin-top to headings if the page has a sticky header, or the anchor lands with the heading hidden behind it.

A summary box that can stand alone

Three or four bullets at the top, each a complete claim with its number. Most readers will read only this, so it has to be the report in miniature rather than a teaser.

Language to strike out

Generated reports drift towards phrasing that sounds analytical and commits to nothing. Worth a search-and-remove pass:

Phrases that gesture at magnitude. Replace each with the number, or delete it.
Phrases that gesture at magnitude. Replace each with the number, or delete it.
Generated phrasing Why it fails Replace with
"significantly improved" No number "rose from 3.6% to 4.2%"
"leverage our strengths" Says nothing The specific action
"data suggests" Which data "in the 1,284 signups measured"
"industry-leading" Unverifiable Delete
"a large share" A magnitude with no number The count, or "not measured"

The pattern: replace anything that gestures at magnitude with the magnitude, or delete it.

The one-minute audit

Read only the numbers. Skip the sentences and move from figure to figure with the source open beside you: does each one appear in the source, does its base appear next to it, does its period match.

Then read only the causes: every "driven by", "because" and "as a result of" is a claim you either established or did not. This takes a minute for a two-page report and catches the errors that fluent prose hides.

Then keep it correct

A copy per person ✗ Each edit lives on one machine ✗ No way to merge the changes ✗ Nobody can say which is current ✗ The oldest copy keeps circulating One address ✓ Everyone opens the same page ✓ A correction is seen by all ✓ There is only one current version ✓ Forwarding shares the page, not a copy
A copy per reader versus one address.
One address. When a figure turns out wrong after sending, you correct one page rather than recalling six copies.
One address. When a figure turns out wrong after sending, you correct one page rather than recalling six copies.

A report is the document type most damaged by the file model. Six recipients, two corrections, one forward, and there are four versions circulating with a different number in each.

Put it at one address and send the link. In NOS the pasted report renders exactly as written and its text — including every figure — is clickable text. The colleague who spots the wrong base number fixes it, the link everybody holds is the corrected report, and there is no "please discard the earlier version" email.

That also removes the worst version of the invented-number problem: when you find one after sending, you correct one page rather than trying to recall six copies.

Where invention shows up

Element Risk What to do
A headline percentage High Verify against your source
A comparison to last period High Verify; the direction may be invented too
A named cause for a change Highest Delete unless you established it
A base number Medium Verify — the ratio depends on it
A date or period Medium Check it matches your data
Section structure None Keep it; this is what generation is good for

The third row is the one to be strictest about. A sentence attributing a rise to a specific cause is an analytical claim, and generated prose will produce one whenever the shape of the sentence calls for it.

After the numbers are right

Publish it at one address rather than attaching it. A report sent as a file becomes four versions within a week, and the version someone quotes back at you is rarely the corrected one — see turning a report into a link.

Keeping the source next to the report

The check above only works if the source is at hand. Put a link to it in the appendix of the page: the spreadsheet, the query, the export, at a stable address.

Then the next person who questions a figure can follow the link instead of asking you, and the next quarter's report starts from the same source rather than from memory.

Sending the report: 4 steps

  1. Supply the data and forbid estimates in the prompt. Paste the figures, say "use only these", and say "write not measured for anything not in the data". You get visible gaps instead of invisible inventions.
  2. Check every number and every cause against the source. Figure, comparison, base, period, named cause. The cause is the one to be strictest about; delete it unless you established it.
  3. Strike the phrases that gesture at magnitude. "Significantly", "a large share", "industry-leading". Replace each with the number, or delete it.
  4. Paste it into a NOS document and send one link. Share, then Share link, then Create link. When a figure turns out wrong after sending, you correct one page rather than recalling six copies. Turning HTML into a link is this step.

Questions people ask

Can I trust the numbers in a generated report?

No. Unless you supplied them, treat every figure as placeholder. Fluent prose makes invented numbers read as measured ones, which is exactly why they survive review.

How do I stop it inventing findings?

Supply the data and instruct it to use only what you gave, and to write "not measured" rather than estimate. Then check each figure against your source anyway.

What structure should a report have?

Conclusion first, method below, detail last, with anchored headings. Readers look for their section rather than reading in order.

How do I keep it correct after sending?

Put it at one address and edit the page. A report sent as a file becomes four versions within a week and nobody can say which is current.

Keep reading