Every inbound source normalizes into one lead shape at the boundary, so a WhatsApp enquiry and a web form produce the same record with a channel attribute rather than two different objects. Identity resolution runs on entry: email, normalized phone and company domain are compared before a new lead is created, and a probable match is merged with the previous record instead of duplicating it.
Scoring is deliberately explainable. Each contributing signal — declared budget range, company size band, stated timeline, channel, engagement recency, fit against the ideal customer profile — produces a weighted contribution, and the interface shows the contributions rather than only the total. A rep who disagrees can see exactly which signal moved the number, which is the difference between a score being used and a score being ignored.
The model drafts, a person sends. First-touch messages are generated from the lead record and the qualification notes, then held in a review state. Nothing leaves the system without a human pressing send, because an automated message with a wrong assumption in it costs more than the time it saved.