Form page · /f/<id>
Public records request
2-column grid · own header and theme · Its own page: share the link or open it on a tablet
Media & Evidence package
Public records requests from a form to release: statutory SLA, evidence gathering, AI-assisted redaction of video, photos, audio and documents, legal approval and an exemptions log.
Connects to Google Gemini
About this package
Public records requests (US FOIA and state public records acts, the NZ Official Information Act, the UK Freedom of Information Act or your own policy) start on a standalone form page: the requester gives their details, the records they want, the date range and how to receive them. The workflow gives the request a reference, looks up the response deadline in a configurable rules table, sets an SLA to match and emails an acknowledgement with the date.
A records officer attaches the responsive records: body-worn camera or CCTV video, photos, interview audio and documents. Redact Video blurs faces, licence plates and on-screen ID numbers and bleeps personal details it hears; Redact Image does the same for each photo; the interview is transcribed, bleeped and its transcript redacted; Redact Document finds personal information in the statement for review. Each item gets a proposed exemption in the Exemptions log.
A legal reviewer compares every original with its redacted copy (originals stay restricted to the request and are never released) and approves a full or partial release, denies it or sends it back. On release the document is redacted, the cover letter and exemption log become PDFs merged into a release package, and the requester gets the package by email or a download link. No-records, extension and denial letters are included, every step is written to an audit trail table, and a 7-year retention policy is applied. Redaction aids the reviewer; it does not replace them, and the deadline and exemption rows are examples to adapt with your counsel, not legal advice.
Starts from a form page: share the Public records request form (/f/<id>) on your website; each submission starts the workflow.
Someone fills in a form to start it: the workflow start form (Run dialog in the app, or your own portal posting to the API) or a standalone form page (/f/<id>) whose Form submitted trigger starts the workflow. People complete User Task forms along the way.
How forms workThe flow
Request form
The requester fills in the themed form page: who they are, the law, the records sought, dates and delivery preference.
Deadline and SLA
The rules table gives the statutory days (for example 20 business days, 10 state days or 20 working days), an approximate calendar due date and default exemption codes; the run SLA and the register use it.
Acknowledge
The requester is emailed the reference and the response date.
Gather records
The records officer attaches video, photos, interview audio and documents, or answers No records (letter) or Extend deadline (new SLA and notice).
Automated redaction
Redact Video blurs faces, plates and on-screen text and bleeps personal details in the speech; each photo goes through Redact Image; the interview is transcribed and bleeped; the document is checked for personal information. Each item gets a proposed exemption in the log.
Legal review
The legal reviewer compares originals with redacted copies, confirms the exemption codes and approves, approves in part, denies or sends back.
Release package
The document is redacted, the cover letter and exemption log become PDFs merged into one package, and the requester receives it by email or download link.
Audit and retention
Every step is recorded in the Request activity table and the request row gets the 7-year retention policy.
Forms
People start it from a form page (/f/<id>) with its own header, theme and buttons; submitting it starts the workflow. User Tasks show their fields and outcome buttons to the assignee.
Form page · /f/<id>
2-column grid · own header and theme · Its own page: share the link or open it on a tablet
User Task
Gather records: {{reference}} (due {{due_date}}) · 2-column grid · own header and theme
User Task
Legal review: {{reference}} (due {{due_date}}) · 2-column grid · own header and theme
From your code
Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.
REST
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
-H "Authorization: Bearer $USERTASKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id":"<workflow id>","variables":{"requester_name":"Jordan Example","requester_email":"jordan.example@example.com","phone":"+1 555 0100","organisation":"Example Community News","jurisdiction":"US federal FOIA","records_sought":"Body-worn camera video, photos, the witness interview and statement for incident SAMPLE-2026-0042 on Sample Street.","incident_ref":"SAMPLE-2026-0042","date_from":"2026-10-30","date_to":"2026-10-30","location":"Sample Street","delivery_preference":"Email attachments","acknowledge":true}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input requester_name="Jordan Example" --input requester_email=jordan.example@example.com --input phone="+1 555 0100" --input organisation="Example Community News" … --waitWhat's included
| Type | Name | Details |
|---|---|---|
| Email template | Records release | Sent with the release package: cover letter, exemption log and the redacted records (or a download link). |
| Email template | Records request acknowledgement | Sent when a request arrives: reference and response deadline. |
| Email template | Records request: decision to withhold | Sent when the request is refused, with the decision letter attached. |
| Email template | Records request extension | Sent when the deadline is extended. |
| Email template | Records request: no records found | Sent when no responsive records exist, with the letter attached. |
| Data table | Exemption codes | The exemption codes reviewers can apply, per regime. A configurable list of EXAMPLES: edit it to match your statute and practice. |
| Data table | Exemptions log | One row per released item: what was redacted, the exemption applied and who approved it. It becomes the exemption log PDF sent with the release. |
| Data table | Records requests | Every public records request: requester, regime, statutory due date, status and outcome. |
| Data table | Request activity | Audit trail: each step of each request, when it happened and who acted. |
| Integration | Google Gemini (media AI) | Media AI provider for transcription, image and video analysis and finding what to redact. Paste your Gemini API key on install (aistudio.google.com). To use OpenAI, Azure AI or AWS instead, point the media steps at that integration. |
| Integration | Records release portal | Where released records are shared with the requester (a download link). Replace with your portal, document management system or secure file share. |
| API reference | Create release link | POST /releases — Uploads nothing itself: registers the release and returns a download link the requester can use (your portal fetches the redacted files from UserTasks or your store). |
| Decision table | Records request rules (examples) | 5 rules — Response deadline and default exemption codes per regime. These rows are configurable EXAMPLES to adapt with your counsel, not legal advice: check the statute, how your office counts days, holidays and extensions. |
| Retention policy | Records requests: 7 years | Requests, exemption logs and the audit trail are kept for 7 years after creation, then reviewed. Adjust to your records schedule. |
| forms | Public records request | The public form for records requests (FOIA, OIA, state public records acts): requester details, records sought, dates and how to deliver them. |
| Workflow | Public records request | 82 steps — A public records request (FOIA, OIA, state public records acts) from its form to release: statutory deadline and SLA, acknowledgement, records gathering, automated redaction of video, photos, audio and documents, an exemptions log, legal approval, and a release package with cover letter, or a denial, no-records or extension letter. |
Exemption codes · 11 sample rows
CodeRegimeTitleCitation (example)Typical useActive
Exemptions log · schema only
Item keyRequestItemTypeRedactionsExemptionStatusApproved byLogged
Records requests · 1 sample rows
ReferenceRequesterEmailRegimeRecords soughtDate rangeDeliveryReceivedDueStatusDecisionRelease linkClosed
Request activity · schema only
RequestAtEventActorDetail
Requirements
Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.
Integration “Google Gemini (media AI)”Required
Integration “Records release portal”Required
Workflow “Public records request” assigneesRequired
Install
Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.
curl -fLO https://usertasks.com/gallery/foia-records-request-redaction-1.0.0.utpkg
usertasks packages inspect foia-records-request-redaction-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install foia-records-request-redaction-1.0.0.utpkg --dry-run
usertasks packages install foia-records-request-redaction-1.0.0.utpkg # prompts for each requirement
usertasks packages install foia-records-request-redaction-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete foia-records-request-redaction -f values.yamlVerify the download
shasum -a 256 foia-records-request-redaction-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.
Versions
Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work
More packages
Media & Evidence Official
Customers upload an ID photo and a selfie: the document is read, checked by rules, the number blacked out for storage, and a person compares the photos and decides.
Needs:Media AI providerAssigneesEmail
Media & Evidence Official
Motor claims with damage photos: AI damage assessment, decision-table triage and SLA, adjuster review, letters, and photos with faces and plates blurred for repairers.
Needs:Media AI providerAssigneesEmail
Media & Evidence Official
Upload a meeting recording: transcript with speakers, AI-drafted minutes the organiser checks, a task for each action owner and the minutes emailed with an SRT.
Needs:Media AI providerAI modelEmail