• unwind ai
  • Posts
  • Build a Multi-Agent Product Launch Intelligence App

Build a Multi-Agent Product Launch Intelligence App

Fully functional multi-agent app with step-by-step instructions (100% opensource)

Building intelligence tools that can automatically gather, analyze, and synthesize competitive data is both challenging and incredibly valuable. But it's one of those projects that sounds straightforward until you realize you're juggling multiple APIs, parsing different data formats, and somehow making sense of scattered information across dozens of websites.

In this tutorial, we'll build a multi-agent Product Intelligence System using GPT-4o, Agno framework, and Firecrawl's new /search endpoint. This system deploys three specialized AI agents that work together to provide comprehensive competitive analysis, market sentiment tracking, and launch performance metrics - all through a clean Streamlit interface.

Firecrawl just dropped their /search endpoint, which combines web search and content scraping in a single API call. Instead of first searching for relevant pages and then separately scraping their content, you can now discover and extract web data in one operation. This makes it perfect for building AI agents that need to gather real-time competitive intelligence from across the web.

Don’t forget to share this tutorial on your social channels and tag Unwind AI (X, LinkedIn, Threads, Facebook) to support us!

What We’re Building

This Streamlit application implements a sophisticated multi-agent intelligence system that transforms scattered public web data into actionable launch insights for Go-To-Market and Product Marketing teams. Three specialized AI agents collaborate to deliver comprehensive competitive analysis through an intuitive tabbed interface.

Features:

  • Multi-agent architecture with three specialized roles:

    1. Product Launch Analyst: Evidence-backed competitor launch breakdowns

    2. Market Sentiment Specialist: Social media and review sentiment analysis

    3. Launch Metrics Specialist: Performance KPIs and adoption tracking

  • Quick actions – press J/K/L to trigger the three analyses without touching the UI

  • Auto-formatted Markdown reports – bullet summary first, then expanded deep-dive

  • Sources section – every report ends with the URLs that were crawled or searched

How The App Works

  1. Getting Started: Start by pasting your OpenAI and Firecrawl API keys into the sidebar.

  2. Pick Your Target: Type in a company name - could be "Tesla," "Notion," or whoever you're curious about. The app shows a green checkmark when it's ready to analyze.

  3. Choose Your Analysis: Click one of the three tabs and hit the analyze button.

  4. Agents Get to Work: Behind the scenes, your chosen agent fires up and starts hunting the web using Firecrawl's /search endpoint. It's searching and scraping content in one shot.

  5. Processing: The agent processes everything through its specialized knowledge. The competitor analyst looks for positioning and launch tactics, the sentiment specialist digs into reviews and social chatter, and the metrics agent hunts for adoption numbers and performance signals.

  6. Report: The app takes the agent's insights and formats them into proper reports with tables, bullet points, and actionable recommendations. Plus, it lists all the sources so you know where the intel came from.

Prerequisites

Before we begin, make sure you have the following:

  1. Python installed on your machine (version 3.10 or higher is recommended)

  2. Your OpenAI and Firecrawl API key

  3. A code editor of your choice (we recommend VS Code or PyCharm for their excellent Python support)

  4. Basic familiarity with Python programming

Code Walkthrough

Setting Up the Environment

First, let's get our development environment ready:

  1. Clone the GitHub repository:

git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd advanced_ai_agents/multi_agent_apps/product_launch_intelligence_agent
pip install -r requirements.txt
  1. You can configure the agent using environment variables:

    OPENAI_API_KEY=sk-************************ FIRECRAWL_API_KEY=fc-************************


    Alternatively, you can set these values directly in the sidebar.

Creating the Streamlit App

Let’s create our app. Create a new file product_launch_intelligence_agent.py and add the following code:

  1. Import necessary libraries and configure the app:

import streamlit as st
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.firecrawl import FirecrawlTools
from dotenv import load_dotenv
from datetime import datetime
from textwrap import dedent
import os

st.set_page_config(
    page_title="Product Intelligence Agent",
    page_icon="🚀",
    layout="wide",
    initial_sidebar_state="expanded"
)
  1. Set up secure API key management:

load_dotenv()

st.sidebar.header("🔑 API Configuration")
with st.sidebar.container():
    openai_key = st.text_input(
        "OpenAI API Key",
        type="password",
        value=os.getenv("OPENAI_API_KEY", ""),
        help="Required for AI agent functionality"
    )
    
    firecrawl_key = st.text_input(
        "Firecrawl API Key", 
        type="password",
        value=os.getenv("FIRECRAWL_API_KEY", ""),
        help="Required for web search and crawling"
    )

