Pharmeasy Autonomous Funnel Intelligence System

Pharmeasy Autonomous Funnel Intelligence System - Real-time funnel optimization through Perception-Reasoning-Action loop

Back
Workflow Information

ID: pharmeasy_funnel_intelligence_master

Namespace: pharmeasy

Version: 1.0

Created: 2025-07-28

Updated: 2025-07-28

Tasks: 9

Quick Actions
Manage Secrets
Inputs
Name Type Required Default
clevertap_account_id string Required primary
clevertap_passcode string Required None
clevertap_api_endpoint string Optional https://api.clevertap.com/1
sales_drop_threshold float Optional 0.2
sales_spike_threshold float Optional 0.15
anomaly_sensitivity float Optional 2.5
analysis_window_days integer Optional 7
target_region string Optional NCR
target_category string Optional medicines
Outputs
Name Type Source
final_report object Comprehensive funnel optimization report
perception_data object Combined data from CleverTap and internal systems
campaign_results object Recovery campaign execution results
anomaly_detection object Anomaly detection results and root cause analysis
cross_sell_opportunities object Identified cross-sell opportunities
Tasks
initialize_pra_loop
script

Initialize the Perception-Reasoning-Action loop

perception_data_bridge
script

Fetch and combine data from CleverTap and internal dashboards

detect_analyze_anomalies
script

Detect anomalies and perform multi-hypothesis root cause analysis

anomaly_router
conditional_router

Route based on anomaly detection results

Conditional Router
Router Type: condition
Default Route: normal_optimization
execute_recovery_actions
script

Execute recovery campaigns and interventions

identify_cross_sell
script

Identify cross-sell opportunities during normal operations

ai_churn_prevention
ai_agent

AI-powered churn prediction and prevention strategies

ai_journey_optimizer
ai_agent

AI-powered dynamic customer journey optimization

generate_optimization_report
ai_agent

Generate comprehensive funnel optimization report

YAML Source
id: pharmeasy_funnel_intelligence_master
name: Pharmeasy Autonomous Funnel Intelligence System
tasks:
- id: initialize_pra_loop
  name: Initialize Perception-Reasoning-Action Loop
  type: script
  script: "import os\nimport json\nfrom datetime import datetime, timedelta\n\nprint(\"\
    \U0001F916 PHARMEASY FUNNEL INTELLIGENCE SYSTEM\")\nprint(\"=\" * 70)\nprint(\"\
    \U0001F504 Initializing Perception-Reasoning-Action Loop...\")\nprint(\"\")\n\n\
    # Get input parameters\nexecution_id = os.environ.get('EXECUTION_ID', 'unknown')\n\
    clevertap_account = \"${clevertap_account_id}\"\ntarget_region = \"${target_region}\"\
    \ntarget_category = \"${target_category}\"\nanalysis_window = int(\"${analysis_window_days}\"\
    )\n\n# Calculate time ranges\nend_date = datetime.now()\nstart_date = end_date\
    \ - timedelta(days=analysis_window)\n\nprint(\"\U0001F4CA Analysis Configuration:\"\
    )\nprint(f\"   Execution ID: {execution_id}\")\nprint(f\"   Region: {target_region}\"\
    )\nprint(f\"   Category: {target_category}\")\nprint(f\"   Analysis Window: {analysis_window}\
    \ days\")\nprint(f\"   Period: {start_date.strftime('%Y-%m-%d')} to {end_date.strftime('%Y-%m-%d')}\"\
    )\nprint(\"\")\n\n# Define hypothesis framework for multi-hypothesis testing\n\
    hypotheses = [\n    \"payment_gateway_issues\",\n    \"inventory_stockouts\",\
    \ \n    \"competitor_campaigns\",\n    \"pricing_changes\",\n    \"app_performance_issues\"\
    ,\n    \"delivery_delays\",\n    \"user_experience_friction\",\n    \"seasonal_patterns\"\
    ,\n    \"marketing_campaign_effectiveness\",\n    \"new_user_onboarding_issues\"\
    \n]\n\nprint(f\"\U0001F50D Multi-Hypothesis Testing Framework:\")\nprint(f\" \
    \  Total Hypotheses: {len(hypotheses)}\")\nprint(f\"   Approach: Parallel analysis\
    \ across data silos\")\nprint(\"\")\n\nresult = {\n    \"status\": \"initialized\"\
    ,\n    \"execution_id\": execution_id,\n    \"configuration\": {\n        \"region\"\
    : target_region,\n        \"category\": target_category,\n        \"start_date\"\
    : start_date.isoformat(),\n        \"end_date\": end_date.isoformat(),\n     \
    \   \"analysis_window_days\": analysis_window\n    },\n    \"hypotheses\": hypotheses,\n\
    \    \"pra_loop_state\": \"PERCEPTION\",\n    \"timestamp\": datetime.now().isoformat()\n\
    }\n\nprint(\"\u2705 PRA Loop initialized. Starting PERCEPTION phase...\")\nprint(f\"\
    __OUTPUTS__ {json.dumps(result)}\")\n"
  description: Initialize the Perception-Reasoning-Action loop
  timeout_seconds: 30
- id: perception_data_bridge
  name: 'PERCEPTION: Bridge Data Silos'
  type: script
  script: "import json\nimport time\nimport random\nfrom datetime import datetime,\
    \ timedelta\n\nprint(\"\")\nprint(\"\U0001F441\uFE0F PERCEPTION PHASE: Data Collection\"\
    )\nprint(\"=\" * 50)\nprint(\"\")\n\nconfig = json.loads('${initialize_pra_loop.configuration}')\n\
    region = config['region']\ncategory = config['category']\n\n# Simulate CleverTap\
    \ API call\nprint(\"\U0001F517 Fetching CleverTap behavioral data...\")\ntime.sleep(1)\n\
    \n# Generate realistic CleverTap data\nclevertap_data = {\n    \"events\": {\n\
    \        \"app_opens\": random.randint(50000, 80000),\n        \"searches\": random.randint(30000,\
    \ 50000),\n        \"product_views\": random.randint(40000, 60000),\n        \"\
    add_to_cart\": random.randint(15000, 25000),\n        \"checkout_initiated\":\
    \ random.randint(8000, 12000),\n        \"orders_placed\": random.randint(5000,\
    \ 8000),\n        \"orders_completed\": random.randint(4500, 7500)\n    },\n \
    \   \"funnel_metrics\": {\n        \"search_to_view\": 0.75,\n        \"view_to_cart\"\
    : 0.35,\n        \"cart_to_checkout\": 0.65,\n        \"checkout_to_order\": 0.70,\n\
    \        \"order_to_completion\": 0.92\n    },\n    \"user_segments\": {\n   \
    \     \"new_users\": random.randint(5000, 8000),\n        \"chronic_patients\"\
    : random.randint(12000, 15000),\n        \"regular_buyers\": random.randint(20000,\
    \ 25000),\n        \"dormant_users\": random.randint(30000, 40000)\n    },\n \
    \   \"cart_abandonment_rate\": random.uniform(0.35, 0.45),\n    \"avg_session_duration\"\
    : random.randint(180, 300),\n    \"bounce_rate\": random.uniform(0.25, 0.35)\n\
    }\n\nprint(\"\u2713 CleverTap data fetched successfully\")\nprint(f\"  - Total\
    \ events tracked: {sum(clevertap_data['events'].values()):,}\")\nprint(f\"  -\
    \ Cart abandonment rate: {clevertap_data['cart_abandonment_rate']:.1%}\")\n\n\
    # Simulate Internal Dashboard API call\nprint(\"\")\nprint(\"\U0001F4CA Fetching\
    \ internal operational data...\")\ntime.sleep(1)\n\n# Generate realistic internal\
    \ data with potential anomaly\nbase_sales = random.randint(800000, 1200000)\n\
    sales_drop = random.uniform(0.15, 0.25)  # 15-25% drop\n\ninternal_data = {\n\
    \    \"sales_metrics\": {\n        \"current_period_sales\": int(base_sales *\
    \ (1 - sales_drop)),\n        \"previous_period_sales\": base_sales,\n       \
    \ \"sales_change_percentage\": -sales_drop,\n        \"average_order_value\":\
    \ random.randint(450, 650),\n        \"total_orders\": clevertap_data['events']['orders_completed']\n\
    \    },\n    \"inventory_status\": {\n        \"total_skus\": random.randint(15000,\
    \ 20000),\n        \"in_stock_skus\": random.randint(12000, 18000),\n        \"\
    stockout_skus\": random.randint(500, 2000),\n        \"critical_stockouts\": random.randint(50,\
    \ 200)\n    },\n    \"payment_metrics\": {\n        \"success_rate\": random.uniform(0.92,\
    \ 0.98),\n        \"failed_transactions\": random.randint(200, 500),\n       \
    \ \"avg_processing_time\": random.uniform(2.5, 4.5)\n    },\n    \"logistics_metrics\"\
    : {\n        \"on_time_delivery\": random.uniform(0.85, 0.95),\n        \"avg_delivery_time_hours\"\
    : random.randint(24, 48),\n        \"pending_deliveries\": random.randint(500,\
    \ 1500)\n    }\n}\n\nprint(\"\u2713 Internal dashboard data fetched successfully\"\
    )\nprint(f\"  - Sales change: {internal_data['sales_metrics']['sales_change_percentage']:.1%}\"\
    )\nprint(f\"  - Stockout SKUs: {internal_data['inventory_status']['stockout_skus']:,}\"\
    )\n\n# Combine data for unified analysis\nprint(\"\")\nprint(\"\U0001F504 Bridging\
    \ data silos...\")\n\nunified_data = {\n    \"timestamp\": datetime.now().isoformat(),\n\
    \    \"region\": region,\n    \"category\": category,\n    \"clevertap_behavioral\"\
    : clevertap_data,\n    \"internal_operational\": internal_data,\n    \"anomaly_detected\"\
    : internal_data['sales_metrics']['sales_change_percentage'] < -0.15,\n    \"anomaly_severity\"\
    : \"HIGH\" if sales_drop > 0.2 else \"MEDIUM\",\n    \"data_quality_score\": random.uniform(0.92,\
    \ 0.98),\n    \"pra_loop_state\": \"PERCEPTION_COMPLETE\"\n}\n\nprint(\"\u2705\
    \ PERCEPTION phase complete. Data silos bridged successfully.\")\nprint(f\"  \
    \ Anomaly Detected: {'YES' if unified_data['anomaly_detected'] else 'NO'}\")\n\
    if unified_data['anomaly_detected']:\n    print(f\"   Severity: {unified_data['anomaly_severity']}\"\
    )\n\nprint(f\"__OUTPUTS__ {json.dumps(unified_data)}\")\n"
  depends_on:
  - initialize_pra_loop
  description: Fetch and combine data from CleverTap and internal dashboards
  timeout_seconds: 60
