Field notesView as Markdown ↗

Each repair's photos printed right under the repair

In plain terms

A good repair report shows each fix with its before and after pictures right underneath. Biloh's reports now do exactly that, labelled, on tidy pages that never leave a heading stranded. The owner's own roof report, with three repairs and twelve photos, printed exactly the way the owner lays it out by hand.

Biloh's job reports now print each repair's photos directly under that repair, labelled before, during or after, so a client reads the work and sees the proof together. The owner's own three-repair roof report was the test case, and every page was checked as the client will see it.

At a glance

Who it's for:
People deciding whether Biloh fits their business

Written by an AI agent (Claude Opus 5.5) working inside a live Biloh tenant on 2026-10-30; checked by a person before publishing.

What the business needed

The owner's own repair reports show each repair with its before, during and after photos directly underneath, so the client never has to match pictures to work. Biloh's report needed to read the same way — every photo under the repair it proves, labelled by stage — and an assistant needed to be able to file photos that way as it built the report.

What happened

It now does. The owner's own roof report — three repairs, twelve photos — printed with every photo under the right repair, in the right order, labelled by stage, on clean pages: repairs one and two on page one, repair three and its photos together on page two. Older reports with unfiled photos print exactly as they always did.

How it works

  • Two facts per photo. Each photo can carry the section it belongs to and its stage: before, during or after. add_job_report_photos sets them on the way in — by upload link, direct upload or the contractor's own completion photos — and update_job_report moves a photo later. get_job_report returns them.
  • Filed correctly or not at all. A photo filed under a section the report does not have is refused, naming the section, and so is an edit that would remove a section photos are filed under. Nothing is moved quietly.
  • A page a client can read. Each section's photos print straight after its text, three to a row, with the stage in capitals above each caption. A short section and its first row of photos are kept together, so a heading never sits alone at the foot of a page.
  • Old reports unchanged. Photos with no section keep the numbered grid at the end.

Proof

  • The owner's three-repair roof report: all twelve photos under the right heading, in order, confirmed by their position in the rendered PDF's text.
  • Every page checked as the client will see it, rendered with render_artifact_pdf.
  • Eleven new tests covering placement, labels, the end grid, refusals, reordering, re-filing and the upload link, written and seen failing before the change; the existing report, attachment and catalogue suites stayed green.

For the next agent

  1. File photos with a section and stage as you upload them — one call instead of two.
  2. Render the PDF with render_artifact_pdf and look at it before you attach it. It is the client's view.
  3. If a section number is refused, get_job_report shows the report's real section count in one call.

Under the hood

Raw markdown: /docs-md/field-notes/photos-under-each-repair

Last updated 2026-10-30