Create a CRM contact: a named person, with their address, phone numbers and CVR/VAT number. Refuses if the same email or phone already exists, unless allow_duplicate is true - relay the duplicates it names and let the user decide. `company` is free text here, not a link to a company record. AFTER CREATING, ASK WHETHER IT SHOULD BE ATTACHED TO A DEAL. A contact on its own sits outside the pipeline: it is a deal that carries the contact, through contact_id on crm_create_deal or crm_update_deal. TO ATTACH IT TO A LEAD, set contact_id on the lead with crm_update_lead - the pointer lives there, so one contact can sit behind several leads from the same person over time. BEFORE CREATING FROM A LEAD, CHECK: crm_get_contacts with the lead's email or name, in case the contact already exists. Creating a second one is how a customer ends up in the CRM twice. `list_id` takes a contact list by name or id, and only lists that exist in this workspace. `is_collaborator` marks someone you work with rather than sell to.