Media & Evidence package

FOIA / public records request: evidence redaction and release

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

OfficialStarts from a formAdvanced~30 min setupv1.0.0

About this package

What it does

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

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 work

The flow

Step by step

  1. 1

    Request form

    The requester fills in the themed form page: who they are, the law, the records sought, dates and delivery preference.

  2. 2

    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.

  3. 3

    Acknowledge

    The requester is emailed the reference and the response date.

  4. 4

    Gather records

    The records officer attaches video, photos, interview audio and documents, or answers No records (letter) or Extend deadline (new SLA and notice).

  5. 5

    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.

  6. 6

    Legal review

    The legal reviewer compares originals with redacted copies, confirms the exemption codes and approves, approves in part, denies or sends back.

  7. 7

    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.

  8. 8

    Audit and retention

    Every step is recorded in the Request activity table and the request row gets the 7-year retention policy.

Public records request — 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. The same canvas you get in the designer after installing.

Forms

The start form and the task 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>

Public records request

2-column grid · own header and theme · Its own page: share the link or open it on a tablet

Your name * requester_name · text
Email * requester_email · emailname@company.com
Phone (optional) phone · phone
Organisation (optional) organisation · text
Which law are you requesting under? * jurisdiction · choice
US federal FOIAUS state public records (example)NZ Official Information ActUK Freedom of Information ActOther / internal policy
Records you are asking for * records_sought · textarea
Incident or case number (if known) incident_ref · text
From * date_from · dateYYYY-MM-DD
To * date_to · dateYYYY-MM-DD
Location (if relevant) location · text
How should we deliver the records? * delivery_preference · choice
Email attachmentsSecure download link
I understand that released records may be redacted and that some may be withheld under the law * acknowledge · boolean
Submit request

User Task

Gather responsive records

Gather records: {{reference}} (due {{due_date}}) · 2-column grid · own header and theme

Body-worn camera / CCTV video bodycam_video · attachments
Photos photos · attachments
Interview audio interview_audio · attachments
Documents (statement, report) documents · attachments
Search notes (systems searched, reasons for an extension) search_notes · textarea
Records gatheredNo recordsExtend deadline

User Task

Legal review and release decision

Legal review: {{reference}} (due {{due_date}}) · 2-column grid · own header and theme

Video exemption video_exemption · lookupPrefilled: {{law_enforcement_exemption}}
Photos exemption photo_exemption · lookupPrefilled: {{privacy_exemption}}
Audio exemption audio_exemption · lookupPrefilled: {{privacy_exemption}}
Document exemption document_exemption · lookupPrefilled: {{privacy_exemption}}
Withheld in full (for a partial release) withheld · textarea
Reasons (used in the letter) * decision_note · textareaPrefilled: Personal information of people other than the requester has been redacted to protect their privacy.
Approve releasePartial releaseDenySend back

From your code

Start a run over the API

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

shell
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

shell
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" … --wait

What's included

16 assets, ready to adapt

TypeNameDetails
Email templateRecords releaseSent with the release package: cover letter, exemption log and the redacted records (or a download link).
Email templateRecords request acknowledgementSent when a request arrives: reference and response deadline.
Email templateRecords request: decision to withholdSent when the request is refused, with the decision letter attached.
Email templateRecords request extensionSent when the deadline is extended.
Email templateRecords request: no records foundSent when no responsive records exist, with the letter attached.
Data tableExemption codesThe exemption codes reviewers can apply, per regime. A configurable list of EXAMPLES: edit it to match your statute and practice.
Data tableExemptions logOne 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 tableRecords requestsEvery public records request: requester, regime, statutory due date, status and outcome.
Data tableRequest activityAudit trail: each step of each request, when it happened and who acted.
IntegrationGoogle 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.
IntegrationRecords release portalWhere released records are shared with the requester (a download link). Replace with your portal, document management system or secure file share.
API referenceCreate release linkPOST /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 tableRecords 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 policyRecords requests: 7 yearsRequests, exemption logs and the audit trail are kept for 7 years after creation, then reviewed. Adjust to your records schedule.
formsPublic records requestThe public form for records requests (FOIA, OIA, state public records acts): requester details, records sought, dates and how to deliver them.
WorkflowPublic records request82 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

What you connect it to

Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.

Needs

  • Media AI provider — An API key for a media AI provider (Google Gemini by default; OpenAI, Azure AI, AWS and others can be swapped in) that transcribes, analyses and finds what to redact.
  • REST API — A REST API integration: set its base URL and credentials on install.
  • Assignees — People in your workspace to receive the User Tasks (picked on install).
  • Email — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. Google Gemini (media AI): paste your API key from aistudio.google.com. Redaction runs with your own key; to use another provider (OpenAI, Azure AI Vision, AWS) add that integration and choose it on the media steps.
  2. Records release portal: set the base URL and token of the system that hosts download links (or remove the Create release link step and send attachments only).
  3. Assignees: pick the records officer who gathers records and the legal reviewer who approves releases.
  4. Review the Records request rules and Exemption codes tables with your counsel: the rows are examples (deadline counts, day types, extensions and exemption codes differ by statute and agency). They are not legal advice.
  5. Apply the "Records requests: 7 years" retention policy to the Records requests, Exemptions log and Request activity tables to match your records schedule, and set EMAIL_PROVIDER so requesters receive their letters.
  6. Background media steps need FFmpeg (Docker image or FFMPEG_PATH) and the media job scheduler (process-media) running, as for any long video.

Asked for on install

  • Integration “Google Gemini (media AI)”Required

    • Key valueconfig.auth_config.key_value
    • Base urlconfig.base_urldefault https://generativelanguage.googleapis.com· optional
  • Integration “Records release portal”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://records-portal.example.com/api· optional
  • Workflow “Public records request” assigneesRequired

    • User for step “Gather responsive records”nodes.12.config.assignee_id
    • User for step “Legal review and release decision”nodes.46.config.assignee_id

Install

Install it in your workspace

Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.

In the app

  1. Download foia-records-request-redaction-1.0.0.utpkg.
  2. Open Automations → Packages and drag the file onto the page (or choose Import package). Browse gallery there lists every gallery package without downloading by hand.
  3. Pick the file. The wizard verifies the checksum, every file hash and the signature, and shows the readme.
  4. Review the changes (what is created) and the data rows.
  5. Fill in the requirements, or tick Keep incomplete and finish later with Complete setup.
  6. Done: the workflow is published and active once setup is complete.

With the CLI

shell
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.yaml

Verify the download

File SHA-256
72f39a50fbe5a48de3aec0377a3e6c516600296be44204877713daf6fe8bdce1
Package checksum (what is signed)
sha256:4278287c42e5aa8519fffa2c1a182764591653beec5aeaa8e4508c2e96fa792a
Signer
UserTasks Gallery · 49:f3:04:90:47:02:4d:07:28:61:3d:dc:bb:aa:db:11

shasum -a 256 foia-records-request-redaction-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.0

  1. v1.0.02026-10-30First release.

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

Related

Browse the whole gallery