When two ledgers tie, the mark should not say "sure"
If 2 or 3 ledgers match an entry in the same way, the matcher gives each the same confidence. The app then fills in the first one with a green or yellow mark. The first one is first because of its name, not its meaning. This page shows four ways to handle a tie. Try each one with the keyboard below.
67 of 299entries with a suggestion on production were ties (22%)
42of them: "Interest" on a term-loan statement, 3 interest ledgers at 80% each
13two look-alike bank-charge ledgers at 91% each
≈ 11ties left after the matcher changes below (estimate; the replay will measure it)
Try the options
Choose an option, then click the table or press Tab to reach it. The table works like the Suggestions step: ↑/↓ move between entries, Enter opens the list, Ctrl+Enter accepts one suggestion, and Ctrl+Shift+Enter accepts all. Clear the "matcher tie-breaks" box to see today's state. The rows come from three parties and are shown as one import here.
Suggestions
Entries with a suggested ledger, least likely first. Check the red and yellow ones; Ctrl+Shift+Enter accepts every suggestion shown.
Sr. no.
Bank
Date
Narration
Reference
Debit
Credit
Balance
Ledger
The four options
Every option includes the same matcher changes (see "What changes in the matcher"). The options differ only in how a tie that is left looks and how the user chooses.
1 · Honest mark
What you see
The same Ledger box as today. A tie gets a split confidence (99% ÷ 2 ≈ 50%), so its mark is red. Red rows sort first, so ties are at the top of the list.
Keys
No new keys. Enter opens the list with the tied ledgers on top, each with its group below its name. ↓Enter takes the second one.
Focus
As today: it stays in the box while the list is open, then goes to the next entry without a choice below.
Edge cases
3-way tie: 80% ÷ 3 ≈ 27%, red. The list shows all three on top.
Duplicates (Trimurti Tools And / & Electricals): red, with two identical names in the list. The user picks the one they use.
Ctrl+Shift+Enter still accepts the first tied ledger, as it does for any red row.
2 · "or …" line
What you see
As option 1, plus one small grey line under a tied box that names the other tied ledgers: "or BANK CHARGES EXPENSES". The group is added only if it differs from the first one's group.
Keys
No new keys. Enter then ↓Enter takes the other one.
Focus
As today. The line is plain text, not a control.
Edge cases
3-way tie: the line lists two names and the row gets taller.
Duplicates: "or Trimurti Tools & Electricals" shows at a glance that the books have the ledger twice.
Accept-all: as option 1.
It adds text to the list, which INF-67 kept to a mark only.
3 · Switch in place
What you see
A tied box shows "1/2" next to its red mark.
Keys
New: Alt+] shows the next tied ledger in the box, and Alt+[ shows the previous one (it wraps). They work on the row and in the box. Ctrl+Enter accepts the ledger shown. (Alt+S was rejected: Firefox uses it for its History menu.)
Focus
It stays where it is. A status line reads the shown ledger: "2 of 2: BANK CHARGES EXPENSES".
Edge cases
3-way tie: "1/3", "2/3", "3/3".
Duplicates: switching shows a look-alike name and does not help.
Ctrl+Shift+Enter accepts what each box shows, including switched ones.
The shown ledger must be kept in tab state, so it is still there after a restart.
4 · Leave ties unfilled
What you see
A tied box is empty, with the grey text "2 ledgers fit · Enter to choose" and no mark. The entry stays on the Suggestions step and sorts first.
Keys
Enter opens the list on the first tied ledger, so EnterEnter takes it. Ctrl+Enter on a tie only says "fits 2 ledgers: press Enter to choose".
Focus
As today.
Edge cases
3-way tie: "3 ledgers fit".
Duplicates: the user must always choose between two identical names.
Ctrl+Shift+Enter skips ties and says "3 ties are left to choose". A tie is never accepted unseen.
Comparison
Option
Pros
Cons
New keys
Effort
1 · Honest mark
No UI change. The list stays a mark only (INF-67). Red already means "check this" and sorts first.
You do not know it is a tie until you open the list. Accept-all takes the first one.
None
S server only
2 · "or …" line
Shows the other choice without opening the list. Shows duplicates clearly.
Extra text in the list. Taller rows on 3-way ties.
None
S+ server sends the tie size; one line in the box
3 · Switch in place
Fast for "it is the other one": 2 keys.
A new shortcut for a rare case. Hidden state per entry. No help with duplicates.
Alt+[Alt+]
M tab state, accept-all, help dialog, docs, tests
4 · Leave unfilled
A tie is never accepted without being seen.
Slows down duplicates and the GST heads. Ctrl+Shift+Enter no longer clears the step.
None
M suggestion logic, accept-all notice, picker highlight, tests
What changes in the matcher (all options)
Define a tie as 2 or more recommendations from the same matcher with the same strength and the same fit for the entry's direction, after sortByRule. Today, any two with equal confidence look like a tie, even when the direction already put the right one first (HARIKRUPA).
Break it by direction and group. A receipt prefers a Sundry Debtors ledger and a payment prefers a Sundry Creditors one. The order already does this (contradicts). The change is that this now ends the tie, so the first one keeps its own confidence.
Break it by the bank ledger. If one tied ledger shares a distinctive word with the statement's bank ledger ("TERM LOAN", "CAR LOAN", "CC", "OD"), it goes first and the tie ends. This fixes the 42 interest rows.
Break it by words in the narration. For a GST payment, a narration that names CGST, SGST, IGST or CESS picks that Cash Ledger.
Break it by past choices. The ledger the user chose more often for this direction goes first. This already exists (exported choices, and live in the import being worked on), so once one bank-charge entry is saved, the others follow.
Split a tie that stays. Each tied ledger's confidence is divided by the tie size (99% → 50%, 91% → 46%, 80% → 27%), so the mark is red. The tracking situation gets a "tied" part, so the replay and production events can measure ties separately.
Ties on production
Rows
What breaks it
Left (est.)
"Interest" on a term-loan statement: 3 interest expense ledgers
42
Bank ledger name (TERM LOAN)
0
BANK SERVICES CHARGES EXPENSES / BANK CHARGES EXPENSES
Trimurti Tools And Electricals / & Electricals (duplicates)
1
Past choices only
1
One-word person names (already red at 20%)
2
Nothing
2
Similar names
1
Nothing
1
Total
67
≈ 11
Checks after the change: bun run matcheval before and after (first-suggestion accuracy must not fall), and a before/after run on the production copy that lists every tie that was broken or split.
Recommendation
Option 1: the matcher changes plus an honest red mark. No new UI.
The matcher removes about 5 of 6 ties. The ones left are real doubts, and red already means "check this" and sorts them to the top.
Choosing is already fast: Enter shows the tied ledgers on top, with groups. No new key to learn, and the list stays a mark only (INF-67).
Least effort and least risk: server code, tests and the replay only. Older installed apps get the fix without an update.
Second choice: option 2, if you want to see the other ledger without opening the list. It shows duplicate ledgers best, but it adds text to the list.