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 proposal generation agent produces a full, ready-to-review IT services proposal by combining everything you know about the client with current market standards. It reads your client requirements, the services your company offers, relevant case studies, and your pricing data, then fetches live proposal best-practice trends for the target industry before asking the LLM to assemble a comprehensive proposal. The output is stored in proposal_document as a JSON string covering every section a professional proposal requires.

State inputs

client_requirements
string
required
A description of what the client needs. This drives the scope, proposed solution, and technology stack sections of the proposal.
company_services
string
required
A description of the services your company offers. The LLM maps these to client requirements when writing the proposed solution.
case_studies
string
required
Relevant case studies or success stories to include as social proof. The LLM weaves these into the executive summary and proposed solution.
pricing_data
string
required
Your pricing structures, rate cards, or ranges. Used to generate the pricing_estimate section.
target_industry
string
The industry of the target client. Used to build the proposal trend search query. Defaults to "tech" if not provided.

State outputs

proposal_document
string
required
A JSON string containing the complete generated proposal. See output schema for all sections.

What it does

1

Search for industry proposal trends

The agent constructs a search query using target_industry — for example, "proposal best practices for manufacturing services 2025" — and calls web_search. The results give the LLM access to current standards on proposal structure, pricing norms, and technology stack expectations for that industry.
2

Assemble all inputs

The agent combines client_requirements, company_services, case_studies, pricing_data, and the proposal_trends search results into a single LLM prompt. No additional tool calls are made after this point.
3

Generate the proposal

The LLM produces a structured JSON proposal covering nine sections: executive summary, project scope, proposed solution, technology stack, implementation plan, estimated timeline, team structure, pricing estimate, and milestones. The raw response is stored as proposal_document.

Tools used

web_search

Retrieves current proposal best practices and industry standards for the target sector to ensure the generated proposal aligns with buyer expectations.

Output schema

The LLM is prompted to return structured JSON only. The expected structure is:
{
  "executive_summary": "Webanix Solutions proposes a phased ERP modernization program for Acme Corp...",
  "project_scope": "Replace legacy on-premise ERP with a cloud-native platform covering finance, inventory, and logistics modules.",
  "proposed_solution": "We will deploy a SaaS ERP platform integrated with Acme's existing MES and WMS systems...",
  "technology_stack": [
    "SAP S/4HANA Cloud",
    "Azure Integration Services",
    "Power BI for reporting"
  ],
  "implementation_plan": "Phase 1: Discovery and architecture (6 weeks). Phase 2: Core module deployment (12 weeks). Phase 3: Integration and UAT (8 weeks).",
  "estimated_timeline": "26 weeks from kickoff to go-live",
  "team_structure": {
    "project_manager": 1,
    "solution_architects": 2,
    "developers": 4,
    "qa_engineers": 2,
    "change_management": 1
  },
  "pricing_estimate": {
    "discovery_phase": "$18,000",
    "implementation": "$95,000",
    "annual_support": "$24,000",
    "total_first_year": "$137,000"
  },
  "milestones": [
    "Week 6: Architecture sign-off",
    "Week 18: Core modules live in UAT",
    "Week 26: Production go-live",
    "Week 30: Hypercare period ends"
  ]
}
The proposal_document JSON string is suitable for rendering directly into a proposal template or passing to a document generation tool. Parse individual fields to populate sections of a Word or PDF template.

Source code

import json
from llm import llm
from tools.search_tool import web_search

def proposal_generation_agent(state):
    client_requirements = state["client_requirements"]
    company_services = state["company_services"]
    case_studies = state["case_studies"]
    pricing_data = state["pricing_data"]

    # Search for industry proposal standards and tech stack trends
    search_query = f"proposal best practices for {state.get('target_industry', 'tech')} services 2025"
    proposal_trends = web_search(search_query)

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

        Generate a professional IT services proposal using provided data and current industry standards.

        Client Requirements:
        {client_requirements}

        Company Services:
        {company_services}

        Case Studies:
        {case_studies}

        Pricing Data:
        {pricing_data}

        Industry Proposal Trends:
        {json.dumps(proposal_trends, indent=2)}

        Generate:
        - executive_summary
        - project_scope
        - proposed_solution
        - technology_stack
        - implementation_plan
        - estimated_timeline
        - team_structure
        - pricing_estimate
        - milestones

        Return structured JSON only.
        """
    )

    return {
        "proposal_document": response.content
    }

Build docs developers (and LLMs) love