Skip to main content
    All case studies
    Case study · Catalog curation
    Meridian Operations · catalog with audit-friendly granularity

    96% accuracy. One item per turn.

    The Product Specialist proposes, cites its sources, and waits for approval. It doesn't batch. It doesn't guess on ambiguous cases. Every change has a name on it.

    0%
    Classification accuracy on first-pass acceptance
    0
    Item per turn — bulk operations off by design
    0x
    Faster per-item curation vs. manual research
    Built with
    Claude by AnthropicClaudePostgreSQLPostgresDrizzle ORMDrizzleORMMicrosoft TeamsTeams
    The problem

    Spreadsheet bulk-edits propagate the wrong formula. Audit rows record who, not why.

    Catalog quality used to be one of those things that quietly degraded when nobody owned it. A spreadsheet bulk-update would rewrite 300 rows correctly and 12 rows wrong; the wrong ones surfaced months later as variance complaints. Six months on, the curator who made a wrong code didn't remember whether it was deliberate or a copy-paste.

    • The bulk mistake
      Catalog updates were done in spreadsheet exports: filter, edit, re-import. A wrong formula in column G propagated to 300 rows before anyone noticed. The correction took longer than the original error.
    • Classification research sprawl
      Finding the right code for a new product meant opening three browser tabs, cross-referencing two reference tables, and checking what similar products in the catalog used. A curator who knew where to look took 12 minutes. A curator who didn't took 40.
    • Audit rows with no reasoning
      The database recorded who changed a field and when, but not why. A wrong code six months old had no trail — was it deliberate? A copy-paste error? A reversed policy? The curator who made it might not remember.
    • Enrichment suggestions with no context
      When the extractor's output differed from the catalog value, a suggestion was generated. A curator looking at it had to decide: better answer, or document-reading mistake? Without context, a coin flip.
    Catalog audit log · who, not why
    5 unrecoverable
    bulk-import 312 rowsoperator A · 4mo ago12 rows wrong; reason unknown
    code 8471.30 → 8471.40operator B · 6mo agono reasoning recorded
    alias merged 'Cab Sav' / 'Cabernet Sauv.'operator C · 3mo agotwo distinct products
    threshold 1L → 1.5Loperator A · 8mo agopolicy reversed since
    enrichment suggestion ignoredoperator D · 2mo agooutcome not logged
    Audit row says who · not whyNo reasoning trail
    The pipeline

    From inbox to verified record in one pass

    Six steps per item. The one-item-per-turn limit isn't a UI choice — it's the audit model.

    01Pick
    Product specialist selected
    Curator opens the assistant and picks the product specialist persona. Grant required to see the option.
    02Intake
    Item identified before action
    Curator names the product, pastes an enrichment suggestion, or describes what they want to create. Specialist confirms it understood the item before proceeding.
    Claude
    03Research
    Reference tables and neighbors pulled
    Specialist pulls reference-data lookups, alias candidates, and prior classification decisions for products with similar descriptions. It does not propose yet — it gathers.
    04Propose
    Code + sources presented
    Specialist proposes a classification code, alias additions, and metadata updates. Each proposal includes the source(s) that drove it: which reference table, which neighbor, which signal.
    Claude
    05Confirm
    Curator approves item-by-item
    Curator approves, edits, or rejects each proposal individually. No batching. Rejected proposals trigger a follow-up question; the correction logs as a new example.
    06Commit
    Audit row with reasoning, not just identity
    Approved changes write to the catalog. Audit row includes curator identity, specialist's reasoning, source citations, timestamp. The reasoning is part of the record, not a transient log.
    PostgreSQL
    Similar to existing catalog items
    Approve in under two minutes with full audit row
    Specialist finds close matches, proposes a classification code with high confidence, and cites the matching catalog items as sources. Curator approves quickly; the audit row is complete with reasoning attached.
    Novel product, no neighbors
    Show candidates, ask the curator to pick
    Specialist flags that it is working from reference tables only, shows the two or three candidate codes with confidence scores for each, and asks the curator to select. It does not pick one and present it as a recommendation. The curator's selection becomes the example for future similar products.
    Validation review

    First-pass acceptance per curation action

    The specialist handles five action types. The enrichment-suggestion review is the lowest-confidence one — and the source explains exactly why.

    Field-level confidence
    Pass 2 — Claude self-review
    New product creationFirst-time catalog entry
    98%High
    Classification code revisionReplace an existing code with a new one
    94%High
    Alias additionAdd a known-alternate description
    97%High
    Threshold adjustmentNumeric per-account threshold change
    96%High
    Enrichment-suggestion reviewAccept or reject an extractor-derived correction
    64%Low
    Routed to human review. The specialist must judge whether the correction was an isolated document-reading error or a systemic catalog gap. Adding a per-product-type accuracy signal to the tool call would raise this substantially — it's a data-availability problem, not a model problem.
    4 of 5 fields cleared the 0.85 threshold
    model: First-pass acceptance
    The stack

    Boring tech, glued together well

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

    Claude by AnthropicClaude
    Claude
    Plans research, proposes codes, and writes the reasoning summary on the audit row
    PostgreSQLPostgres
    PostgreSQL
    Catalog records, alias table, audit rows with reasoning, enrichment suggestions
    Drizzle ORMDrizzleORM
    Drizzle ORM
    Type-safe queries against the catalog and reference tables
    Microsoft TeamsTeams
    Microsoft Teams
    Notification surface when low-confidence enrichment suggestions accumulate

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

    Outcomes

    What changed when 'who' became 'who and why'

    Catalog reasoning lives on the audit row, not in someone's memory. A wrong code six months from now is investigable.

    0%
    Classification accuracy on first-pass acceptance
    0
    Item per turn — bulk off
    0x
    Faster per-item curation
    0%
    Catalog changes audit-trailed with reasoning
    Watch first-pass acceptance per proposal

    Currently 96%. If curators are editing more than 4% of proposals, two failure modes are possible: the reference data is stale (fix with a refresh) or the specialist's prompt is missing examples for a new product category (fix with a few new examples). Both are easier to address at 4% than after the catalog has accumulated 200 wrong codes.

    If your catalog quality quietly degrades when nobody owns it, this pattern fits

    One item per turn isn't a UI decision — it's the audit model. Every change is one decision, one name, one reason. We'll scope it on a 30-minute call.