Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vrashmanyu605-eng/Agentic_Sales-Markerting/llms.txt

Use this file to discover all available pages before exploring further.

The outreach generation agent turns intelligence into action. It receives the structured research and ICP analysis produced by earlier agents and uses them — along with your sender identity and company service descriptions — to produce a complete set of personalized sales messages. Every output is tailored to the specific company, its pain points, and its ICP match profile. The agent uses the LLM exclusively; no external tools or web searches are required at this stage.

State inputs

lead_research
string
required
The JSON string from the lead research agent. Provides company context, pain points, and recommended contacts that the LLM uses to personalize each message.
icp_analysis
string
required
The JSON string from the ICP matching agent. Provides match score, matching and missing attributes, and best service fit — used to sharpen the value proposition in each message.
sender_name
string
required
The name of the salesperson or account manager sending the outreach. Appears in email sign-offs and the call pitch.
company_services
string
required
A description of the services your company offers. The LLM uses this to match specific services to the lead’s pain points in each message.

State outputs

outreach_content
string
required
A JSON string containing the full set of generated outreach assets. See output schema for the complete field list.

What it does

1

Assemble the context

The agent reads lead_research, icp_analysis, sender_name, and company_services from state. All four inputs are passed verbatim to the LLM — no preprocessing or tool calls occur before the prompt is sent.
2

Generate multi-channel outreach content

The agent sends a single LLM request asking for seven distinct outreach assets in structured JSON format. The LLM crafts each asset with awareness of the lead’s industry, pain points, buying probability, and best service fit from the ICP analysis.
3

Store the result

The agent writes the raw LLM response string to outreach_content in state. Downstream steps (or a human reviewer) can parse and use individual fields.
This is the only pipeline agent that makes no external tool calls. All personalization is driven entirely by the structured data accumulated in earlier pipeline stages.

Output schema

The LLM is prompted to return structured JSON only. The expected structure is:
{
  "personalized_email": "Subject: Streamline Your Operations at Acme Corp\n\nHi Jane,\n\nI noticed Acme Corp is expanding...",
  "linkedin_message": "Hi Jane, I came across Acme Corp while researching manufacturers modernizing their ERP stack...",
  "followup_email": "Hi Jane, just following up on my earlier note about ERP integration...",
  "meeting_request_message": "Hi Jane, I'd love to show you a 20-minute live demo of how we cut implementation time by 60%...",
  "call_pitch": "Hi, this is [sender_name] from Webanix Solutions. We specialize in ERP integration for manufacturers...",
  "pain_point_based_hook": "Most manufacturers running legacy ERP lose 15-20% of ops efficiency to manual data entry — we eliminate that.",
  "subject_lines": [
    "Cut your ERP implementation timeline in half",
    "How Acme Corp could save $200K in ops costs",
    "Quick question about your current ERP setup"
  ]
}
Use the subject_lines array for A/B testing. The LLM generates three variants by default — one outcome-focused, one curiosity-driven, and one conversational.

Source code

from llm import llm


def outreach_generation_agent(state):

    lead_research = state["lead_research"]
    icp_analysis = state["icp_analysis"]
    sender_name = state["sender_name"]
    company_services = state["company_services"]

    response = llm.invoke(
        f"""
        You are a Sales Outreach Generation Agent.

        Generate personalized outreach messages for a potential client.

        Lead Research:
        {lead_research}

        ICP Analysis:
        {icp_analysis}

        Company Services:
        {company_services}

        Sender Name:
        {sender_name}

        Generate:
        - personalized_email
        - linkedin_message
        - followup_email
        - meeting_request_message
        - call_pitch
        - pain_point_based_hook
        - subject_lines

        Keep messaging professional, personalized, and sales-oriented.

        Return structured JSON only.
        """
    )

    return {
        "outreach_content": response.content
    }

Build docs developers (and LLMs) love