Legal & Compliance

ProcessFOIrequestsfromintaketocompliantredacteddossier

Two agents, two duties: one maps and tasks every record‑holding service for a FOI search, while the other permanently redacts restricted passages and logs the exact legal basis for each blackout.

Key Takeaways

Days, not weeks

From request received to redacted dossier transmitted — without a single coordination email.

Legally defensible

Every blackout cites the exact provision of the act. Built to survive an appeal.

All services in parallel

Each service member receives a targeted search assignment by email the moment the request is logged.

Consistent application

The same rule is applied the same way on every page, every request. No analyst variability.

Secure and irreversible

Redacted content is permanently inaccessible. It cannot be recovered from the output document.

Full audit trail

Every redaction is logged with the statutory provision, document, page, and passage. Structured for review.

Redaction is the bottleneck. Precision is the requirement.

An FOI request that mentions 'all communications related to the Riverside development, 2022–2023' doesn't arrive pre-sorted. The coordination step reads it, determines which services are likely to hold relevant records, and generates targeted search briefs for each one — specifying what to look for, which systems and timeframes to check, and what a complete search looks like. Engineering gets a brief scoped to Engineering systems. Legal gets a brief scoped to Legal. The clerk didn't make that list. Nobody did.

The redaction step runs once documents are collected. Every withheld passage is linked to a specific statutory exemption — not just cited, but justified in writing, in language structured to hold up under internal review and external appeal. The system logs what was redacted, under which provision, and why. When an applicant challenges a redaction, the file already contains the answer.

Together, the two steps compress end-to-end response time, eliminate the coordination delays that cause most deadline overruns, and produce a defensible dossier — one where no relevant service was overlooked and no exemption was applied casually.

Two agents, one call each

The coordination agent reads the FOI request and emails each service member a targeted search assignment. The redaction agent takes all contributed files, loads the applicable exemptions, and produces a permanently redacted dossier with a per-redaction justification log.

import dspy
from predict_rlm import File, PredictRLM

class CoordinateFOIRequest(dspy.Signature):
    """Read the FOI request, identify every municipal service that holds
    relevant records, and draft a targeted search assignment for each member."""
    foi_request: File              = dspy.InputField(desc="The FOI request (PDF or letter)")
    org_chart: File                = dspy.InputField(desc="Municipal org chart and staff directory")
    assignment_emails: list[str]   = dspy.OutputField(desc="Email body per service member with targeted search instructions")

coordinator = PredictRLM(CoordinateFOIRequest, lm="openai/gpt-5.1", max_iterations=10)
result = coordinator(
    foi_request=File(path="foi-request-2026-0412.pdf"),
    org_chart=File(path="municipal-staff-directory.xlsx"),
)
# result.assignment_emails → sent directly to each service member

Built on predict-rlm — open source. github.com/Trampoline-AI/predict-rlm

What the clerk receives

Two deliverables, one from each automation. The coordination agent sends one email per service member — not a broadcast, but a targeted assignment specifying which records to search for, on which systems, and which points in the FOI request they relate to. Assignments land directly in each recipient’s inbox; no clerk forwards anything. The redaction agent produces a single PDF package with all blackouts applied. Redacted content is permanently inaccessible — it cannot be recovered from the output file. Every blackout is logged in an Excel justification report: document, page, passage, statutory exemption, and approval status. The report is structured to hold up to an appeal.