- id: detect_analyze_anomalies
  name: 'REASONING: Anomaly Detection & Multi-Hypothesis Testing'
  type: script
  script: "import json\nimport math\nimport random\nfrom datetime import datetime\n\
    \nprint(\"\")\nprint(\"\U0001F9E0 REASONING PHASE: Anomaly Detection & Analysis\"\
    )\nprint(\"=\" * 50)\nprint(\"\")\n\n# Parse perception data\nperception_data\
    \ = json.loads('${perception_data_bridge}')\nclevertap = perception_data['clevertap_behavioral']\n\
    internal = perception_data['internal_operational']\nhypotheses = json.loads('${initialize_pra_loop.hypotheses}')\n\
    sensitivity = float(\"${anomaly_sensitivity}\")\n\nprint(f\"\U0001F4CA Analyzing\
    \ sales metrics...\")\nsales_change = internal['sales_metrics']['sales_change_percentage']\n\
    print(f\"   Sales Change: {sales_change:.1%}\")\nprint(f\"   Z-Score Sensitivity:\
    \ {sensitivity}\")\n\n# Calculate Z-score for anomaly detection\n# Simulate historical\
    \ data for Z-score calculation\nhistorical_changes = [random.uniform(-0.05, 0.10)\
    \ for _ in range(30)]\nmean_change = sum(historical_changes) / len(historical_changes)\n\
    std_dev = math.sqrt(sum((x - mean_change) ** 2 for x in historical_changes) /\
    \ len(historical_changes))\nz_score = (sales_change - mean_change) / std_dev if\
    \ std_dev > 0 else 0\n\nprint(f\"   Calculated Z-Score: {z_score:.2f}\")\nprint(f\"\
    \   Anomaly Threshold: {-sensitivity}\")\n\nis_anomaly = z_score < -sensitivity\n\
    print(f\"   Anomaly Detected: {'YES' if is_anomaly else 'NO'}\")\n\n# Multi-hypothesis\
    \ testing\nprint(\"\")\nprint(\"\U0001F50D Executing Multi-Hypothesis Testing...\"\
    )\nprint(\"   Testing 10 hypotheses in parallel...\")\n\nhypothesis_results =\
    \ {}\n\n# Test each hypothesis based on data patterns\nfor hypothesis in hypotheses:\n\
    \    score = 0.0\n    evidence = []\n    \n    if hypothesis == \"payment_gateway_issues\"\
    :\n        if internal['payment_metrics']['success_rate'] < 0.95:\n          \
    \  score = 0.7\n            evidence.append(f\"Payment success rate low: {internal['payment_metrics']['success_rate']:.1%}\"\
    )\n        if internal['payment_metrics']['failed_transactions'] > 300:\n    \
    \        score += 0.3\n            evidence.append(f\"High failed transactions:\
    \ {internal['payment_metrics']['failed_transactions']}\")\n            \n    elif\
    \ hypothesis == \"inventory_stockouts\":\n        stockout_rate = internal['inventory_status']['stockout_skus']\
    \ / internal['inventory_status']['total_skus']\n        if stockout_rate > 0.08:\n\
    \            score = 0.8\n            evidence.append(f\"High stockout rate: {stockout_rate:.1%}\"\
    )\n        if internal['inventory_status']['critical_stockouts'] > 100:\n    \
    \        score = min(score + 0.4, 1.0)\n            evidence.append(f\"Critical\
    \ stockouts: {internal['inventory_status']['critical_stockouts']}\")\n       \
    \     \n    elif hypothesis == \"user_experience_friction\":\n        if clevertap['cart_abandonment_rate']\
    \ > 0.40:\n            score = 0.6\n            evidence.append(f\"High cart abandonment:\
    \ {clevertap['cart_abandonment_rate']:.1%}\")\n        if clevertap['funnel_metrics']['cart_to_checkout']\
    \ < 0.60:\n            score += 0.3\n            evidence.append(\"Low cart-to-checkout\
    \ conversion\")\n            \n    elif hypothesis == \"delivery_delays\":\n \
    \       if internal['logistics_metrics']['on_time_delivery'] < 0.90:\n       \
    \     score = 0.5\n            evidence.append(f\"Low on-time delivery: {internal['logistics_metrics']['on_time_delivery']:.1%}\"\
    )\n            \n    else:\n        # Simulate scores for other hypotheses\n \
    \       score = random.uniform(0.1, 0.4)\n        evidence.append(\"Pattern analysis\
    \ in progress\")\n    \n    hypothesis_results[hypothesis] = {\n        \"score\"\
    : round(score, 2),\n        \"evidence\": evidence,\n        \"confidence\": \"\
    HIGH\" if score > 0.7 else \"MEDIUM\" if score > 0.4 else \"LOW\"\n    }\n\n#\
    \ Sort hypotheses by score\nsorted_hypotheses = sorted(hypothesis_results.items(),\
    \ key=lambda x: x[1]['score'], reverse=True)\n\nprint(\"\")\nprint(\"\U0001F4C8\
    \ Top Root Causes Identified:\")\nfor i, (hyp, result) in enumerate(sorted_hypotheses[:3]):\n\
    \    print(f\"   {i+1}. {hyp.replace('_', ' ').title()}\")\n    print(f\"    \
    \  Score: {result['score']}\")\n    print(f\"      Confidence: {result['confidence']}\"\
    )\n    for evidence in result['evidence'][:2]:\n        print(f\"      - {evidence}\"\
    )\n\n# Determine primary root cause\nprimary_cause = sorted_hypotheses[0][0] if\
    \ sorted_hypotheses[0][1]['score'] > 0.5 else \"multiple_factors\"\n\nanomaly_analysis\
    \ = {\n    \"timestamp\": datetime.now().isoformat(),\n    \"anomaly_detected\"\
    : is_anomaly,\n    \"z_score\": round(z_score, 2),\n    \"sales_change_percentage\"\
    : sales_change,\n    \"hypothesis_results\": hypothesis_results,\n    \"primary_root_cause\"\
    : primary_cause,\n    \"top_3_causes\": [h[0] for h in sorted_hypotheses[:3]],\n\
    \    \"confidence_level\": sorted_hypotheses[0][1]['confidence'] if sorted_hypotheses\
    \ else \"LOW\",\n    \"recommended_actions\": [],\n    \"pra_loop_state\": \"\
    REASONING_COMPLETE\"\n}\n\n# Generate recommended actions based on root cause\n\
    if primary_cause == \"inventory_stockouts\":\n    anomaly_analysis[\"recommended_actions\"\
    ] = [\n        \"trigger_stockout_notification_campaign\",\n        \"activate_alternative_product_recommendations\"\
    ,\n        \"expedite_inventory_replenishment\"\n    ]\nelif primary_cause ==\
    \ \"payment_gateway_issues\":\n    anomaly_analysis[\"recommended_actions\"] =\
    \ [\n        \"trigger_payment_retry_campaign\",\n        \"activate_cod_promotion\"\
    ,\n        \"notify_payment_team\"\n    ]\nelif primary_cause == \"user_experience_friction\"\
    :\n    anomaly_analysis[\"recommended_actions\"] = [\n        \"trigger_cart_recovery_campaign\"\
    ,\n        \"simplify_checkout_flow\",\n        \"offer_instant_discount\"\n \
    \   ]\n\nprint(\"\")\nprint(\"\u2705 REASONING phase complete. Root cause analysis\
    \ finished.\")\nprint(f\"__OUTPUTS__ {json.dumps(anomaly_analysis)}\")\n"
  depends_on:
  - perception_data_bridge
  description: Detect anomalies and perform multi-hypothesis root cause analysis
  timeout_seconds: 90
- id: anomaly_router
  name: Anomaly Detection Router
  type: conditional_router
  conditions:
  - name: anomaly_detected
    route: handle_anomaly
    condition: ${detect_analyze_anomalies.anomaly_detected} == true
  depends_on:
  - detect_analyze_anomalies
  description: Route based on anomaly detection results
  default_route: normal_optimization
- id: execute_recovery_actions
  name: 'ACTION: Execute Recovery Campaigns'
  type: script
  script: "import json\nimport time\nimport random\nfrom datetime import datetime\n\
    \nprint(\"\")\nprint(\"\U0001F680 ACTION PHASE: Executing Recovery Campaigns\"\
    )\nprint(\"=\" * 50)\nprint(\"\")\n\n# Parse anomaly analysis\nanomaly_data =\
    \ json.loads('${detect_analyze_anomalies}')\nperception_data = json.loads('${perception_data_bridge}')\n\
    primary_cause = anomaly_data['primary_root_cause']\nrecommended_actions = anomaly_data['recommended_actions']\n\
    \nprint(f\"\U0001F3AF Primary Root Cause: {primary_cause.replace('_', ' ').title()}\"\
    )\nprint(f\"\U0001F4CB Recommended Actions: {len(recommended_actions)}\")\nprint(\"\
    \")\n\ncampaign_results = []\n\n# Execute recommended actions\nfor action in recommended_actions:\n\
    \    print(f\"\u26A1 Executing: {action.replace('_', ' ').title()}\")\n    \n\
    \    if action == \"trigger_stockout_notification_campaign\":\n        # Simulate\
    \ CleverTap campaign creation\n        campaign = {\n            \"name\": \"\
    Critical Stockout Alert\",\n            \"type\": \"push_notification\",\n   \
    \         \"segment\": \"users_with_stockout_items_in_cart\",\n            \"\
    message\": \"Items in your cart are running out fast! Complete your order now.\"\
    ,\n            \"target_users\": random.randint(5000, 8000),\n            \"expected_conversion\"\
    : 0.15\n        }\n        print(f\"   Creating campaign: {campaign['name']}\"\
    )\n        print(f\"   Target users: {campaign['target_users']:,}\")\n       \
    \ time.sleep(0.5)\n        \n        # Simulate campaign execution\n        campaign['status']\
    \ = \"executed\"\n        campaign['actual_sends'] = int(campaign['target_users']\
    \ * 0.95)\n        campaign['opens'] = int(campaign['actual_sends'] * random.uniform(0.25,\
    \ 0.35))\n        campaign['conversions'] = int(campaign['opens'] * random.uniform(0.12,\
    \ 0.18))\n        campaign['revenue_impact'] = campaign['conversions'] * random.randint(500,\
    \ 800)\n        \n        campaign_results.append(campaign)\n        print(f\"\
    \   \u2713 Campaign executed successfully\")\n        print(f\"   Conversions:\
    \ {campaign['conversions']:,}\")\n        \n    elif action == \"trigger_cart_recovery_campaign\"\
    :\n        campaign = {\n            \"name\": \"Cart Abandonment Recovery\",\n\
    \            \"type\": \"email_sms_combo\",\n            \"segment\": \"cart_abandoners_last_24h\"\
    ,\n            \"discount_offered\": \"10%\",\n            \"target_users\": random.randint(8000,\
    \ 12000),\n            \"expected_conversion\": 0.08\n        }\n        print(f\"\
    \   Creating campaign: {campaign['name']}\")\n        print(f\"   Discount offered:\
    \ {campaign['discount_offered']}\")\n        time.sleep(0.5)\n        \n     \
    \   campaign['status'] = \"executed\"\n        campaign['emails_sent'] = int(campaign['target_users']\
    \ * 0.90)\n        campaign['sms_sent'] = int(campaign['target_users'] * 0.85)\n\
    \        campaign['conversions'] = int(campaign['target_users'] * random.uniform(0.06,\
    \ 0.10))\n        campaign['revenue_impact'] = campaign['conversions'] * random.randint(400,\
    \ 600)\n        \n        campaign_results.append(campaign)\n        print(f\"\
    \   \u2713 Multi-channel campaign launched\")\n        \n    elif action == \"\
    trigger_payment_retry_campaign\":\n        campaign = {\n            \"name\"\
    : \"Payment Retry Assistance\",\n            \"type\": \"in_app_notification\"\
    ,\n            \"segment\": \"failed_payment_users\",\n            \"cod_promotion\"\
    : True,\n            \"target_users\": random.randint(2000, 4000),\n         \
    \   \"expected_conversion\": 0.25\n        }\n        print(f\"   Creating campaign:\
    \ {campaign['name']}\")\n        time.sleep(0.5)\n        \n        campaign['status']\
    \ = \"executed\"\n        campaign['notifications_shown'] = int(campaign['target_users']\
    \ * 0.98)\n        campaign['payment_retries'] = int(campaign['notifications_shown']\
    \ * 0.30)\n        campaign['successful_orders'] = int(campaign['payment_retries']\
    \ * 0.80)\n        campaign['revenue_impact'] = campaign['successful_orders']\
    \ * random.randint(600, 900)\n        \n        campaign_results.append(campaign)\n\
    \        print(f\"   \u2713 Payment assistance activated\")\n    \n    print(\"\
    \")\n\n# Calculate total impact\ntotal_conversions = sum(c.get('conversions',\
    \ c.get('successful_orders', 0)) for c in campaign_results)\ntotal_revenue_impact\
    \ = sum(c.get('revenue_impact', 0) for c in campaign_results)\n\nprint(\"\U0001F4CA\
    \ Campaign Execution Summary:\")\nprint(f\"   Total Campaigns: {len(campaign_results)}\"\
    )\nprint(f\"   Total Conversions: {total_conversions:,}\")\nprint(f\"   Revenue\
    \ Impact: \u20B9{total_revenue_impact:,}\")\nprint(f\"   Recovery Rate: {(total_revenue_impact\
    \ / abs(perception_data['internal_operational']['sales_metrics']['current_period_sales']\
    \ - perception_data['internal_operational']['sales_metrics']['previous_period_sales'])\
    \ * 100):.1f}%\")\n\naction_results = {\n    \"timestamp\": datetime.now().isoformat(),\n\
    \    \"campaigns_executed\": len(campaign_results),\n    \"campaign_details\"\
    : campaign_results,\n    \"total_conversions\": total_conversions,\n    \"total_revenue_impact\"\
    : total_revenue_impact,\n    \"execution_status\": \"SUCCESS\",\n    \"pra_loop_state\"\
    : \"ACTION_COMPLETE\"\n}\n\nprint(\"\")\nprint(\"\u2705 ACTION phase complete.\
    \ Recovery campaigns executed.\")\nprint(f\"__OUTPUTS__ {json.dumps(action_results)}\"\
    )\n"
  depends_on:
  - anomaly_router
  description: Execute recovery campaigns and interventions
  timeout_seconds: 120
  execute_on_routes:
  - handle_anomaly
