How-To Do This
How to build Checkoff & Approval
Build reusable checklists whose items can require notes, documents, photos, and governed approval before work is accepted.
Checkoff & Approval is a checklists, evidence, and signoff pattern. This guide turns the product concept into a buildable first release using BuildWithHQ records, pages, workflows, permissions, integrations, AI, and exact-version packaging.
Define the outcome before the screens
Attach a bounded checklist to a record, ticket, project, or work order; let authorized users complete its items with required proof; and submit the finished run through the existing Workflow approval system without creating a parallel approval engine.
Treat every name in this blueprint as a starting point. Use the language of the industry you are serving, but preserve clear ownership, status, permission, and audit boundaries.
1. Create the smallest useful data model
In the Developer Console, create or select the SaaS app and model these as application record types and relationships. The page editor composes React components and validated data bindings, which call the platform APIs for these records.
| Record type | What it holds |
|---|---|
| Checklist template | Reusable name, version, item order, proof requirements, and activation state. |
| Checklist item template | Instruction, required state, proof policy, order, and optional responsible role. |
| Checklist run | The versioned checklist attached to one authorized source record, current status, owner, and revision. |
| Run item | Completion state, actor, completion time, note, and optimistic-concurrency revision. |
| Evidence | A native File relationship identifying the document or photo supplied as proof for one item. |
| Signoff | The existing Workflow run, approval step, Inbox attention, decision, comment, and audit evidence. |
Relationship rule: Keep Files, Workflow approvals, Inbox attention, users, DataRoles, Locations, and the attached business record canonical. The checklist stores only its template/run lifecycle and explicit links to that evidence and approval work.
2. Build the working screens
Start with task-oriented pages instead of a page for every table. The first navigation should contain:
- Checklist-template editor with ordered items and proof rules.
- Attached checklist list on records, tickets, projects, and work orders.
- Run workspace with up to 1,000 bounded items, progress, notes, documents, and photos.
- Submit-for-signoff and reviewer decision panel.
- Rejection, revision, proof replacement, resubmission, and approval history.
Use Puck for the normal visual experience. Keep stable block identity when using Monaco advanced JSON mode so future template upgrades can merge safely.
3. Set access before adding automation
- Authorize the attached source record before listing or opening its checklists.
- Apply tenant, DataRole, Location, record, and action permissions to every run, item, and evidence operation.
- Require current file access for proof downloads; an evidence link never grants access to a File.
- Use the existing Workflow decision permissions and Inbox ActivityVersion fence for signoff.
User Type menus establish eligible page routes for each audience. They do not grant the records or actions on those pages. The server derives the account, SaaS app, user, DataRole, and location scope from the verified identity on every data request.
4. Add the core workflows
- Create or attach run -> snapshot exact template version and ordered items.
- Complete item -> validate required note/file/photo proof -> record actor, revision, and evidence links.
- All required items complete -> submit once -> create or reuse one Workflow approval and Inbox item.
- Reject -> return to editable state -> replace proof or edit items -> resubmit with current revision.
- Approve -> lock the accepted result while preserving the complete activity, file, and Workflow evidence chain.
Make each mutation a narrow, reviewed action with explicit inputs, allowed states, correlation evidence, and an idempotent retry policy where retries are possible. Pages, integrations, and agents all reach the same application service and stored-procedure contract through supported APIs.
5. Connect channels and outside systems
- Use native Files and attachment upload APIs for documents and photos.
- Use Workflow for approval decisions and Universal Inbox for reviewer attention.
- Use Record Relations to attach runs to any authorized business record without copying that record.
- Use background workers for scanning, thumbnails, delivery, or other asynchronous evidence processing.
Use managed connections, OAuth connectors, inbound endpoints, and webhooks. Put specialized SDKs or private processing behind a declared appliance endpoint; never expose provider credentials to a page.
6. Add AI as a governed layer
AI may summarize a permitted checklist or highlight missing evidence, but it cannot mark work complete, manufacture proof, approve signoff, or read attached records/files beyond the represented user's normal and AI-specific permissions.
- Assemble context only from the authorized run, source record, and readable evidence.
- Keep completion and proof validation deterministic.
- Bind suggestions to the current run revision and Inbox ActivityVersion.
- Route any material follow-up through the normal suggestion, permission, and approval contracts.
AI and retrieval must apply CanAiReadRecords, tenant, DataRole, field, and location security before context is assembled. Planning and research remain read-only. Customer-facing or material changes use an action suggestion and the configured policy or human approval before execution.
7. Ship one complete vertical slice
Recommended first release: Attach one checklist to a work order, complete its required items with a note and photo, submit it for Workflow signoff, reject it once, replace the proof, resubmit, and approve it while preserving one coherent audit chain.
- Create the minimum record types and seed representative, non-production data.
- Build the primary list/queue and one complete detail page.
- Implement one state-changing workflow and its denial/error states.
- Add the narrowest useful integration or inbound channel.
- Add one permission-aware AI read or suggestion only if it improves that workflow.
- Test as an owner, a normal operator, a restricted user, and an unauthorized user.
8. Validate, package, and operate
- Test another tenant, DataRole, Location, source-record denial, and unauthorized file download.
- Test two users completing the same item and stale run revisions.
- Test duplicate submit/approve/reject requests for idempotency.
- Test reject, edit, proof replacement, resubmit, approve, and activity history.
- Test empty, typical, and 1,000-item runs without returning unbounded unrelated records.
Publish a reviewed exact version as a template when the pattern is reusable. If you sell it, complete the marketplace preparation checks. Template installs are version snapshots; upstream edits must never silently mutate a tenant copy.
Built-in data path: React components and data bindings call authenticated APIs; typed application services execute reviewed stored procedures and return bounded results with audit and correlation evidence.
Make proof requirements explicit per item. A photo or document should demonstrate a specific completed step, not become an unstructured dumping ground attached to the whole job.