← All posts
May 3, 2026 ยท Technical

What a good PO match looks like

Get the SKU mapping wrong and nothing else matters. You ship the wrong product, quote the wrong price, and start a returns problem. Here is the cascade SideQuest runs to get it right.

When a customer emails you a purchase order, your first job is to figure out which catalog items they want. Customers don't write your SKUs. They write their own. Or their last vendor's. Or a vague description that would normally take three follow-up questions to resolve. Half the value of a senior inside-sales rep is knowing which customer means what when they say "the long brass one."

SideQuest's matcher reproduces that experience. It tries four paths in order of confidence and stops at the first one that's good enough.

Path 1: Exact SKU

The customer wrote your part number. Confidence 1.0, no review needed. About a third of POs we process resolve this way. Often because the customer imported your old spreadsheet quote into their ERP years ago and never went back to their own internal numbers.

Path 2: Cross-reference table

The customer wrote a part number that maps to one of yours in a per-customer cross-reference table. Datamoto says DM19012, you say RB-100, the cross-ref table knows. Confidence 0.99, no review.

The cross-ref table is the most under-noticed asset in your business. Every senior rep has one in their head. SideQuest gives you a place to write it down. The first time a rep resolves ACME-EL34 by hand into BR-ELB-075-NPT, they add it to the cross-ref. The next twelve POs from Acme with that part number resolve without intervention.

Path 3: Description-only

Customer left the part-number field blank, or wrote nonsense in it, but gave a description: half inch brass tee npt lead-free. SideQuest tokenizes both the description and every catalog item's name and description, then scores them with RapidFuzz's token_set_ratio. Scores above 0.85 pass as matched. Scores between 0.65 and 0.85 surface as "review with candidates," with the top four catalog items ranked for the rep.

Description-only matching takes the longest to tune for a new customer. Your catalog descriptions are written for one audience (you), and your customers' descriptions are written for another (them). The first month with a new customer, expect to review and confirm a lot of description matches. After that, the cross-ref table fills up and the friction drops.

Path 4: Unmatched

Below 0.65 confidence on every path, the line is unmatched. SideQuest returns the closest four catalog candidates anyway, so the rep can scan them and either pick one (which seeds the cross-ref) or flag the line for follow-up with the customer.

What the cascade produces

Here is a real 7-line PO running through the pipeline:

Line 1  BR-ELB-050-NPT          exact_sku       1.00   pass
Line 2  ACME-EL34               cross_reference 0.99   pass
Line 3  (blank, "half inch...") description     0.92   review
Line 4  CU-PIP-075-K10          description     1.00   pass
Line 5  ZZZ-WIDGET-9999         unmatched       0.36   review
Line 6  TEFLON-TAPE             cross_reference 0.99   pass
Line 7  STL-BOLT-050-13-2       exact_sku       1.00   pass

Four lines auto-pass. Two surface for review. One is unmatched and gets candidates. The rep sees a draft Estimate with the four clean lines already in it, plus a banner: 3 lines held for review. They resolve the three review items in about a minute (mostly clicking the right candidate), and the Estimate is done.

Compared to typing all seven lines from scratch, that's 4 minutes versus 30 seconds. More important than the time saved: the senior rep stays in the loop on the ambiguous lines. She still catches the weird edge cases. She still hits Send. SideQuest removes the typing she would have done anyway.

A good match isn't just a high confidence score. A good match is one that gets the right answer to the right human at the right time. Auto-pass the obvious ones. Surface the ambiguous ones with candidates. Make the senior rep's job 90% review and 10% rescue, instead of the inverse.

Want to see this run on your own PO? Email us a sample and we'll send back the full match output.