Writing a Business Context glossary

The free-text block that tells your Advanced agent what your custom fields and opportunities mean in your business.

Updated June 26, 2026

The Business Context textarea only appears for
Advanced agents. It's a free-text
explanation of your business that gets injected at the top of the
agent's system prompt on every turn, right before the contact data.

Its job is to turn raw CRM values into meaningful information. Without
a glossary, the agent sees this:

Opportunity: 2019 Ford F-150 4x4 — $45,000 (open) stage: 8H2aKLmq
  vehicle_color=red, vehicle_year=2019, vehicle_miles=42000

...and has to guess what any of it means. With a glossary, it knows
that monetaryValue is the listed sale price in USD, that
vehicle_* custom fields are car specs, and that the stage ID
corresponds to "Test Drive Scheduled".

What to include

A good glossary answers these questions:

  1. What is your business? One sentence. *"We are a used car
  2. What does an opportunity represent? Especially when it's not
  3. What does monetaryValue mean? *"Listed sale price in USD, not
  4. What do your custom field groups mean? *"Custom fields starting
  5. What are your pipeline stages? *"Stages progress: New Inquiry →
  6. How should the agent reference things naturally? *"When the

You don't have to hit every one of those. Include only what the agent
will actually trip on without.

Worked example: used car dealer

We are a used car dealership. Each opportunity is a specific vehicle
the contact has inquired about — a single contact will usually have
2–5 active opportunities as they compare options. monetaryValue is
the listed sale price in USD (not the negotiated price).

Custom fields on opportunities describe the vehicle:
- vehicle_stock_id: our internal stock number (always starts with "S-")
- vehicle_make, vehicle_model, vehicle_year: self-explanatory
- vehicle_color, vehicle_miles: self-explanatory

Contact-level custom fields:
- budget_cap: contact's max budget in USD
- preferred_body_style: sedan / SUV / truck / wagon
- trade_in_vehicle: free-text description of what they're trading

Pipeline stages (in order): New Inquiry → Viewing Scheduled →
Viewed → Test Drive Scheduled → Test Driven → Offer Made →
Financing → Sold. A "lost" opportunity means they went elsewhere or
passed on it. A "won" opportunity is a completed sale.

When the contact says "that truck", "the red one", "the silver RAV4",
etc., cross-reference their active inquiries and pick the match.
If they ask about a vehicle not in their active inquiries, call
search_opportunities to see if it's in stock.

Worked example: B2B SaaS sales rep

We sell a team productivity SaaS on monthly and annual plans. Each
opportunity is a deal in a specific pipeline stage; monetaryValue is
the annualised contract value in USD.

Opportunity custom fields:
- seat_count: number of user licences being discussed
- plan_tier: "Starter", "Pro", or "Enterprise"
- contract_length_months: typically 12 or 36
- primary_use_case: the main workflow they want to solve

Contact custom fields:
- role: usually "Founder", "Ops Manager", or "VP Engineering"
- company_size_band: 1-10, 11-50, 51-200, 201+
- current_tool: what they're using today (often Asana, Monday, or none)

Stages: Discovery → Demo Scheduled → Demo Done → Proposal Sent →
Verbal Yes → Legal Review → Signed. Lost usually means they went
with a competitor (logged in current_tool on close).

If the contact references "the proposal", check for an opportunity in
stage Proposal Sent and cite its monetaryValue + contract_length_months.
If they're weighing tiers, the plan_tier field tells you which one
they're considering on each open deal.

Worked example: trades / quote-based service

We're a residential plumbing contractor. Opportunities are itemised
quotes — monetaryValue is the total quoted price in USD including GST.

Opportunity custom fields:
- job_type: "Emergency", "Renovation", "Maintenance", "New install"
- address: service address (not always the contact's home address)
- materials_cost: parts-only portion of the total
- labour_hours_estimated: our crew time estimate

Contact custom fields:
- preferred_contact_window: contact-provided time they want a call
- access_notes: keys, gate codes, dogs, parking — free text the tech
  needs before arrival
- property_type: "House", "Apartment", "Commercial"

Stages: Quote Requested → Quoted → Quote Accepted → Scheduled →
In Progress → Complete → Invoice Sent → Paid. A "lost" opportunity
means they went with another quote.

When the contact references "the quote" or "the bathroom job", pick
the most recently quoted opportunity. If they ask for a timeline,
check the stage first — "Scheduled" opportunities have an associated
appointment you can look up.

How to write it well

  • Be specific, not decorative. The glossary is a reference doc for
  • Name the fields exactly as they appear. If your GHL custom field
  • Describe the units. "USD" beats "dollars". "monthly" beats
  • Give the agent permission to cross-reference. Say things like
  • Keep it under ~500 words. It's injected every turn, so shorter

Common mistakes

  • Writing it as persona instructions. The glossary describes the
  • Listing every field in GHL. Only fields the agent will encounter
  • Hardcoding pricing. Put prices in your Knowledge base,
  • Describing workflow instead of data. "When the contact agrees to

When to update it

Update the glossary when:

  • You add a new custom field category in GHL that opportunities will
  • You rename a pipeline stage
  • The meaning of an existing field shifts (e.g. monetaryValue starts
  • Your agent misinterprets something the same way twice — odds are

You don't need to touch it when:

  • Your knowledge base updates (it's a separate layer)
  • Rules or listening categories change
  • You add a new channel or adjust working hours

Testing

Use the Playground to simulate a conversation with a real contact ID.
The agent's system prompt (including your glossary and the live
contact data) is deterministic — if the agent can't answer "how much
is the red one?" when the red F-150 is clearly in the contact's
inquiries, the fix is almost always in the glossary or the custom
field names.