2.8 KiB
2.8 KiB
2026-05-09 — TIP No-Valid-Match Resolver
Operator Requirement
- Continue TIP verification until source-backed work is exhausted.
- Do not invent competitor matches just to turn products green.
- Use deterministic TIP robots/scrapers only.
- Keep Erik safe; do not restart crawler daemons while active jobs are running.
- Write crawler/scraper/robot learnings into the TIPLLM training pool.
Change
Added packages/scraper/src/utils/resolve-no-valid-competitor.ts and package script:
pnpm -C packages/scraper run verify:no-valid-competitor
The resolver is dry-run by default. Applying changes requires:
NO_VALID_MATCH_APPLY=1 pnpm -C packages/scraper run verify:no-valid-competitor
The default vendor scope is Flexoptix:
NO_VALID_MATCH_VENDOR=Flexoptix
Rules
A product can be resolved as competitor_status='no_valid_match' only when:
- the product is active and not in a known artifact category
- price, image, and details are already verified
- competitor verification is still unresolved
- no other vendor has a source-backed strict candidate with the same form factor, speed, fiber, reach within max(25m, 5%), and compatible wavelength when both sides expose it
- no pending/approved equivalence above confidence
0.50already exists
The robot writes competitor_no_match evidence and then calls checkAndSetFullyVerified.
Live Result
On Erik:
- dry-run Flexoptix scope found
73candidates - apply run updated
73 73products earnedfully_verified- evidence ledger now has
73competitor_no_matchrecords
Live health after the resolver run:
- active products:
17414 - price verified:
11523 - image verified:
12125 - details verified:
16814 - fully verified:
10831 - competitor status:
matched=11158no_valid_match=73ambiguous=0needs_research=6183
Post-Restart Reconcile / Matcher
After QSFPTEK/NADDOD pricing jobs cleared:
- restarted
tip-scraper-daemononce - queued
maintenance:reconcile-verification - queued
maintenance:find-equivalences - both jobs completed
Live health after matcher:
- active products:
17414 - price verified:
11523 - image verified:
12125 - details verified:
16814 - fully verified:
10831 - competitor status:
matched=11158no_valid_match=73ambiguous=192needs_research=5991
The matcher moved 192 products into ambiguous. This is intentional: ambiguous is safer than a false 1:1 match.
Remaining fully populated product rows with needs_research:
FS.COM=74Flexoptix=15ATGBICS=2
Operational Notes
tip-scraper-daemonwas only restarted after active pg-boss jobs completed.- After restart, queue reconcile and matcher.
- This is the correct pattern for rare products: explicit no-match evidence beats false 1:1 matches.