294 lines
8.4 KiB
QBasic
294 lines
8.4 KiB
QBasic
|
|
PARAM action AS STRING
|
||
|
|
PARAM lead_data AS OBJECT
|
||
|
|
|
||
|
|
lead_id = GET "session.lead_id"
|
||
|
|
user_id = GET "session.user_id"
|
||
|
|
current_time = FORMAT NOW() AS "YYYY-MM-DD HH:mm:ss"
|
||
|
|
|
||
|
|
IF action = "capture" THEN
|
||
|
|
lead_name = GET "lead_data.name"
|
||
|
|
lead_email = GET "lead_data.email"
|
||
|
|
lead_phone = GET "lead_data.phone"
|
||
|
|
lead_company = GET "lead_data.company"
|
||
|
|
lead_source = GET "lead_data.source"
|
||
|
|
|
||
|
|
IF lead_email = "" THEN
|
||
|
|
TALK "I need your email to continue."
|
||
|
|
lead_email = HEAR
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF lead_name = "" THEN
|
||
|
|
TALK "May I have your name?"
|
||
|
|
lead_name = HEAR
|
||
|
|
END IF
|
||
|
|
|
||
|
|
new_lead = CREATE OBJECT
|
||
|
|
SET new_lead.id = FORMAT GUID()
|
||
|
|
SET new_lead.name = lead_name
|
||
|
|
SET new_lead.email = lead_email
|
||
|
|
SET new_lead.phone = lead_phone
|
||
|
|
SET new_lead.company = lead_company
|
||
|
|
SET new_lead.source = lead_source
|
||
|
|
SET new_lead.status = "new"
|
||
|
|
SET new_lead.score = 0
|
||
|
|
SET new_lead.created_at = current_time
|
||
|
|
SET new_lead.assigned_to = user_id
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "leads", FORMAT new_lead AS JSON
|
||
|
|
|
||
|
|
SET "session.lead_id" = new_lead.id
|
||
|
|
SET "session.lead_status" = "captured"
|
||
|
|
|
||
|
|
REMEMBER "lead_" + new_lead.id = new_lead
|
||
|
|
|
||
|
|
TALK "Thank you " + lead_name + "! I've captured your information."
|
||
|
|
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF action = "qualify" THEN
|
||
|
|
lead = FIND "leads", "id = '" + lead_id + "'"
|
||
|
|
|
||
|
|
IF lead = NULL THEN
|
||
|
|
TALK "No lead found to qualify."
|
||
|
|
EXIT
|
||
|
|
END IF
|
||
|
|
|
||
|
|
score = 0
|
||
|
|
|
||
|
|
TALK "I need to ask you a few questions to better assist you."
|
||
|
|
|
||
|
|
TALK "What is your company's annual revenue range?"
|
||
|
|
TALK "1. Under $1M"
|
||
|
|
TALK "2. $1M - $10M"
|
||
|
|
TALK "3. $10M - $50M"
|
||
|
|
TALK "4. Over $50M"
|
||
|
|
revenue_answer = HEAR
|
||
|
|
|
||
|
|
IF revenue_answer = "4" THEN
|
||
|
|
score = score + 30
|
||
|
|
ELSE IF revenue_answer = "3" THEN
|
||
|
|
score = score + 20
|
||
|
|
ELSE IF revenue_answer = "2" THEN
|
||
|
|
score = score + 10
|
||
|
|
ELSE
|
||
|
|
score = score + 5
|
||
|
|
END IF
|
||
|
|
|
||
|
|
TALK "How many employees does your company have?"
|
||
|
|
employees = HEAR
|
||
|
|
|
||
|
|
IF employees > 500 THEN
|
||
|
|
score = score + 25
|
||
|
|
ELSE IF employees > 100 THEN
|
||
|
|
score = score + 15
|
||
|
|
ELSE IF employees > 20 THEN
|
||
|
|
score = score + 10
|
||
|
|
ELSE
|
||
|
|
score = score + 5
|
||
|
|
END IF
|
||
|
|
|
||
|
|
TALK "What is your timeline for making a decision?"
|
||
|
|
TALK "1. This month"
|
||
|
|
TALK "2. This quarter"
|
||
|
|
TALK "3. This year"
|
||
|
|
TALK "4. Just researching"
|
||
|
|
timeline = HEAR
|
||
|
|
|
||
|
|
IF timeline = "1" THEN
|
||
|
|
score = score + 30
|
||
|
|
ELSE IF timeline = "2" THEN
|
||
|
|
score = score + 20
|
||
|
|
ELSE IF timeline = "3" THEN
|
||
|
|
score = score + 10
|
||
|
|
ELSE
|
||
|
|
score = score + 0
|
||
|
|
END IF
|
||
|
|
|
||
|
|
TALK "Do you have budget allocated for this?"
|
||
|
|
has_budget = HEAR
|
||
|
|
|
||
|
|
IF has_budget = "yes" OR has_budget = "YES" OR has_budget = "Yes" THEN
|
||
|
|
score = score + 25
|
||
|
|
ELSE
|
||
|
|
score = score + 5
|
||
|
|
END IF
|
||
|
|
|
||
|
|
lead_status = "unqualified"
|
||
|
|
IF score >= 70 THEN
|
||
|
|
lead_status = "hot"
|
||
|
|
ELSE IF score >= 50 THEN
|
||
|
|
lead_status = "warm"
|
||
|
|
ELSE IF score >= 30 THEN
|
||
|
|
lead_status = "cold"
|
||
|
|
END IF
|
||
|
|
|
||
|
|
update_lead = CREATE OBJECT
|
||
|
|
SET update_lead.score = score
|
||
|
|
SET update_lead.status = lead_status
|
||
|
|
SET update_lead.qualified_at = current_time
|
||
|
|
SET update_lead.revenue_range = revenue_answer
|
||
|
|
SET update_lead.employees = employees
|
||
|
|
SET update_lead.timeline = timeline
|
||
|
|
SET update_lead.has_budget = has_budget
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "leads", FORMAT update_lead AS JSON
|
||
|
|
|
||
|
|
REMEMBER "lead_score_" + lead_id = score
|
||
|
|
REMEMBER "lead_status_" + lead_id = lead_status
|
||
|
|
|
||
|
|
IF lead_status = "hot" THEN
|
||
|
|
TALK "Great! You're a perfect fit for our solution. Let me connect you with a specialist."
|
||
|
|
|
||
|
|
notification = "Hot lead alert: " + lead.name + " from " + lead.company + " - Score: " + score
|
||
|
|
SEND MAIL "sales@company.com", "Hot Lead Alert", notification
|
||
|
|
|
||
|
|
CREATE_TASK "Follow up with hot lead " + lead.name, "high", user_id
|
||
|
|
|
||
|
|
ELSE IF lead_status = "warm" THEN
|
||
|
|
TALK "Thank you! Based on your needs, I'll have someone reach out within 24 hours."
|
||
|
|
|
||
|
|
CREATE_TASK "Contact warm lead " + lead.name, "medium", user_id
|
||
|
|
|
||
|
|
ELSE
|
||
|
|
TALK "Thank you for your time. I'll send you some helpful resources via email."
|
||
|
|
END IF
|
||
|
|
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF action = "convert" THEN
|
||
|
|
lead = FIND "leads", "id = '" + lead_id + "'"
|
||
|
|
|
||
|
|
IF lead = NULL THEN
|
||
|
|
TALK "No lead found to convert."
|
||
|
|
EXIT
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF lead.status = "unqualified" OR lead.status = "cold" THEN
|
||
|
|
TALK "This lead needs to be qualified first."
|
||
|
|
EXIT
|
||
|
|
END IF
|
||
|
|
|
||
|
|
account = CREATE OBJECT
|
||
|
|
SET account.id = FORMAT GUID()
|
||
|
|
SET account.name = lead.company
|
||
|
|
SET account.type = "customer"
|
||
|
|
SET account.owner_id = user_id
|
||
|
|
SET account.created_from_lead = lead_id
|
||
|
|
SET account.created_at = current_time
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "accounts", FORMAT account AS JSON
|
||
|
|
|
||
|
|
contact = CREATE OBJECT
|
||
|
|
SET contact.id = FORMAT GUID()
|
||
|
|
SET contact.account_id = account.id
|
||
|
|
SET contact.name = lead.name
|
||
|
|
SET contact.email = lead.email
|
||
|
|
SET contact.phone = lead.phone
|
||
|
|
SET contact.primary_contact = true
|
||
|
|
SET contact.created_from_lead = lead_id
|
||
|
|
SET contact.created_at = current_time
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "contacts", FORMAT contact AS JSON
|
||
|
|
|
||
|
|
opportunity = CREATE OBJECT
|
||
|
|
SET opportunity.id = FORMAT GUID()
|
||
|
|
SET opportunity.name = "Opportunity for " + account.name
|
||
|
|
SET opportunity.account_id = account.id
|
||
|
|
SET opportunity.contact_id = contact.id
|
||
|
|
SET opportunity.stage = "qualification"
|
||
|
|
SET opportunity.probability = 20
|
||
|
|
SET opportunity.owner_id = user_id
|
||
|
|
SET opportunity.lead_source = lead.source
|
||
|
|
SET opportunity.created_at = current_time
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "opportunities", FORMAT opportunity AS JSON
|
||
|
|
|
||
|
|
update_lead = CREATE OBJECT
|
||
|
|
SET update_lead.status = "converted"
|
||
|
|
SET update_lead.converted_at = current_time
|
||
|
|
SET update_lead.converted_to_account_id = account.id
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "leads", FORMAT update_lead AS JSON
|
||
|
|
|
||
|
|
REMEMBER "account_" + account.id = account
|
||
|
|
REMEMBER "contact_" + contact.id = contact
|
||
|
|
REMEMBER "opportunity_" + opportunity.id = opportunity
|
||
|
|
|
||
|
|
SET "session.account_id" = account.id
|
||
|
|
SET "session.contact_id" = contact.id
|
||
|
|
SET "session.opportunity_id" = opportunity.id
|
||
|
|
|
||
|
|
TALK "Successfully converted lead to account: " + account.name
|
||
|
|
|
||
|
|
notification = "Lead converted: " + lead.name + " to account " + account.name
|
||
|
|
SEND MAIL user_id, "Lead Conversion", notification
|
||
|
|
|
||
|
|
CREATE_TASK "Initial meeting with " + contact.name, "high", user_id
|
||
|
|
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF action = "follow_up" THEN
|
||
|
|
lead = FIND "leads", "id = '" + lead_id + "'"
|
||
|
|
|
||
|
|
IF lead = NULL THEN
|
||
|
|
TALK "No lead found."
|
||
|
|
EXIT
|
||
|
|
END IF
|
||
|
|
|
||
|
|
last_contact = GET "lead_last_contact_" + lead_id
|
||
|
|
days_since = 0
|
||
|
|
|
||
|
|
IF last_contact != "" THEN
|
||
|
|
days_since = DAYS_BETWEEN(last_contact, current_time)
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF days_since > 7 OR last_contact = "" THEN
|
||
|
|
subject = "Following up on your inquiry"
|
||
|
|
message = "Hi " + lead.name + ",\n\nI wanted to follow up on your recent inquiry about our services."
|
||
|
|
|
||
|
|
SEND MAIL lead.email, subject, message
|
||
|
|
|
||
|
|
activity = CREATE OBJECT
|
||
|
|
SET activity.id = FORMAT GUID()
|
||
|
|
SET activity.type = "email"
|
||
|
|
SET activity.subject = subject
|
||
|
|
SET activity.lead_id = lead_id
|
||
|
|
SET activity.created_at = current_time
|
||
|
|
|
||
|
|
SAVE_FROM_UNSTRUCTURED "activities", FORMAT activity AS JSON
|
||
|
|
|
||
|
|
REMEMBER "lead_last_contact_" + lead_id = current_time
|
||
|
|
|
||
|
|
TALK "Follow-up email sent to " + lead.name
|
||
|
|
ELSE
|
||
|
|
TALK "Lead was contacted " + days_since + " days ago. Too soon for follow-up."
|
||
|
|
END IF
|
||
|
|
|
||
|
|
END IF
|
||
|
|
|
||
|
|
IF action = "nurture" THEN
|
||
|
|
leads = FIND "leads", "status = 'warm' OR status = 'cold'"
|
||
|
|
|
||
|
|
FOR EACH lead IN leads DO
|
||
|
|
days_old = DAYS_BETWEEN(lead.created_at, current_time)
|
||
|
|
|
||
|
|
IF days_old = 3 THEN
|
||
|
|
content = "5 Tips to Improve Your Business"
|
||
|
|
ELSE IF days_old = 7 THEN
|
||
|
|
content = "Case Study: How We Helped Similar Companies"
|
||
|
|
ELSE IF days_old = 14 THEN
|
||
|
|
content = "Free Consultation Offer"
|
||
|
|
ELSE IF days_old = 30 THEN
|
||
|
|
content = "Special Limited Time Offer"
|
||
|
|
ELSE
|
||
|
|
CONTINUE
|
||
|
|
END IF
|
||
|
|
|
||
|
|
SEND MAIL lead.email, content, "Nurture content for day " + days_old
|
||
|
|
|
||
|
|
REMEMBER "lead_nurture_" + lead.id + "_day_" + days_old = "sent"
|
||
|
|
END FOR
|
||
|
|
|
||
|
|
TALK "Nurture campaign processed"
|
||
|
|
END IF
|