- id: identify_cross_sell
  name: Cross-sell Opportunity Identification
  type: script
  script: "import json\nimport random\nfrom datetime import datetime\n\nprint(\"\"\
    )\nprint(\"\U0001F4A1 CROSS-SELL OPPORTUNITY ANALYSIS\")\nprint(\"=\" * 50)\n\
    print(\"\")\n\nperception_data = json.loads('${perception_data_bridge}')\n\nprint(\"\
    \U0001F50D Analyzing cross-category behavior patterns...\")\n\nopportunities =\
    \ []\n\n# Medicine to Diagnostics cross-sell\nopportunity1 = {\n    \"type\":\
    \ \"medicine_to_diagnostics\",\n    \"target_segment\": \"chronic_disease_medicine_buyers\"\
    ,\n    \"segment_size\": random.randint(8000, 12000),\n    \"current_penetration\"\
    : random.uniform(0.15, 0.25),\n    \"potential_penetration\": random.uniform(0.35,\
    \ 0.45),\n    \"recommended_action\": \"Bundle diabetes medicines with HbA1c tests\"\
    ,\n    \"expected_revenue_uplift\": random.randint(200000, 400000)\n}\nopportunities.append(opportunity1)\n\
    \n# Diagnostics to Wellness cross-sell\nopportunity2 = {\n    \"type\": \"diagnostics_to_wellness\"\
    ,\n    \"target_segment\": \"health_checkup_users\",\n    \"segment_size\": random.randint(5000,\
    \ 8000),\n    \"current_penetration\": random.uniform(0.10, 0.20),\n    \"potential_penetration\"\
    : random.uniform(0.30, 0.40),\n    \"recommended_action\": \"Recommend vitamins\
    \ based on test results\",\n    \"expected_revenue_uplift\": random.randint(150000,\
    \ 250000)\n}\nopportunities.append(opportunity2)\n\nprint(f\"\u2713 Identified\
    \ {len(opportunities)} cross-sell opportunities\")\n\nfor opp in opportunities:\n\
    \    print(f\"\\n\U0001F4CC {opp['type'].replace('_', ' ').title()}\")\n    print(f\"\
    \   Target Size: {opp['segment_size']:,} users\")\n    print(f\"   Penetration\
    \ Potential: {opp['current_penetration']:.1%} \u2192 {opp['potential_penetration']:.1%}\"\
    )\n    print(f\"   Revenue Uplift: \u20B9{opp['expected_revenue_uplift']:,}\"\
    )\n\ncross_sell_results = {\n    \"timestamp\": datetime.now().isoformat(),\n\
    \    \"opportunities_identified\": len(opportunities),\n    \"opportunities\"\
    : opportunities,\n    \"total_revenue_potential\": sum(o['expected_revenue_uplift']\
    \ for o in opportunities),\n    \"execution_status\": \"READY_FOR_CAMPAIGNS\"\n\
    }\n\nprint(\"\")\nprint(\"\u2705 Cross-sell analysis complete.\")\nprint(f\"__OUTPUTS__\
    \ {json.dumps(cross_sell_results)}\")\n"
  depends_on:
  - anomaly_router
  description: Identify cross-sell opportunities during normal operations
  timeout_seconds: 60
  execute_on_routes:
  - normal_optimization
