Construction

Daily job reports for a renovation contractor

Site reports for a renovation contractor with six crews. A foreman files what was done today, hours worked, materials used and photos, from a phone on site. The office sees every job in one board and exports the week for invoicing.

Automatically generated draft

Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.

Section 01 · What has to work

The product must let foremen file daily site reports from their phones so the office can see job progress in real-time.

Section 03 · Screens

Every screen, and what it is for.

  • ›My Jobs — Foreman sees assigned jobs; selecting a job to report on must be instant.
  • ›Daily Report Form — Foreman files work, hours, materials, and photos; starting a photo upload must be instant.
  • ›Job Dashboard — Office sees all jobs and their latest report status; the board must load instantly.
  • ›Job Details — Office views all historical reports for one job; seeing the latest report must be instant.
  • ›Weekly Export — Office selects a date range and downloads report data; the download must start instantly.

Anything not on this list is not in version one. That is what keeps a fixed price fixed.

Section 04 · The data model

What it stores, and who can read a row.

user

uuid id, text name, text email, text hashed_password, enum('foreman', 'office') role, timestamptz created_at

Access · Office can read all users; a user can read their own row.

job

uuid id, text name, text client_name, text address, enum('active', 'archived', 'complete') status, timestamptz created_at

Access · Office can read all; foremen can read jobs they are assigned to.

job_assignment

uuid job_id, uuid user_id, timestamptz assigned_at

Access · Office can read all; a foreman can read their own assignments.

daily_report

uuid id, uuid job_id, uuid user_id, date report_date, text work_summary, numeric(5,2) hours_worked, jsonb materials_used, timestamptz created_at

Access · Office can read all; a foreman can read/write their own reports.

report_photo

uuid id, uuid daily_report_id, text storage_key, text caption, timestamptz created_at

Access · Office can read all; a foreman can read photos on their reports.

Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.

Section 05 · States

draft → submitted → included_in_export

Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.

Section 06 · Where this breaks

What bites products like this one.

Report submission fails due to poor on-site connectivity, losing the foreman's work.

The app must save drafts locally and sync automatically when connection is restored.

Large, high-resolution photos are slow to upload and can fail entirely.

Resize images on the device before uploading; process uploads in the background, separate from form submission.

Reports filed after a weekly export are missed, creating inaccurate invoices.

The export process must lock reports by status to prevent them from being missed or double-counted.

Section 08 · Deliberately left out

What version one does not do.

  • ×A structured materials catalog with pre-defined items and costs — we will use a flexible text field for v1.
  • ×Office staff editing submitted foreman reports — v1 is for capture; corrections require a defined approval workflow first.

This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.

Still open

What we would ask before quoting.

  • What specific format and fields must the weekly export contain for your invoicing process?
  • Who is responsible for creating new jobs and assigning foremen to them in the system?
  • Do different office staff members need different levels of access or visibility?

Half of this already exists

Fieldline

The field half of this is a solved problem: routes assigned, work captured with no signal and synced later, and an alert when nobody shows up.

It is one of our pre-built products: the code is handed over to you, adapted to your own wording and rules, and the rest of the specification above is built on top of it rather than from scratch.

Your product, not this one

Get this written for what you are actually building.

Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.

Next step

Find out if your idea fits in 10 working days.

Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.

NDA available on request