finds.dev← search

// the find

guy-hartstein/company-research-agent

★ 2,286 · Python · Apache-2.0 · updated Sep 2026

An agentic company research tool powered by LangGraph and Tavily that conducts deep diligence on companies using a multi-agent framework. It leverages Google's Gemini 2.5 Flash and OpenAI's GPT-5.1 on the backend for inference.

A LangGraph-based multi-agent pipeline that takes a company name and produces a structured research briefing, pulling from Tavily search, synthesizing with Gemini, and doing final editing with GPT-5.1. It ships as a full app: FastAPI backend, React/Vite frontend with streaming progress, and PDF export. Aimed at people who want a hackable reference implementation of a multi-agent research pipeline, not a hosted product.

The pipeline is a legible sequence of single-purpose nodes (analyzers → collector → curator → briefing → editor), so you can read backend/nodes/ and understand the flow without tracing a tangle of agent handoffs. It deliberately splits LLM work by task instead of routing everything through one model — Gemini for briefing synthesis, OpenAI for research and final editing — which is a more defensible architecture than the usual single-model-does-everything approach. Progress streams over SSE to the UI, which matters for a job that chains several LLM calls and can run for a while. Tavily keys are per-session with a backend fallback, so you can run this as a public demo without every visitor burning your own quota.

There's no test directory anywhere in the repo — for a pipeline stitching together three LLM providers and a search API, there's no way to verify a change didn't break a node without running it live against paid APIs. No CI beyond dependabot, so nothing gates a PR on lint, types, or even an import check. Running it locally needs Gemini, OpenAI, and (optionally-but-really) Tavily keys before you see anything work, which is a real cost and setup barrier just to try it out. MongoDB persistence is optional and bolted on; by default job state and finished reports live in memory, so a backend restart mid-run or right after completion just loses the report.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →