Exact request sent to the run panel.
{
"source": "retrieve",
"template": {
"id": "bulk_linkedin_dm",
"slug": "bulk-linkedin-dm",
"name": "Bulk LinkedIn DM Sender",
"categoryId": "SOCIAL_SCALE"
},
"inputs": {
"sheetUrl": "",
"messageGoal": "networking",
"messageTemplate": "",
"connectFirst": true,
"__inputSource": "sheet"
},
"agentHint": "You are sending bulk LinkedIn DMs. Adapt to the actual UI you encounter.\n\n**TASK CONFIGURATION:**\n- Sheet URL: \n- Message Goal: networking\n- Message Template: \n- Connect First: true\n\n---\n\n## STEP 1: LOAD SHEET DATA\n\n1. Navigate to \n2. Read all rows\n3. **Expected columns:**\n - profile_url (REQUIRED)\n - name (optional - helps personalization)\n - message_text (optional - overrides generation)\n - context (optional - extra personalization context)\n4. Validate: Skip rows without profile_url\n\n---\n\n## STEP 2: PROCESS EACH ROW\n\nFor each valid row:\n\n### A. NAVIGATE TO PROFILE\n1. Go to the profile_url from this row\n2. Wait for profile to load\n3. If profile not found, log error and continue to next\n\n### B. ANALYZE PROFILE\n- Extract name, title, company\n- Note recent activity if visible\n- Identify personalization hooks\n\n### C. CHECK CONNECTION STATUS\n- Connected: Can message directly\n- Not connected AND true: Send connection request\n- Not connected AND NOT true: Skip, log as \"not connected\"\n\n### D. PREPARE MESSAGE\n\n**IF message_text column has content:**\nUse it exactly\n\n**VALIDATION (for any message):**\n- LinkedIn messages: Keep under 1,000 chars for best response\n- Connection notes: STRICT 300 char MAX\n- If over limit: Log \"Message exceeds limit ( chars)\" and skip\n\n**ELSE generate message:**\n- Goal: networking\n- Template/angle: \"\"\n- Row context: [use context column if present]\n- Profile personalization: [use analyzed profile data]\n- Must have unique personalization per recipient\n- Under 500 chars recommended\n\n### E. SEND MESSAGE\n1. Open message composer\n2. Input message\n3. Check for validation errors before sending\n4. Send\n5. Log result\n\n### F. RATE LIMITING\n- Wait 30-60 seconds between messages\n- If LinkedIn shows warning, pause longer\n- If blocked, stop and report\n\n---\n\n## STEP 3: GENERATE REPORT\n\n```json\n{\n \"totalRows\": <number>,\n \"processed\": <number>,\n \"sent\": <number>,\n \"connectionRequestsSent\": <number>,\n \"skipped\": <number>,\n \"skippedOverLimit\": <number>,\n \"failed\": <number>,\n \"results\": [\n {\n \"rowIndex\": <number>,\n \"profileUrl\": \"\",\n \"recipientName\": \"\",\n \"connectionStatus\": \"connected|not_connected|connection_sent\",\n \"messageSource\": \"sheet|generated\",\n \"messagePreview\": \"<first 100 chars>\",\n \"characterCount\": <number>,\n \"withinLimit\": true|false,\n \"status\": \"sent|connection_sent|skipped|skipped_over_limit|failed\",\n \"error\": \"\"\n }\n ],\n \"warnings\": [],\n \"stoppedEarly\": false,\n \"stopReason\": \"\"\n}\n```\n\n---\n\n## VALIDATION REQUIREMENTS\n\n**LinkedIn message limits:**\n- Regular DM: ~8,000 chars (but 300-500 performs best)\n- Connection note: STRICT 300 chars MAX\n- InMail: ~8,000 chars\n\n**For each message:**\n1. Count characters BEFORE sending\n2. If connection note > 300: Skip or truncate\n3. Log character count in results\n4. Never send without validation",
"userInput": "You are sending bulk LinkedIn DMs. Adapt to the actual UI you encounter.\n\n**TASK CONFIGURATION:**\n- Sheet URL: \n- Message Goal: networking\n- Message Template: \n- Connect First: true\n\n---\n\n## STEP 1: LOAD SHEET DATA\n\n1. Navigate to \n2. Read all rows\n3. **Expected columns:**\n - profile_url (REQUIRED)\n - name (optional - helps personalization)\n - message_text (optional - overrides generation)\n - context (optional - extra personalization context)\n4. Validate: Skip rows without profile_url\n\n---\n\n## STEP 2: PROCESS EACH ROW\n\nFor each valid row:\n\n### A. NAVIGATE TO PROFILE\n1. Go to the profile_url from this row\n2. Wait for profile to load\n3. If profile not found, log error and continue to next\n\n### B. ANALYZE PROFILE\n- Extract name, title, company\n- Note recent activity if visible\n- Identify personalization hooks\n\n### C. CHECK CONNECTION STATUS\n- Connected: Can message directly\n- Not connected AND true: Send connection request\n- Not connected AND NOT true: Skip, log as \"not connected\"\n\n### D. PREPARE MESSAGE\n\n**IF message_text column has content:**\nUse it exactly\n\n**VALIDATION (for any message):**\n- LinkedIn messages: Keep under 1,000 chars for best response\n- Connection notes: STRICT 300 char MAX\n- If over limit: Log \"Message exceeds limit ( chars)\" and skip\n\n**ELSE generate message:**\n- Goal: networking\n- Template/angle: \"\"\n- Row context: [use context column if present]\n- Profile personalization: [use analyzed profile data]\n- Must have unique personalization per recipient\n- Under 500 chars recommended\n\n### E. SEND MESSAGE\n1. Open message composer\n2. Input message\n3. Check for validation errors before sending\n4. Send\n5. Log result\n\n### F. RATE LIMITING\n- Wait 30-60 seconds between messages\n- If LinkedIn shows warning, pause longer\n- If blocked, stop and report\n\n---\n\n## STEP 3: GENERATE REPORT\n\n```json\n{\n \"totalRows\": <number>,\n \"processed\": <number>,\n \"sent\": <number>,\n \"connectionRequestsSent\": <number>,\n \"skipped\": <number>,\n \"skippedOverLimit\": <number>,\n \"failed\": <number>,\n \"results\": [\n {\n \"rowIndex\": <number>,\n \"profileUrl\": \"\",\n \"recipientName\": \"\",\n \"connectionStatus\": \"connected|not_connected|connection_sent\",\n \"messageSource\": \"sheet|generated\",\n \"messagePreview\": \"<first 100 chars>\",\n \"characterCount\": <number>,\n \"withinLimit\": true|false,\n \"status\": \"sent|connection_sent|skipped|skipped_over_limit|failed\",\n \"error\": \"\"\n }\n ],\n \"warnings\": [],\n \"stoppedEarly\": false,\n \"stopReason\": \"\"\n}\n```\n\n---\n\n## VALIDATION REQUIREMENTS\n\n**LinkedIn message limits:**\n- Regular DM: ~8,000 chars (but 300-500 performs best)\n- Connection note: STRICT 300 chars MAX\n- InMail: ~8,000 chars\n\n**For each message:**\n1. Count characters BEFORE sending\n2. If connection note > 300: Skip or truncate\n3. Log character count in results\n4. Never send without validation",
"urls": [],
"meta": {
"createdAt": "",
"userAgent": ""
},
"execution": {
"mode": "device",
"deviceIds": []
}
}