fix: creating contact on creation of lead
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index 49b682c..7f028cb 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -63,6 +63,22 @@
 	def on_update(self):
 		self.add_calendar_event()
 
+	def before_insert(self):
+		self.contact_doc = self.create_contact()
+
+	def after_insert(self):
+		self.update_links()
+
+	def update_links(self):
+		# update contact links
+		if self.contact_doc:
+			self.contact_doc.append("links", {
+				"link_doctype": "Lead",
+				"link_name": self.name,
+				"link_title": self.lead_name
+			})
+			self.contact_doc.save()
+
 	def add_calendar_event(self, opts=None, force=False):
 		super(Lead, self).add_calendar_event({
 			"owner": self.lead_owner,
@@ -116,7 +132,6 @@
 			"party_name": self.name,
 			"docstatus": 1,
 			"status": ["!=", "Lost"]
-
 		})
 
 	def has_lost_quotation(self):
@@ -137,10 +152,43 @@
 				self.lead_name = self.email_id.split("@")[0]
 
 	def set_title(self):
-		if self.company_name:
-			self.title = self.company_name
-		else:
-			self.title = self.lead_name
+		self.title = self.company_name or self.lead_name
+
+	def create_contact(self):
+		if not self.lead_name:
+			self.set_full_name()
+			self.set_lead_name()
+
+		contact = frappe.new_doc("Contact")
+		contact.update({
+			"first_name": self.first_name or self.lead_name,
+			"last_name": self.last_name,
+			"salutation": self.salutation,
+			"gender": self.gender,
+			"designation": self.designation,
+		})
+
+		if self.email_id:
+			contact.append("email_ids", {
+				"email_id": self.email_id,
+				"is_primary": 1
+			})
+
+		if self.phone:
+			contact.append("phone_nos", {
+				"phone": self.phone,
+				"is_primary_phone": 1
+			})
+
+		if self.mobile_no:
+			contact.append("phone_nos", {
+				"phone": self.mobile_no,
+				"is_primary_mobile_no":1
+			})
+
+		contact.insert(ignore_permissions=True)
+
+		return contact
 
 @frappe.whitelist()
 def make_customer(source_name, target_doc=None):