← Back to Shippo body of work / USPS Reconciliation
Shipped · Q4 2025 – Q1 2026 cycles

USPS unmanifested & duplicate label reconciliation.

Carrier disputes used to live entirely in someone's head, and we were leaking money because of it. I codified the joint review process into a 5-phase SOP with a 4-way data match, built four artifacts that make it repeatable, and got cycle time down from three weeks to three days.

Carrier Operations Rate integrity · variance Databricks · Claude · BCG Portal SOPs & operating playbooks
The problem

Every month, the USPS billing system handed us a thick file of unmanifested and duplicate label charges. Some were legitimate partner liability. Most were carrier billing errors. But the line between the two lived in someone's head, got reconciled manually against four separate internal systems, and missed the BCG dispute window often enough that we were just writing money off.

What I built

A 5-phase joint review SOP (placeholder dispute, data pull, 4-way enrichment, submit, follow-up) with a Databricks enrichment workflow and a custom Claude skill at the core. Four standing artifacts replaced the old ad-hoc Slack threads. The same cycle now runs on a calendar instead of on memory.

Role
Head of BizOps · process owner
Stakeholders
Finance · Engineering · USPS · partner ops
Stack
Databricks · Python · Claude skill · BCG portal
Timeframe
Q4 2025 – Q1 2026 · ongoing
$242K+
USPS surcharges recovered or challenged
34K+
Disputed labels reviewed
~80%
Manual analyst hours cut
3 wks → 3d
Cycle time, data → submission

The 5-phase joint review SOP

Every phase has a documented owner, an SLA, and a templated artifact, so anyone on the team can run the cycle without pulling me in.

Phase · 01

File a monthly placeholder dispute

File a placeholder dispute in the BCG portal by the 10th of the following month to reserve our right to challenge charges. Recurring task with a calendar reminder and templated case description, so anyone on the team can file it in under 10 minutes.

Phase · 02

Pull the raw data

Pull the Unmanifested and Duplicates CSVs out of BCG. Standardized file naming and a shared drop-folder so the automation downstream knows where to look. A QA checklist verifies row counts and date coverage before handoff to enrichment.

Phase · 03 · the core

Enrich data: the 4-way match

Each disputed label is validated against four independent data sources: manifest data (was it actually scanned?), destination ZIP match (does the charge match what we billed?), payment data (do we have the ACH withdrawal or EPS transaction ID?), and in-system check (does it exist in our label database?).

The whole thing runs through a Databricks query feeding a Claude skill that classifies each row as recoverable, pending, or pass-through. That 4-way match is what makes the whole process auditable.

Phase · 04

Upload the analysis and submit to USPS

The auto-generated joint review summary gets uploaded to the BCG case, then mirrored in an email to the USPS reviewer with all the required attachments. Templated subject line and body, dispute total calculated from the enriched dataset. What used to take about 3 hours of manual assembly is now a single click.

Phase · 05

Follow up until it's resolved

A status tracker with ownership, days-since-submission, and escalation triggers. Slack notifications fire when a case crosses 14 / 30 / 45 days. Closes the loop by pushing approved credits into the partner billing reconciliation file.


The four standing artifacts

Each one replaced something brittle and one-off with something durable. Together they let the cycle run repeatably across partners.

Partner-facing Joint Review SOP
Plain-language walkthrough · official partner onboarding doc
→ Replaced ad-hoc Slack threads and email Q&A
Internal Joint Review Tracker
Single source of truth · cycle status, owners, deadlines
→ Replaced spreadsheets scattered across analyst inboxes
4-Way Match Enrichment Workflow
Databricks SQL · joins dispute data against manifest, ZIP, payment, in-system
→ Replaced manual VLOOKUP across 4 separate exports
USPS Reconciliation Skill (Claude)
Ingests CSVs · runs 4-way match · drafts partner summary & carrier email
→ Replaced ~3 hrs manual assembly per partner per cycle

What it actually looked like

A reconstruction of one cycle's enrichment output and the outbound submission email, anonymized but with real cycle data structure.

Cycle output · Dec 2025

The 4-way match in action

Anonymized
databricks · 4_way_match.sql
Enrichment results · 11,614 labels
$107,480 surcharges
Recoverable
$101,115
Pass-through
$6,338
Match rate
94%
ZIP mismatch10,257 labelsRecoverable
No manifest scan842 labelsRecoverable
Valid charge · paid412 labelsPass-through
Refund-rejected delta103 labelsRe-review
Output 1 of 2 · The enrichment

11,614 labels · $107K · classified in seconds

One cycle of disputed labels, run through the 4-way match. The Claude skill produces a recommendation per row plus a cycle summary the analyst signs off on before submission. What used to take about 30 hours of manual analyst work is now a 90-second query.

Databricks · Python Claude skill
mail · USPS Joint Review · Dec 2025
From: bizops@shippo · To: USPS reviewer · Cc: BCG-204871
USPS Joint Review · December 2025 · Dispute Submission for Partner A
Attached is the joint review summary for the December 2025 cycle. Cycle totals: 11,614 disputed labels · $107,480 in surcharges · 4-way match completed.

Recommended action: submit dispute for $101,115 across 10,257 ZIP-mismatch labels. Partner liability after credits: $6,338. REFUNDREJECTED delta will be re-reviewed in next cycle.
✓ Auto-attached BCG-204871 Generated by USPS Reconciliation Skill
Output 2 of 2 · The submission

One-click outbound to USPS

Templated subject, body assembled from the enriched cycle, all attachments wired to the BCG case. The analyst reviews, hits send. What used to be a multi-hour manual assembly step (and the bottleneck on the whole cycle) just isn't anymore.

Email template Auto-attach

What I'd do next

The next step is turning the Claude skill into a scheduled MCP-driven task that runs at cycle close, auto-files the BCG case, and routes the carrier email for one-click approval. After that, the 4-way match framework expands to all USPS surcharge types and grows into a productized Shippo capability across every carrier we touch.

The bigger pattern is auditability (every disputed charge has a documented 4-way match trail) plus repeatability (the same logic that processed 11K+ labels in one December cycle now runs across multiple partners on a standardized timeline). When you annualize the protected exposure it puts the run-rate in the high six figures, and the framework is already getting reused for adjacent disputes.