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 – 개요
회사 이름을 입력하면 구조화된 소스 기반 브리핑(비즈니스 개요, 업계 배경, 최근 뉴스 등)을 얻을 수 있는 작은 웹 앱입니다. 핵심 작업은 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 (선택 사항) – 작업/보고서 저장.
시작하기 (로컬 개발)
- 백엔드 – Python 3.11+, venv를 만들고
requirements.txt를 설치한 후.env.example을.env로 복사하고 OpenRouter/Tavily 키를 입력합니다(MongoDB는 선택 사항). - 프론트엔드 –
ui/.env.development.example을ui/.env.development.local로 복사하고VITE_API_URL을http://localhost:8000으로 설정한 후 npm 종속성을 설치합니다. - 실행 –
uvicorn application:app --reload --port 8000(API)ui디렉토리에서npm run dev(UI) →http://localhost:5174를 엽니다.
- 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 – 자유롭게 사용, 수정, 배포할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트