A lead flagged duplicate_status: suspected looks exactly like a clean lead on its own record page, and Convert Lead never mentions it — the duplicate is converted into a second account, contact and opportunity
What happens
crm_lead already holds Theo Park / Skyline Media / theo.park@skylinemedia.example.com (seed data).
- Create a new lead through the UI with the same email and company (
Wei Zhang / Skyline Media / theo.park@skylinemedia.example.com). It is accepted with no warning.
- Open the new lead. The record page shows status, score, owner, email — and nothing else. Nothing indicates it is a suspected duplicate.
- Press Convert Lead → confirm → tick Create Opportunity → Submit. It converts.
The stored record after step 2 is not ambiguous — lead_duplicate_check did its job:
"duplicate_of_type": "crm_lead",
"duplicate_of_lead": "dfSlnObNu0oXwRk-",
"duplicate_status": "suspected"
and after step 4:
"converted_account": "2y7-PvxbS1o08j7A", // new account ACC-000010 "Skyline Media"
"converted_contact": "5B0nItHGRr768EfD",
"converted_opportunity": "VLEnmZCSf7BkT1xA"
So the app detected the duplicate, wrote the flag, and then converted it anyway — creating a second account for a company it already had a lead for, plus a contact and a pipeline opportunity behind it. Two reps now work the same buyer, and the pipeline is double-counted.
Where the flag does and does not surface
src/views/lead.view.ts:446 ships a suspected_duplicates grid, and the comment above it is explicit about the intent: "Without a place to SEE that set, the flag would be a column nobody reads." That queue exists and drains — but it is one list view behind the view switcher. Nothing carries the flag to:
- the lead record page — no banner, no field, no badge (
src/pages/lead_detail.page.ts never mentions duplicate_status);
- the conversion itself —
Convert Lead asks one question ("create an opportunity?") and never looks at duplicate_status.
A reviewer working the queue is the slow path. The rep who is about to convert is the moment the flag is worth something, and it is silent there.
Suggested direction
Two independent pieces, either one useful alone:
- Show it on the record. A
suspected-conditional banner (or at minimum the duplicate_of_lead link in the highlights) on lead_detail.page.ts, so a rep opening the lead sees "this repeats an existing lead" with a link to compare.
- Say it at conversion. The convert screen already collects input; a suspected duplicate should surface there — at minimum a warning line naming the record it repeats, so converting is a decision rather than an accident. Whether it should block is a product call worth deciding explicitly.
Found by driving the app as a seller in a browser against a fresh pnpm dev on 17.1.0.
A lead flagged
duplicate_status: suspectedlooks exactly like a clean lead on its own record page, andConvert Leadnever mentions it — the duplicate is converted into a second account, contact and opportunityWhat happens
crm_leadalready holdsTheo Park / Skyline Media / theo.park@skylinemedia.example.com(seed data).Wei Zhang / Skyline Media / theo.park@skylinemedia.example.com). It is accepted with no warning.The stored record after step 2 is not ambiguous —
lead_duplicate_checkdid its job:and after step 4:
So the app detected the duplicate, wrote the flag, and then converted it anyway — creating a second account for a company it already had a lead for, plus a contact and a pipeline opportunity behind it. Two reps now work the same buyer, and the pipeline is double-counted.
Where the flag does and does not surface
src/views/lead.view.ts:446ships asuspected_duplicatesgrid, and the comment above it is explicit about the intent: "Without a place to SEE that set, the flag would be a column nobody reads." That queue exists and drains — but it is one list view behind the view switcher. Nothing carries the flag to:src/pages/lead_detail.page.tsnever mentionsduplicate_status);Convert Leadasks one question ("create an opportunity?") and never looks atduplicate_status.A reviewer working the queue is the slow path. The rep who is about to convert is the moment the flag is worth something, and it is silent there.
Suggested direction
Two independent pieces, either one useful alone:
suspected-conditional banner (or at minimum theduplicate_of_leadlink in the highlights) onlead_detail.page.ts, so a rep opening the lead sees "this repeats an existing lead" with a link to compare.Found by driving the app as a seller in a browser against a fresh
pnpm devon17.1.0.