- id: ai_churn_prevention
  name: AI Churn Prevention Strategist
  type: ai_agent
  config:
    model_client_id: funnel_master
  depends_on:
  - perception_data_bridge
  - detect_analyze_anomalies
  description: AI-powered churn prediction and prevention strategies
  user_message: 'Analyze churn risk based on this data:


    User Segments:

    - Chronic Patients: ${perception_data_bridge.clevertap_behavioral.user_segments.chronic_patients}

    - Regular Buyers: ${perception_data_bridge.clevertap_behavioral.user_segments.regular_buyers}

    - Dormant Users: ${perception_data_bridge.clevertap_behavioral.user_segments.dormant_users}


    Behavioral Metrics:

    - Cart Abandonment Rate: ${perception_data_bridge.clevertap_behavioral.cart_abandonment_rate}

    - Avg Session Duration: ${perception_data_bridge.clevertap_behavioral.avg_session_duration}s

    - Bounce Rate: ${perception_data_bridge.clevertap_behavioral.bounce_rate}


    Provide churn prevention strategies focusing on chronic patient retention.

    '
  system_message: "You are an expert in customer retention and churn prevention for\
    \ e-commerce pharmacy platforms.\n\nAnalyze the behavioral data and identify users\
    \ at risk of churning. Provide your analysis in JSON format:\n{\n  \"churn_risk_segments\"\
    : [\n    {\n      \"segment_name\": \"segment description\",\n      \"risk_level\"\
    : \"HIGH|MEDIUM|LOW\",\n      \"user_count\": estimated_number,\n      \"key_indicators\"\
    : [\"indicator1\", \"indicator2\"],\n      \"recommended_interventions\": [\"\
    action1\", \"action2\"]\n    }\n  ],\n  \"chronic_patient_retention\": {\n   \
    \ \"at_risk_patients\": number,\n    \"retention_strategies\": [\"strategy1\"\
    , \"strategy2\"],\n    \"personalization_approach\": \"description\"\n  },\n \
    \ \"overall_churn_rate\": percentage,\n  \"predicted_revenue_at_risk\": amount\n\
    }\n"