# Set environment variables
if openai_key:
    os.environ["OPENAI_API_KEY"] = openai_key
if firecrawl_key:
    os.environ["FIRECRAWL_API_KEY"] = firecrawl_key
  1. Create the Product Launch Analyst agent:

if openai_key and firecrawl_key:
    launch_analyst = Agent(
        name="Product Launch Analyst",
        description=dedent("""
        You are a senior Go-To-Market strategist who evaluates competitor product launches with a critical, evidence-driven lens.
        
        Your objective is to uncover:
        • How the product is positioned in the market
        • Which launch tactics drove success (strengths)  
        • Where execution fell short (weaknesses)
        • Actionable learnings competitors can leverage
        
        Always cite observable signals (messaging, pricing actions, channel mix, timing, engagement metrics). Maintain a crisp, executive tone and focus on strategic value.
        
        IMPORTANT: Conclude your report with a 'Sources:' section, listing all URLs of websites you crawled or searched for this analysis.
        """),
        model=OpenAIChat(id="gpt-4o"),
        tools=[FirecrawlTools(search=True, crawl=True, poll_interval=10)],
        show_tool_calls=True,
        markdown=True,
        exponential_backoff=True,
        delay_between_retries=2,
    )
  1. Create the Market Sentiment Specialist agent:

sentiment_analyst = Agent(
        name="Market Sentiment Specialist",
        description=dedent("""
        You are a market research expert specializing in sentiment analysis and consumer perception tracking.
        
        Your expertise includes:
        • Analyzing social media sentiment and customer feedback
        • Identifying positive and negative sentiment drivers
        • Tracking brand perception trends across platforms  
        • Monitoring customer satisfaction and review patterns
        • Providing actionable insights on market reception
        
        Focus on extracting sentiment signals from social platforms, review sites, forums, and customer feedback channels.
        
        IMPORTANT: Conclude your report with a 'Sources:' section, listing all URLs of websites you crawled or searched for this analysis.
        """),
        model=OpenAIChat(id="gpt-4o"),
        tools=[FirecrawlTools(search=True, crawl=True, poll_interval=10)],
        show_tool_calls=True,
        markdown=True,
        exponential_backoff=True,
        delay_between_retries=2,
    )
  1. Create the Launch Metrics Specialist agent:

metrics_analyst = Agent(
        name="Launch Metrics Specialist", 
        description=dedent("""
        You are a product launch performance analyst who specializes in tracking and analyzing launch KPIs.
        
        Your focus areas include:
        • User adoption and engagement metrics
        • Revenue and business performance indicators
        • Market penetration and growth rates
        • Press coverage and media attention analysis
        • Social media traction and viral coefficient tracking
        • Competitive market share analysis
        
        Always provide quantitative insights with context and benchmark against industry standards when possible.
        
        IMPORTANT: Conclude your report with a 'Sources:' section, listing all URLs of websites you crawled or searched for this analysis.
        """),
        model=OpenAIChat(id="gpt-4o"),
        tools=[FirecrawlTools(search=True, crawl=True, poll_interval=10)],
        show_tool_calls=True,
        markdown=True,
        exponential_backoff=True,
        delay_between_retries=2,
    )
  1. Create report expansion functions:

def expand_competitor_report(bullet_text: str, competitor: str) -> str:
    if not launch_analyst:
        st.error("⚠️ Please enter both API keys in the sidebar first.")
        return ""
    
    prompt = (
        f"Transform the insight bullets below into a professional launch review for product managers analysing {competitor}.\n\n"
        f"Produce well-structured **Markdown** with a mix of tables, call-outs and concise bullet points --- avoid long paragraphs.\n\n"
        f"=== FORMAT SPECIFICATION ===\n"
        f"# {competitor} -- Launch Review\n\n"
        f"## 1. Market & Product Positioning\n"
        f"• Bullet point summary of how the product is positioned (max 6 bullets).\n\n"
        f"## 2. Launch Strengths\n"
        f"| Strength | Evidence / Rationale |\n|---|---|\n| ... | ... | (add 4-6 rows)\n\n"
        f"## 3. Launch Weaknesses\n" 
        f"| Weakness | Evidence / Rationale |\n|---|---|\n| ... | ... | (add 4-6 rows)\n\n"
        f"## 4. Strategic Takeaways for Competitors\n"
        f"1. ... (max 5 numbered recommendations)\n\n"
        f"=== SOURCE BULLETS ===\n{bullet_text}\n\n"
        f"Guidelines:\n"
        f"• Populate the tables with specific points derived from the bullets.\n"
        f"• Only include rows that contain meaningful data; omit any blank entries."
    )
    
    resp = launch_analyst.run(prompt)
    return resp.content if hasattr(resp, "content") else str(resp)
  1. Build the main Streamlit interface:

