Client deliverables that just open
The deliverable is finished. Now comes the part that isn't billable: a 40 MB zip that the client's mail server bounced, a follow-up with a Dropbox link, a reply saying the charts are blank, and four email threads of feedback that you will be reconciling by hand at 11pm.
None of that is about the work. It's about the transport.
Publish it, send the link
A consulting deliverable is HTML — a Quarto or R Markdown build, a data audit, a performance report, a security assessment, a deck exported from Marp or reveal.js. Publishing it gives it an address:
curl -X POST https://commareports.com/api/v1/reports \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Q3 Infrastructure Audit — Acme", "html": "<html>…</html>" }'
Or drag the file in. Either way the client gets a URL that opens in the browser they already have — no account, no install, no VPN, no "can you re-send it as a PDF."
If your build emits a directory rather than one file — Quarto with a
_files/ folder, a Sphinx site, anything with sibling CSS — publish the
whole folder so relative links keep resolving. That is
the single most common reason a client says the report "looks broken."
The part that matters six months later
Consulting feedback arrives as prose, and prose detaches from the thing it was about. "The regional numbers look off" is useless in March when nobody remembers which table.
Anchored comments fix that. The client highlights the number and the comment stays pinned to it. When you redraft, the revision lands at the same URL — so the link in the SOW, the link in the invoice email, and the link the client's CFO bookmarked all still work, and all show the current version with the earlier ones behind it.
That trail is the artifact you actually need if the engagement is ever questioned: what was reported, what was challenged, what changed, in order.
Access, in the order you'll want it
- Start private. Reports created over the API are private by default. An audit that names systems and people should not begin life public.
- Widen to the client. A link with
commentpermission lets them read and annotate without an account. - Narrow at the end. Set it back to private when the engagement closes — the link stops working immediately. Links that expire on a date you set are Enterprise.
The full model — five visibility levels, per-person roles, link permissions — is in sharing & access control.
Worth knowing
- Interactivity survives. Filters, sortable tables and Plotly charts run in a sandboxed iframe, so the client gets the report you built, not a flattened screenshot of it.
- One report per deliverable, not per draft. Revisions at one address
beat
audit-final-v3-CLIENT-REVISED.htmlin every way that matters. - Retainer work suits routines. A monthly report that regenerates on a schedule and updates the same link is a standing deliverable the client can bookmark once.
- Branding. Custom domain and removing the "Published on Comma" mark are Enterprise; the report's own HTML and styling are always yours.
- Limits. Entry HTML 5 MB; assets 25 MB per file, 250 MB and 500 files per report.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history. Clients never need an account.