Skip to main content
    All case studies
    Case study · Catalog reconciliation
    Meridian Operations · multi-line declarations with regulatory thresholds

    Catalog reconciliation: 14× faster, 91% match

    A reviewer who used to spend an afternoon cross-referencing packing lists against a product catalog by hand now spends four minutes approving a pre-matched summary — and the catalog fills itself in as new items arrive.

    0%
    Packing-list line items matched
    0x
    Faster than manual reconciliation
    0.00
    Threshold-validation pass rate
    Built with
    Zoho DeskZohoDeskClaude by AnthropicClaudeCloudConvertCloudConvertMicrosoft AzureAzurePostgreSQLPostgres
    The problem

    A 60-line packing list took 90 minutes — and the threshold checks happened at the end

    Coordinators copied lines from packing lists into spreadsheets, looked up codes in catalog tabs, and typed values into a third column. The same product appeared under three different descriptions across three accounts. Threshold violations only surfaced when the reviewer checked the final form, by which point the rest of the packet was already done. Rework was the default state.

    • Line-by-line in a spreadsheet
      Coordinators copied each line from the packing list into a spreadsheet, looked up the product in the catalog tab, then typed the catalog code into a third column. A 60-line list took 45 to 90 minutes — and errors only surfaced when the reviewer checked the final form.
    • Threshold violations caught at the wrong step
      Regulatory caps on volume and percentage limits were checked at the end of the process, not during data entry. By the time a violation flagged, the coordinator had already finished the form. Rework was the norm.
    • Description drift across accounts
      The same product appeared under different descriptions depending on which account submitted: "750ml Cabernet Sauvignon" from one, "Cab Sav 750" from another. Without a per-account alias table, both required manual catalog lookup every time.
    • No visibility into unmatched items
      When a line didn't match anything in the catalog, it was left blank and flagged with a sticky note in the PDF. Catalog curators had no systematic view of what was accumulating across packets; the catalog grew only when someone remembered.
    Unmatched items · this week
    accumulating
    Hartwell Trading Co.Cab Sav 750ml ×120alias drift
    Westridge Imports750ml Cabernet Sauvignon ×96alias drift
    Cascade LogisticsPinot Gris 1L ×48no match
    Northbay GroupCabernet Sauvignon 1.5L ×24 — over 1L capthreshold flag
    Olmsted & SonsCabernet Sauvignon, 750mlalias drift
    Riverhead Co.Pinot Noir 750ml — new SKUno match
    Same products · five spellingsNo alias table
    The pipeline

    From inbox to verified record in one pass

    Six steps. Catalog match and threshold check happen before the reviewer ever sees the packet.

    01Trigger
    Account submits packing list
    PDF or scanned image uploaded via Zoho Desk ticket; attachment URL queued for processing.
    Zoho Desk
    02Detect
    File type detected; scans OCRed
    PDFs proceed to extraction; scanned images run through CloudConvert OCR to produce a searchable PDF first.
    CloudConvert
    03Extract
    Line items pulled with quantity, unit, description
    Claude reads the packing list and returns each line as a typed record: description, quantity, unit, value per unit, with source spans.
    Claude
    04Match
    Catalog matched per account
    Description fuzzy-matched against the account's catalog and alias table; exact matches auto-resolve; unmatched items go to the curator's enrichment queue.
    05Validate
    Threshold rules per line
    Volume per unit, percentage limits, and restricted-product flags checked against the account-specific thresholds in the catalog. Violations held for reviewer action.
    Azure Functions
    06Confirm
    Reviewer approves the summary
    Reviewer sees one screen: matched items grouped, threshold flags shown inline, unmatched items separated. Approves matched rows in bulk; routes individual rows back if needed.
    High confidence
    Bulk approval in a four-minute median
    91% of line items match the catalog at or above the confidence threshold; threshold checks pass at 0.94; reviewer approves the packet in a median of 4 minutes and the form is submitted. Matched items raise catalog confidence scores, improving the next packet from the same account.
    Low confidence
    Row-level routing into the enrichment queue
    Unmatched items land in the catalog enrichment queue with the extracted description and source span. Threshold violations are held with the specific rule and the measured value displayed inline. Reviewers resolve one row at a time rather than re-doing the whole list.
    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
    packing-list-MO-50412.pdf
    Target schema
    Line items × 60
    ✓ extracted
    Cabernet Sauvignon
    ✓ extracted
    120
    ✓ extracted
    750ml bottles
    ✓ extracted
    $18.50
    ✓ extracted
    2204.21.5000
    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
    Line descriptionCabernet Sauvignon
    97%High
    Quantity120
    95%High
    Unit of measure750ml bottles
    92%High
    Declared value per unit$18.50
    89%High
    Tax classification2204.21.5000
    58%Low
    Routed to human review. Three candidate codes match the description with overlapping coverage: 2204.21.5000, 2204.21.6000, and 2204.21.8000. The description alone is insufficient to distinguish between them; routing to reviewer to choose.
    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 submission queue; reviewer confirmation written back as ticket annotation
    Claude by AnthropicClaude
    Claude
    Extracts line items with source spans, then reviews per-field confidence
    CloudConvertCloudConvert
    CloudConvert
    OCR preprocessing for scanned packing lists before extraction begins
    Microsoft AzureAzure
    Azure Functions
    Hosts the extraction pipeline, catalog matching, threshold validation, and enrichment queue writes
    PostgreSQLPostgres
    Postgres + Drizzle ORM
    Per-account catalog with aliases, classification overrides, threshold rules, enrichment queue

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

    Outcomes

    What changed for the reviewer

    Approve a pre-matched summary in four minutes instead of reconciling lines by hand for an afternoon. The catalog itself gets sharper every week as unmatched items accumulate in the enrichment queue.

    0%
    Line items matched to catalog
    0x
    Faster than manual reconciliation
    0.00
    Threshold-validation pass rate
    0 min
    Median per-packet reviewer time
    Watch the per-account match rate, not the global one

    A new account starts low — sometimes below 50% — because the catalog is empty. As reviewers resolve unmatched items and the curator adds entries, each subsequent packet from that account matches more lines automatically. If the rate flatlines for a new account after four weeks, the curator hasn't kept up with the enrichment queue. If the rate drops for an established account, the submitter has changed how it describes products — a description- drift problem the alias table fixes.

    If you process multi-line declarations with catalog lookups, this pattern fits

    Anywhere a reviewer reconciles line items by hand against a product catalog and checks regulatory thresholds at the end, the same loop applies. We'll scope it on a 30-minute call.