Skip to main content
    All case studies
    Case study · Deadline-driven submissions
    Meridian Operations · deadline-driven filings

    Email-to-filed declaration: 6-min median

    A queue that used to depend on someone manually checking an inbox twice a day now sweeps itself, classifies every attachment by format, and submits validated declarations before the deadline window opens.

    0%
    Datasheets auto-classified
    0 min
    Median email-to-filed declaration
    0.00
    Datasheet-vs-not detection accuracy
    Built with
    Zoho DeskZohoDeskMicrosoft AzureAzureClaude by AnthropicClaudeCloudConvertCloudConvertPostgreSQLPostgres
    The problem

    A coordinator opened the inbox twice a day. Anything else missed the deadline.

    Hundreds of pre-arrival declarations a week, all deadline-bound. The whole queue depended on one person opening a shared inbox at 8am and 2pm, downloading attachments, and deciding by eye what each one was. Off-hours arrivals had no path through. When a filing went late, the incident log named the coordinator — but the failure was structural.

    • Manual inbox checks twice a day
      The coordinator opened the shared inbox at 8am and 2pm, downloaded attachments one by one, and decided by eye whether each was a datasheet. Anything that arrived at 2:30pm waited until the next morning.
    • Five attachment shapes, one fragile process
      Clean PDFs, combined PDFs, partner-system XLSX exports, screenshots of email bodies, faxed scans. The same extraction template was applied to all of them; mis-routing was the most common error and only the downstream reviewer caught it.
    • Deadline misses logged as coordinator error
      When a filing was late, the incident log named the coordinator who missed the email. The actual failure was structural: the queue had no visibility into off-hours arrivals and no automatic catch-up on volume spikes.
    • No submission timestamp in the ticket
      Coordinators wrote the submission ID into a notes field by hand — or forgot. Auditors reviewing late filings couldn't tell when the declaration was actually submitted vs. when the ticket was last updated.
    One day's inbox · checks at 8am · 2pm
    5 / 7 missed
    07:42Pre-8am · clean PDFin window
    10:15Off-window · combined PDFmissed
    12:03Off-window · faxed scanmissed
    14:21Post-2pm · partner XLSXin window
    17:48After hours · screenshotmissed
    22:11Overnight · clean PDFmissed
    03:30Overnight · faxed scanmissed
    Inbox check at 14:00Next check: 8am
    The pipeline

    From inbox to verified record in one pass

    Every two hours, around the clock. The sweep doesn't care what time the email arrived.

    01Trigger
    Inbound ticket arrives
    New Zoho Desk ticket created by an inbound email; metadata and attachment references written to the local mirror.
    Zoho Desk
    02Sweep
    Mirror scanned every two hours
    A timer-driven Azure Function queries the local mirror for tickets in the queue with attachments and no extraction record yet.
    Azure Functions
    03Classify
    Format identified per attachment
    Claude evaluates each attachment against a known-format library and emits a confidence score; below 0.80 routes to manual review.
    Claude
    04Extract
    Ten typed fields with source spans
    Faxed scans run through CloudConvert OCR; Claude returns every field as a typed value plus the exact page and span it came from.
    Claude
    05Verify
    Second-pass confidence
    Claude reads each field against its source span and emits a 0.00–1.00 score plus a reasoning trace.
    Claude
    06Submit
    Declaration filed; ticket annotated
    Validated declaration submitted to the regulator's filing portal; ticket annotated with submission ID, timestamp, and per-field confidence.
    Zoho Desk
    High confidence
    Auto-submitted before the deadline window opens
    All ten fields at or above 0.70; declaration submitted without coordinator touch; Zoho ticket updated with submission ID and timestamp inside the same two-hour sweep window. 73% of filings now go in pre-deadline, up from 41%.
    Low confidence
    Held in the reviewer queue with one-field-resolution
    Any field below 0.70 — or any attachment the classifier couldn't place above 0.80 — moves to the queue with the score, the failure reason from the Claude reasoning trace, and the source page highlighted. Coordinators correct one field, not the whole form.
    Step 04 — Extraction

    What Claude saw → what the system received

    Scroll triggers the live extraction. Each region Claude reads on the document maps into the structured form on the right.

    Source attachment
    datasheet-MO-49118.pdf
    Target schema
    Declaration v2
    ✓ extracted
    Hartwell Trading Co.
    ✓ extracted
    Guangzhou Precision Parts Ltd.
    ✓ extracted
    Port of Yantian, China
    ✓ extracted
    Asia Pacific Freight Solutions
    ✓ extracted
    CN
    0 / 5 fields populated✓ ready for review
    Step 06 — Accuracy review

    The system tells you when it's unsure

    A second Claude pass scores every field against the source spans. High-confidence results post automatically. Anything ambiguous routes to a human with the reasoning attached.

    Field-level confidence
    Pass 2 — Claude self-review
    Buyer of recordHartwell Trading Co.
    97%High
    ManufacturerGuangzhou Precision Parts Ltd.
    64%Low
    Routed to human review. Two manufacturer fields appear on the datasheet — one labeled 'declared' and one labeled 'actual' — with different values. Conflicting entries; routing to reviewer to choose.
    Stuffing locationPort of Yantian, China
    93%High
    ConsolidatorAsia Pacific Freight Solutions
    91%High
    Country of originCN
    96%High
    4 of 5 fields cleared the 0.85 threshold
    model: Claude
    The stack

    Boring tech, glued together well

    Each vendor handles what it's best at. Aisyst owns the orchestration layer in between.

    Zoho DeskZohoDesk
    Zoho Desk
    Inbound email queue and ticket mirror; submission annotations written back via API
    Microsoft AzureAzure
    Azure Functions
    Timer-triggered sweep every two hours; hosts classification, extraction, and submission orchestration
    Claude by AnthropicClaude
    Claude
    Classifies and extracts, then scores per-field confidence with reasoning
    CloudConvertCloudConvert
    CloudConvert
    OCR preprocessing for faxed scans and format normalization before extraction
    PostgreSQLPostgres
    Postgres + Drizzle ORM
    Local Zoho ticket mirror for sweep queries; extraction records and submission audit log

    Third-party logos are trademarks of their respective owners and appear here only to indicate integration.

    Outcomes

    What changed for the queue

    The sweep fires every two hours, around the clock. The classifier knows what shape every attachment is. The submission timestamp is no longer hand-typed.

    0%
    Datasheets auto-classified from inbound
    0 min
    Median email arrival to filed declaration
    0.00
    Detection accuracy
    0%
    Filings in before deadline (vs. 41%)
    Pre-deadline submission rate is the metric the queue exists to move

    73%, up from 41%. The sweep fires every two hours around the clock, which means any email that arrives outside business hours still gets processed before the next deadline window. If pre-deadline rate drops, first check sweep cadence — a missed trigger turns a two-hour gap into a four-hour gap and filings start bunching at the deadline. If manual-review holds spike, a new attachment format is arriving that the classifier hasn't seen.

    If you have a deadline-bound submission queue, this pattern fits

    Anywhere a person manually checks an inbox to catch deadline-driven work, the same loop applies. We'll scope it on a 30-minute call.