guy-hartstein/company-research-agent

An agentic company research tool powered by LangGraph and Tavily that conducts deep diligence on companies using a multi-agent framework. It leverages OpenRouter on the backend for rapid inference with any leading model.

Company Research Agent – 概要

会社名を入力すると、構造化されたソース付きのブリーフィング(ビジネス概要、業界背景、最近のニュースなど)を取得できる小さな Web アプリです。主要な処理は FastAPI バックエンドが担い、LLM 駆動のステップからなるリサーチグラフと Tavily のウェブ検索/関連性サービスを調整します。React + Vite フロントエンドは進捗をブラウザにストリーミングし、最終的な Markdown レポートを PDF としてエクスポートできます。


コア機能

機能 仕組み
自動リサーチ Tavily にクエリを送信し、関連性をスコアリングし、URL を収集します。
LLM 駆動の統合 OpenRouter 経由でアクセス可能な任意のモデル(または OpenAI/Gemini キーを直接使用)を使用して、検索プロンプトを生成し、ソースを要約し、最終ブリーフィングを作成します。
ライブストリーミング UI は GET /research/{job_id}/stream からサーバー送信イベントを受信し、ジョブの進捗をリアルタイムで確認できます。
PDF エクスポート バックエンドは POST /generate-pdf を介して Markdown レポートを PDF に変換します。
オプションの永続化 MongoDB URI が指定されている場合、ジョブとレポートは後で取得できるように保存されます。
モデルの柔軟性 設定 UI でモデルを選択します。同じモデルがパイプラインのすべてのステップで使用されます。

アーキテクチャ概要

React + Vite (フロントエンド)  ←→  FastAPI (バックエンド)
        │                     │
        └─ POST /research ──►  リサーチグラフ
                               ├─ アナライザー
                               ├─ コレクター (Tavily)
                               ├─ キュレーター (関連性スコアリング)
                               ├─ ブリーフィング (LLM 統合)
                               └─ エディター (最終 Markdown)

バックエンドは以下と通信します:

  • Tavily – ウェブ検索と関連性ランキング。
  • LLM – OpenRouter 上の任意のモデル、または OpenAI/Gemini を直接使用して、プロンプト生成、要約、編集を行います。
  • MongoDB(オプション)– ジョブ/レポートの保存。

はじめに(ローカル開発)

  1. バックエンド – Python 3.11+、venv を作成し、requirements.txt をインストールし、.env.example を .env にコピーして OpenRouter/Tavily キーを入力します(MongoDB はオプション)。
  2. フロントエンド – ui/.env.development.example を ui/.env.development.local にコピーし、VITE_API_URL を http://localhost:8000 に設定し、npm 依存関係をインストールします。
  3. 実行 –
    • uvicorn application:app --reload --port 8000(API)
    • ui 内で npm run dev(UI)→ http://localhost:5174 を開きます。
  4. Docker – 同じ .env ファイルが存在する場合、docker compose up --build で両方のサービスが起動します。

典型的なワークフロー

curl -X POST http://localhost:8000/research \
  -H 'Content-Type: application/json' \
  -d '{"company":"Tavily","company_url":"https://tavily.com","industry":"AI search","hq_location":"New York, USA","model":"anthropic/claude-sonnet-5.5"}'
  • レスポンスには job_id が含まれます。
  • UI(または GET …/stream リクエスト)が進捗イベントをストリーミングします。
  • 完了後、GET /research/{job_id}/report で Markdown を取得し、POST /generate-pdf でダウンロード可能な PDF を作成します。

誰が使うのか?

  • 投資家やアナリスト – 対象企業の迅速なソース付き概要が必要な場合。
  • 事業開発チーム – パートナーや競合他社を調査する場合。
  • 学生やジャーナリスト – 手動のウェブ検索なしで再現可能なブリーフィングを希望する場合。
  • 開発者 – 他の LLM オーケストレーション型リサーチエージェントを構築するためのテンプレートを探している場合。

制限と考慮事項

  • API キー依存 – 有効な OpenRouter(または OpenAI/Gemini)キーと Tavily キーを提供する必要があります。これらがないとサービスは実行できません。
  • ソース品質 – 関連性スコアリングはヒューリスティックです。最終レポートは、取得したページから LLM が統合した内容を反映します。
  • 永続化はオプション – MongoDB がない場合、各ジョブは現在のサーバー実行中のみメモリに保持されます。
  • モデルコスト – OpenRouter 経由で大規模モデルを使用すると高額になる可能性があります。価格と品質のバランスが取れたモデルを選択してください。

ライセンス

Apache License 2.0 – 自由に使用、変更、配布できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト