← CookbookView source on GitHub β†—

πŸ—‚οΈ Briefing Room β€” Pre-Meeting Intel Agent

You have a call with a company in 30 minutes. What do you need to know?

Enter a company name (and optionally the attendee) and the agent researches the live web and produces a one-page, fully cited pre-meeting brief: three things to know, a company snapshot, three questions to ask, and one thing to avoid.

Built with LangGraph, Tavily, and Nebius Token Factory.

πŸš€ Features

πŸ› οΈ Tech Stack

Workflow

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
START ─▢│  plan  β”‚ ──▢ β”‚ research β”‚ ──▢ β”‚ reflect β”‚ ──┐ gaps + budget left
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
              β–²                                       β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                   β”‚ sufficient
                                                   β–Ό
                                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
                                              β”‚  write β”‚ ──▢ END
                                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  1. plan β€” decomposes "meeting with company" into 4–6 search-ready research questions (structured output).
  2. research β€” runs each question through Tavily, dedupes by URL, and accumulates evidence in graph state.
  3. reflect β€” an editor-persona LLM judges coverage (structured output: sufficient, gaps). Gaps route the graph back to research; otherwise it proceeds.
  4. write β€” synthesizes the markdown brief with inline citations from the numbered evidence.

πŸ“¦ Getting Started

Prerequisites

Installation

git clone https://github.com/nebius/token-factory-cookbook
cd token-factory-cookbook/agents/langchain/meeting_briefing_agent

uv sync          # or: pip install -e .
cp env.example .env   # add your NEBIUS_API_KEY and TAVILY_API_KEY

The app resolves .env from the meeting_briefing_agent directory, regardless of the directory from which Streamlit is launched. The sidebar keeps the original password-masked fields and fills them from .env when configured.

βš™οΈ Usage

Streamlit UI:

uv run streamlit run app.py

Open http://localhost:8501, enter a company (e.g. LangChain), optionally an attendee and your meeting goal, and hit Generate brief. Watch the graph work through its nodes, then read the brief and inspect the evidence table. Download the brief as Markdown with one click.

CLI:

uv run python main.py "LangChain" --attendee "Harrison Chase, CEO" --context "exploring an integration partnership"

LangSmith (optional): add these to .env to trace every run:

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=your_langsmith_api_key

πŸ“‚ Project Structure

meeting_briefing_agent/
β”œβ”€β”€ graph.py          # LangGraph state machine (plan β†’ research β†’ reflect ⇄ β†’ write)
β”œβ”€β”€ app.py            # Streamlit UI with live node progress + evidence table
β”œβ”€β”€ main.py           # CLI entrypoint
β”œβ”€β”€ pyproject.toml    # Dependencies (uv/pip)
β”œβ”€β”€ test_graph.py     # Deterministic graph tests (no API calls)
β”œβ”€β”€ env.example       # Required/optional environment variables
└── README.md

πŸ” Technical Notes