ONLY-12: score matches from profile signals, not handles

main

Commit

karthik-rameshkumar5d ago

Replace the v0 scorer (language overlap plus a hash of the two handles) with a weighted additive model over eight profile signals: stack, working hours and chronotype, timezone gap, review tone, PR size, pairing, indentation and commit cadence, plus a small bonus for a shared favourite error. Hard clashes (tabs vs spaces, opposite chronotypes, a 4x PR-size gap) carry a flat cost.

Every match now reports up to three reasons, strongest first, and one deal-breaker: the signal that cost the most points. The score is symmetric and independent of names and handles.

Two approaches were prototyped against eval/couples.json. A gated model (soft signals multiplied by an hours-and-timezone gate) plateaued at 17 of 20 and made reasons depend on each other; the additive model puts all 20 labelled couples in the expected band and is kept.

Tests cover bounds, symmetry, handle independence, explanation content and a 17-of-20 floor on the labelled couples.

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com Entire-Checkpoint: 01M38W4A58ZX8QPWMRGG6QQJ8S

Checkpoints

Overhaul Matching Scorer with Profile Signals

Claude CodeFable 5.1
View session
Checkpoint 1