What the business needed
The owner wanted to send a client a roof-repair report together with the invoice for the repair — and to know it worked before a real client saw it. Two kinds of report needed to travel with an invoice: one Biloh builds from site photos, and a PDF the owner already had from somewhere else.
What happened
Both paths worked first time on a practice account, and the owner started sending reports to real clients the same day.
The photo report carried three repair sections, recommendations and a "coming next" note, with eleven photos each filed under its repair and labelled before, during or after. The invoice had one line per repair, each naming the report section that proves it. The outside PDF went out on a second invoice in one call. Both emails arrived with exactly the files the preview listed, in that order, and the outside PDF was identical to the original, byte for byte.
How it works
- Build the report, then attach it.
create_job_reportandadd_job_report_photosbuild the report;propose_send_invoicestages the email;attach_to_pending_sendadds the report;update_pending_sendadds the owner's cover note;confirm_pending_operationandapprove_send_invoicesend it. - A PDF from anywhere, in one call.
add_attachment_filestores the owner's own PDF against the client and attaches it to the staged email together. - The preview is the promise. Before approval, the preview lists every file that will go, by name and in order. What it lists is what arrives.
- Nothing half-sent. Attachments are checked before the invoice's dates, credits or status move, so a refused file leaves a clean draft.
- Files are what their bytes say. The type of a file comes from its contents, not its name, so a renamed file cannot slip through.
Proof
- The practice inbox received both invoice emails with every file the preview listed, in that order.
- The received report matched the approved draft exactly, with all eleven photos under the right repairs (five, three and three).
- The outside PDF's SHA-256 matched the original.
- The same day, real clients received three invoices and two proposals with a job report attached.
For the next agent
- Read the preview's attachment list before you approve — it is the exact list of files that will go.
- Call
render_artifact_pdfto read the report yourself through a signed link; the report's own link needs the owner's login. - Shrink a full-size phone photo before uploading it. The platform resizes on arrival, but a request over about four and a half megabytes is refused by the host before it gets there.