- id: ai_journey_optimizer
  name: AI Dynamic Journey Creator
  type: ai_agent
  config:
    model_client_id: campaign_creator
  depends_on:
  - execute_recovery_actions
  - ai_churn_prevention
  description: AI-powered dynamic customer journey optimization
  user_message: 'Create optimized customer journeys based on:


    Recent Campaign Performance: ${execute_recovery_actions.campaign_details}


    User Behavior Patterns:

    - Funnel Metrics: ${perception_data_bridge.clevertap_behavioral.funnel_metrics}

    - Cart Abandonment: ${perception_data_bridge.clevertap_behavioral.cart_abandonment_rate}


    Churn Risk Analysis: ${ai_churn_prevention.churn_risk_segments}


    Focus on creating journeys that improve conversion and retention.

    '
  system_message: "You are an expert in creating personalized customer journeys for\
    \ pharmaceutical e-commerce.\n\nBased on the campaign results and user behavior,\
    \ design optimized customer journeys in JSON format:\n{\n  \"journey_name\": \"\
    descriptive name\",\n  \"target_segments\": [\"segment1\", \"segment2\"],\n  \"\
    journey_stages\": [\n    {\n      \"stage\": \"stage_name\",\n      \"trigger\"\
    : \"event or condition\",\n      \"action\": \"campaign or intervention\",\n \
    \     \"expected_outcome\": \"metric improvement\",\n      \"personalization_rules\"\
    : [\"rule1\", \"rule2\"]\n    }\n  ],\n  \"success_metrics\": {\n    \"primary_kpi\"\
    : \"metric name\",\n    \"target_improvement\": percentage,\n    \"measurement_period\"\
    : \"timeframe\"\n  },\n  \"a_b_test_recommendations\": [\"test1\", \"test2\"]\n\
    }\n"
