botserver/templates/sales/crm.gbai/crm.gbdialog/lead-management.bas
Rodrigo Rodriguez (Pragmatismo) 48c1ae0b51 , dt.month, dt.hour, dt.is_weekend, etc.)
- Add startup wizard module for first-run configuration
- Add white-label branding system with .product file support
- Add bot manager for lifecycle, MinIO buckets, and templates
- Add version tracking registry for component updates
- Create comparison doc: BASIC vs n8n/Zapier/Make/Copilot
- Add WhatsApp-style sample dialogs to template documentation
- Add data traceability SVG diagram ```
2025-11-30 15:07:29 -03:00

293 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