Use Case: Briefing Agent
This use case demonstrates how to create an agent with a specific purpose. For this example, we are showcasing the Briefing Agent. The Briefing Agent is intended for use by Sales and Marketing teams.
Problem
Sales and marketing teams commonly spend considerable time on research to create an informative sales debrief for a potential customer. Meeting with customers requires careful consideration of participants, roles of the customer team members, and background of the company and its products. To achieve a successful meeting, it is important to understand the role of customer participants, the products they build, the company background and previous interactions between the customer and your company.
Solution
Automating collection of the following information would shorten the time required to prepare and contribute to meeting success:
- Titles of the attendees, to know who are the decision-makers
- Some background information about the company.
- Any previous business history with the customer.
The Briefing Agent can automate the process. The solution is an Agent pipeline that includes a Driver, a Worker, and three Tool pipelines.
Agent Pipeline Structure
The briefing agent has three tools, which can be used in different combinations based on the requirements.
- CRM Insight tool - Retrieves customer relationship data from a CRM system.
- Search tool - Searches a topic on Google (attendee names, Company information) using the Google Search API service Serper.
- Scrape tool - Gathers information from a website and summarizes the content.

System prompt
To define the role of the Agent for the LLM, we provide instructions to the briefing Agent in the System Prompt:
You are an expert assistant designed to generate comprehensive customer briefings for sales and marketing teams prior to customer visits.
The briefing should include detailed information about the customer company and its team members whom the sales and marketing team will be meeting with.
This includes but is not limited to their job titles, contact information, professional backgrounds, LinkedIn profiles, and any relavent details.
You will be provided with names of individuals from a company, and a list of company personnel our team will be visiting.
I may also give you specific information I need, such as email addresses or LinkedIn profiles. Please make every effort to find this information for me.
If you are able to find relevant information, present it in bullet points.
If company information cannot be found in the CRM system, please use other tools to search it publicly available internet information.
You can use multiple rounds of different keyword searches to obtain information.
If the brief search results are insufficient to answer the questions, you can use a tool to obtain the full webpage content.
If you are unable to find sufficient information to generate a useful briefing, respond with: I don't have enough information.
This prompt input is included with the user prompt and sent to the LLM. Note that the prompt is addressing the Agent (powered by the LLM) from the point of view of the Agent user.
Agent pipeline walkthrough
Driver agent pipeline
In the Driver pipeline, the user prompt is forwarded along with the system prompt to the downstream LLM. Two prompt generators help build a JSON format to be consumable by the LLM. The PipeLoop Snap calls the Worker pipeline.

- JSON Generator: Generates the JSON document to provide the initial user prompt. This makes it easier to pass the input through the various LLMs and data systems. We also start the pipeline with the JSON Generator Snap because it helps when you want to change the user prompt to a different question.
- Prompt Generator: Gives the system prompt for the downstream LLM.
- Prompt Generator: Creates message array. Select Advanced prompt output and choose USER as the Role.
- PipeLoop: Sends prompt input to Worker Agent pipeline. Here the stop condition is set
to 10. Because the downstream LLM is Amazon Bedrock we map the system_ prompt field to
the Pipeline Parameter
$original.prompt
for the Target field. Also, the expression is$stopReason != "tool_use"
because in Amazon Bedrock stopReason is the parameter.
Worker agent pipeline
In the Worker, we have multiple branches, starting with our tool definitions in the first 3 Snaps before the prompt input is sent to the LLM Snap, in this case Amazon Bedrock. The remainder of the Worker agent pipeline routes the prompt input to the three tool pipelines.

- For each of the three child tool pipelines, we start with a corresponding Function
Snap that generates the JSON document specification for the model to call the tool:
- Amazon Bedrock Function Generator - CRM tool
- Amazon Bedrock Function Generator - Search tool
- Amazon Bedrock Function Generator - Scrape tool
- Amazon Bedrock Converse API Tool Calling: Calls the LLM model.
- Mapper Snap: Simplifies the LLM response and formats it as an array for the Message Appender Snap.
- Router Snap: Routes prompt to the three tools:
- Pipeline Execute Snap - CRM Insight: Calls the CRM Insight tool pipeline.
- Function Result Generator: Formats the response returned by the LLM in the CRM insight tool pipeline.
- Pipeline Execute Snap- Search: Calls the CRM Search tool pipeline.
- Function Result Generator: Formats the response returned by the LLM in the CRM Search tool pipeline.
- Pipeline Execute Snap - Scrape: Calls the CRM Search tool pipeline.
- Function Result Generator Snap: Formats the response returned by the LLM in the Scrape tool pipeline.
- Message Appender Snap: Merges the streams from the various tool pipelines into one output.
CRM Insight tool
This tool pipeline sends a query to a CRM database.

This tool pipeline is designed to query the CRM database for any information pertinent to the sales briefing. This pipeline is not intended as a pattern because the pipeline design greatly depends on the source data system you are querying.
The Router Snap takes the prompt input and splits the stream, sending one output to the CRM database and the other to a Mapper Snap, which defines the response if the information is not found in the CRM.
Sample output:
[
{
"toolUse": {
"toolUseId": "tooluse_eNeM7NzUSpe-JCMMQxElcQ",
"name": "scrape",
"input": {
"url": "https://aws.amazon.com/blogs/machine-learning/unlocking-generative-ai-for-enterprises-how-snaplogic-powers-their-low-code-agent-creator-using-amazon-bedrock/"
}
}
}
]
If the tool is used to search for 3 companies, then those would be routed to the first branch. If the query doesn't turn up results, then the Worker Agent receives that the data pertaining to the company was not found in the database.
Search tool

This tool pipeline is a reusable pattern.
- HTTP Client Snap: Configured to search Google via the Serper tool. We connect via an
API key that's set as a security header. Serper requires the
q
parameter have value. The HTTP entity type specified is RAW, and the definition is the following expression:{"q": $toolUse.input.query}
- Mapper Snaps: Maps the incoming
$entity
field to$content
in the Target field for the Agent Worker pipeline.
Web Scrape tool

Used after the search tool. From the list of links and descriptions output by the Search tool, the LLM might select any of the links to scrape the whole webpage and determine if there are any relevant details (in the same way a webcrawler would).
- HTTP Client Snap: This defines the call to the endpoint as a GET call.
- HTML to Markdown Converter Snap: Converts the format of the HTTP output to Markdown format.
- Prompt Generator Snap: Requests the LLM to summarize the Markdown output:
Summarize the content of this webpage, ensuring you capture all information related to individuals, including names, companies, titles, and contact details. Output the summary as a String. {{{content}}}
- Amazon Bedrock Converse API Snap: Sends the prompt output to the LLM.