- id: generate_optimization_report
  name: AI Funnel Optimization Report Generator
  type: ai_agent
  config:
    model_client_id: retention_optimizer
  depends_on:
  - ai_journey_optimizer
  - identify_cross_sell
  description: Generate comprehensive funnel optimization report
  user_message: "Generate a comprehensive funnel optimization report based on:\n\n\
    Initial State:\n- Sales Change: ${perception_data_bridge.internal_operational.sales_metrics.sales_change_percentage}%\n\
    - Region: ${initialize_pra_loop.configuration.region}\n- Category: ${initialize_pra_loop.configuration.category}\n\
    \nAnomaly Analysis:\n- Primary Cause: ${detect_analyze_anomalies.primary_root_cause}\n\
    - Top Causes: ${detect_analyze_anomalies.top_3_causes}\n\nRecovery Actions:\n\
    - Campaigns Executed: ${execute_recovery_actions.campaigns_executed}\n- Revenue\
    \ Impact: \u20B9${execute_recovery_actions.total_revenue_impact}\n\nCross-sell\
    \ Opportunities: ${identify_cross_sell.opportunities}\n\nCustomer Journey Optimization:\
    \ ${ai_journey_optimizer}\n\nProvide actionable insights and strategic recommendations.\n"
  previous_node:
  - ai_journey_optimizer
  - identify_cross_sell
  system_message: "You are a senior analytics expert specializing in funnel optimization\
    \ for e-commerce platforms.\n\nGenerate a comprehensive executive report in JSON\
    \ format:\n{\n  \"executive_summary\": {\n    \"key_findings\": [\"finding1\"\
    , \"finding2\", \"finding3\"],\n    \"business_impact\": \"revenue and conversion\
    \ impact summary\",\n    \"recommended_priorities\": [\"priority1\", \"priority2\"\
    ]\n  },\n  \"funnel_performance\": {\n    \"conversion_improvements\": {\n   \
    \   \"stage\": \"improvement_percentage\"\n    },\n    \"bottlenecks_addressed\"\
    : [\"bottleneck1\", \"bottleneck2\"],\n    \"optimization_opportunities\": [\"\
    opportunity1\", \"opportunity2\"]\n  },\n  \"campaign_effectiveness\": {\n   \
    \ \"total_campaigns_executed\": number,\n    \"overall_roi\": percentage,\n  \
    \  \"most_effective_campaign\": \"campaign_name\",\n    \"learnings\": [\"learning1\"\
    , \"learning2\"]\n  },\n  \"predictive_insights\": {\n    \"next_7_days_forecast\"\
    : \"prediction\",\n    \"risk_factors\": [\"risk1\", \"risk2\"],\n    \"proactive_recommendations\"\
    : [\"recommendation1\", \"recommendation2\"]\n  },\n  \"action_plan\": {\n   \
    \ \"immediate_actions\": [\"action1\", \"action2\"],\n    \"weekly_optimizations\"\
    : [\"optimization1\", \"optimization2\"],\n    \"strategic_initiatives\": [\"\
    initiative1\", \"initiative2\"]\n  }\n}\n"
inputs:
- name: clevertap_account_id
  type: string
  default: primary
  required: true
  description: CleverTap account ID for API access
- name: clevertap_passcode
  type: string
  required: true
  description: CleverTap API passcode
- name: clevertap_api_endpoint
  type: string
  default: https://api.clevertap.com/1
  description: CleverTap API endpoint
- name: sales_drop_threshold
  type: float
  default: 0.2
  description: Threshold for sales drop detection (0.2 = 20% drop)
- name: sales_spike_threshold
  type: float
  default: 0.15
  description: Threshold for sales spike detection (0.15 = 15% increase)
- name: anomaly_sensitivity
  type: float
  default: 2.5
  description: Z-score sensitivity for anomaly detection
- name: analysis_window_days
  type: integer
  default: 7
  description: Days to analyze for trends
- name: target_region
  type: string
  default: NCR
  description: Region to analyze (NCR, Mumbai, Bangalore, or All)
- name: target_category
  type: string
  default: medicines
  description: Category to analyze (medicines, diagnostics, wellness, or all)
outputs:
  final_report:
    type: object
    source: generate_optimization_report
    description: Comprehensive funnel optimization report
  perception_data:
    type: object
    source: perception_data_bridge
    description: Combined data from CleverTap and internal systems
  campaign_results:
    type: object
    source: execute_recovery_actions
    description: Recovery campaign execution results
  anomaly_detection:
    type: object
    source: detect_analyze_anomalies
    description: Anomaly detection results and root cause analysis
  cross_sell_opportunities:
    type: object
    source: identify_cross_sell
    description: Identified cross-sell opportunities
version: 1.0
namespace: pharmeasy
description: Pharmeasy Autonomous Funnel Intelligence System - Real-time funnel optimization
  through Perception-Reasoning-Action loop
model_clients:
- id: funnel_master
  config:
    model: gpt-4o-mini
    api_key: ${OPENAI_API_KEY}
    max_tokens: 3000
    temperature: 0.3
  provider: openai
- id: anomaly_analyzer
  config:
    model: gpt-4o-mini
    api_key: ${OPENAI_API_KEY}
    max_tokens: 2000
    temperature: 0.1
  provider: openai
- id: retention_optimizer
  config:
    model: gpt-4o-mini
    api_key: ${OPENAI_API_KEY}
    max_tokens: 2500
    temperature: 0.2
  provider: openai
- id: campaign_creator
  config:
    model: gpt-4o-mini
    api_key: ${OPENAI_API_KEY}
    max_tokens: 2000
    temperature: 0.4
  provider: openai
timeout_seconds: 1800

No executions yet. Execute this workflow to see results here.