st.title("🚀 Product Launch Intelligence Agent")
st.markdown("*AI-powered insights for GTM, Product Marketing & Growth Teams*")
st.divider()

# Company input section
st.subheader("🏢 Company Analysis")
with st.container():
    col1, col2 = st.columns([3, 1])
    with col1:
        company_name = st.text_input(
            label="Company Name",
            placeholder="Enter company name (e.g., OpenAI, Tesla, Spotify)",
            help="This company will be analyzed by all three specialized agents",
            label_visibility="collapsed"
        )
    with col2:
        if company_name:
            st.success(f"✓ Ready to analyze **{company_name}**")

# Create tabs for analysis types
analysis_tabs = st.tabs([
    "🔍 Competitor Analysis",
    "💬 Market Sentiment", 
    "📈 Launch Metrics"
])
  1. Implement the analysis workflows:

# Competitor Analysis Tab
with analysis_tabs[0]:
    if company_name:
        analyze_btn = st.button(
            "🚀 Analyze Competitor Strategy",
            key="competitor_btn",
            type="primary",
            use_container_width=True
        )
        
        if analyze_btn:
            if not launch_analyst:
                st.error("⚠️ Please enter both API keys in the sidebar first.")
            else:
                with st.spinner("🔍 Launch Analyst gathering competitive intelligence..."):
                    try:
                        bullets = launch_analyst.run(
                            f"Generate up to 16 evidence-based insight bullets about {company_name}'s most recent product launches.\n"
                            f"Format requirements:\n"
                            f"• Start every bullet with exactly one tag: Positioning | Strength | Weakness | Learning\n"
                            f"• Follow the tag with a concise statement (max 30 words) referencing concrete observations: messaging, differentiation, pricing, channel selection, timing, engagement metrics, or customer feedback."
                        )
                        
                        long_text = expand_competitor_report(
                            bullets.content if hasattr(bullets, "content") else str(bullets),
                            company_name
                        )
                        
                        st.session_state.competitor_response = long_text
                        st.success("✅ Competitor analysis ready")
                        st.rerun()
                    except Exception as e:
                        st.error(f"❌ Error: {e}")
  1. Add sidebar status indicators and system information:

# Agent status indicators
with st.sidebar.container():
    st.markdown("### 🤖 System Status")
    if openai_key and firecrawl_key:
        st.success("✅ All agents ready")
    else:
        st.error("❌ API keys required")

# Analysis status
if company_name:
    with st.sidebar.container():
        st.markdown("### 📊 Analysis Status")
        st.markdown(f"**Company:** {company_name}")
        
        status_items = [
            ("🔍", "Competitor Analysis", st.session_state.get('competitor_response')),
            ("💬", "Sentiment Analysis", st.session_state.get('sentiment_response')),
            ("📈", "Metrics Analysis", st.session_state.get('metrics_response'))
        ]
        
        for icon, name, status in status_items:
            if status:
                st.success(f"{icon} {name}")
            else:
                st.info(f"{icon} {name}")

Running the App

With our code in place, it's time to launch the app.

  • In your terminal, navigate to the project folder, and run the following command:

streamlit run product_launch_intelligence_agent.py
  • Streamlit will provide a local URL (typically http://localhost:8501). Open your web browser and navigate to this URL to interact with your Local RAG Agent.

Working Application Demo

Conclusion

Your multi-agent Product Intelligence System that transforms scattered web data into actionable competitive insights is now ready.

This setup can now be expanded further:

  1. Custom Industry Focus: Extend agents with industry-specific knowledge bases and terminology to provide more targeted analysis for sectors like fintech, healthcare, or enterprise software.

  2. Integration Workflows: Connect the system to Slack, email, or project management tools to automatically distribute insights to relevant team members.

  3. Advanced Analytics: Implement sentiment trend analysis, competitive positioning mapping, and predictive modeling for launch success probability.

Keep experimenting with different configurations and features to build more sophisticated AI applications.

We share hands-on tutorials like this 2-3 times a week, to help you stay ahead in the world of AI. If you're serious about leveling up your AI skills and staying ahead of the curve, subscribe now and be the first to access our latest tutorials.

Don’t forget to share this tutorial on your social channels and tag Unwind AI (X, LinkedIn, Threads) to support us!

Reply

or to participate.