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 Agentic Sales & Marketing system has two configuration surfaces: the LLM connection in llm.py, which controls the model and inference settings, and the initial_state dictionary in main.py, which defines your company profile, campaign inputs, and runtime controls. This page documents every field in both.

LLM configuration

The LLM client is defined in llm.py using langchain_openai.ChatOpenAI pointed at a locally running LM Studio server. All agents in the pipeline share this single client instance.
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gemma-3-4b-it",
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",
    temperature=0.3,
    streaming=True
)
model
string
default:"gemma-3-4b-it"
required
The model name as it appears in LM Studio. This must match the model you have loaded and serving. Change this value if you want to use a different locally hosted model.
base_url
string
default:"http://localhost:1234/v1"
required
The base URL of the LM Studio local server. LM Studio exposes an OpenAI-compatible API at this address by default. Update this if you have configured LM Studio to use a different port.
api_key
string
default:"lm-studio"
required
A placeholder API key required by the ChatOpenAI client. LM Studio does not validate this value, so "lm-studio" is used as a convention. Do not change it unless your LM Studio configuration requires a specific key.
temperature
number
default:"0.3"
Controls the randomness of the model’s outputs. 0.3 produces focused, consistent responses suitable for structured sales content. Increase toward 1.0 for more creative variation in outreach copy.
streaming
boolean
default:"true"
When true, the LLM streams token-by-token responses. This does not affect the final output but allows the terminal to print content progressively during long agent runs.

Workflow state

The initial_state dictionary in main.py seeds the SalesMarketingState TypedDict that flows through the LangGraph pipeline. Every field listed here maps directly to a key in graph/state.py.

Task and identity

task
string
required
A plain-text description of the workflow objective. Agents use this as the top-level instruction when constructing their prompts. Changing this value changes what the supervisor and agents understand as the goal.
company_name
string
default:"null"
Your company name. Set to null in initial_state because the discovery agent populates active_lead for each lead. If you want to hard-code a specific company context, set this field.
target_industry
string
required
The industry vertical the discovery agent searches for leads in. For example: "IT Services / AI Automation", "FinTech", or "Healthcare SaaS". This is the primary filter the discovery agent uses when running web searches.
sender_name
string
required
Your name or the name of the person sending outreach. The outreach generation agent includes this in email signatures, LinkedIn messages, and call scripts.
client_name
string
default:"Webanix Prospect"
A generic label for the lead used in early pipeline stages before the discovery agent identifies real company names. The lead research agent replaces this with the actual company name from active_lead.

Input data

sales_deck_text
string
required
The full text content of your company’s credentials or sales deck PDF, extracted by src.services.pdf_parsing.extract_pdf_text. The proposal generation agent draws from this to write proposals in your company’s voice and with your actual services and differentiators.
client_requirements
string
required
The full text content of jd.txt, your client requirements document. The discovery agent uses this to identify matching companies. The ICP matching and proposal generation agents also reference it when evaluating fit and scoping proposals.
competitors_data
string
A description of your known competitors in the target market. The competitor analysis agent uses this as a baseline when mapping the competitive landscape for each lead. You can provide a simple label like "Standard AI/ML Services Competitors" or a detailed breakdown of specific vendors.

Business profile

company_services
string
required
A comma-separated list of your core service offerings. Used by the outreach generation and proposal generation agents to position your capabilities against the lead’s needs.
service_details
string
required
A longer description of your services and delivery approach. Used to add substance to proposals and outreach content beyond the high-level company_services list.
ideal_customer_profile
string
required
A description of your ideal customer. The ICP matching agent compares each discovered lead against this profile to produce an icp_analysis score and recommendation. Be specific: include company size, industry signals, technology investments, and pain points.
pricing_information
string
A brief summary of your pricing range or model. For example: "Projects range $10k-$50k." Used by the proposal generation agent to include indicative pricing in proposals.
pricing_data
string
Additional pricing context for the proposal agent, such as how pricing is structured. For example: "Custom pricing based on scope." Complements pricing_information in proposal documents.
case_studies
string
A newline-separated list of past project summaries or outcomes. The proposal generation agent includes relevant case studies in proposals to demonstrate proven delivery. Each entry should be one or two sentences describing the engagement and result.
meeting_transcript
string
default:"Initial discovery phase - no transcript yet."
A transcript from a prior discovery or sales call with the prospect. At the start of a fresh workflow this is a placeholder. If you have an existing call transcript, paste it here to give the outreach and proposal agents richer context.

Google Sheets CRM

spreadsheet_id
string
required
The Google Sheets spreadsheet ID from the sheet URL. For example, in the URL https://docs.google.com/spreadsheets/d/1MsG4jkVacHwuw2cxTQ_Vt5cW5qKoBgGJH1IqfDCdRto/edit, the ID is 1MsG4jkVacHwuw2cxTQ_Vt5cW5qKoBgGJH1IqfDCdRto. Replace this with your own sheet’s ID.
spreadsheet_range
string
default:"Sheet1!A1"
The A1 notation range where the CRM update agent starts appending data. The agent uses the append method, so existing rows are preserved and new rows are added below. Change the sheet name if your sheet tab is named differently.

Workflow control

workflow_stage
string
default:"start"
The initial stage label for the workflow. Set to "start" when beginning a fresh run. The supervisor and agents update this field as the pipeline progresses. Do not change this value manually.
completed
boolean
default:"false"
Whether the workflow has finished processing all leads. The supervisor sets this to true when the discovered_leads queue is exhausted and it routes to END. Used to detect successful completion in the run loop.
progress_percentage
integer
default:"0"
An integer from 0 to 100 representing overall pipeline completion. Updated by agents as they complete. You can use this value to drive progress indicators if you extend main.py with a UI or logging layer.

Input files

jd.txt — Client requirements

jd.txt is a plain-text file in the project root that describes what kind of partner or solution the target client is looking for. Write it from the perspective of the prospect’s requirements, not your company’s pitch. The discovery agent uses it to find relevant leads, and the ICP matching and proposal agents reference it when evaluating fit. There is no required structure — plain prose works. A typical jd.txt might look like:
Looking for an IT services partner with proven experience in AI automation
and cloud infrastructure. Must have delivered enterprise-scale projects in
the logistics or manufacturing sector. Prefer vendors with a dedicated
AI/ML team and demonstrable ROI from previous engagements.

Sales deck PDF

Place your company’s credentials or capabilities deck PDF in the project root. Update sales_deck_path in main.py to match the file name:
sales_deck_path = "Creds_Deck_Webanix_Development_Services_2026 1.pdf"
The extract_pdf_text utility (defined in src/services/pdf_parsing.py) uses PyMuPDF (import fitz) to open the PDF, iterate over every page, and concatenate the extracted text into a single string stored in sales_deck_text. The proposal generation agent uses this text to write proposals that reflect your actual services, delivery methodology, and credentials rather than generic content.
The credentials.json Google Cloud service account key file must be present in the project root for the CRM update agent to write to Google Sheets. If this file is missing, the agent returns an error and the lead’s data will not be saved. See Google Sheets setup to generate and configure this file.

Build docs developers (and LLMs) love