Projects / Live Company Check

Live Company Check In progress

An AI agent that checks a company's records, customer reviews and news while a reviewer watches live, answers its questions, pauses it and sends feedback. Charts are computed from the data, never written by the model.

Demo

A real run of the local Docker stack, sped up where it waits: start a check, answer the agent's question about three lookalike companies, pause and resume it mid-run, then read the findings, chart and report.

Overview

Live Company Check is an AI due-diligence assistant that works alongside a human reviewer. You give it a company name; it finds the company, reads its records, customer reviews and news, and produces findings and a report, asking you questions when it needs to and drawing charts as it goes.

It is built to be steered while it works. Every step streams live, you can pause it mid-sentence and resume it, answer its questions, and send feedback that redoes only the work it affects. A refresh or a crash replays the same view, because the view is a fold over an event log.

The demo below is a real run on the project's seeded data. I asked for "Brightline Logistics", which matches three lookalike companies, answered the agent's question, paused and resumed it, and read the result.

What it does

Screenshots

The agent asking which of three similar companies the reviewer means
Ambiguous name: the agent finds three lookalikes (one closed) and asks a single-choice question instead of guessing.
The check paused by the reviewer, with the case file and a rating chart already filled in
Paused by the reviewer mid-run. The case file and chart are already there, with live token and cost counters.
The completed check with a Proceed with caution verdict and two findings
The result: a verdict, graded findings and the evidence ids behind each claim.
The completed check showing the chart, findings and open questions for the reviewer
The chart the agent chose to draw, the findings and the open questions it leaves for the reviewer.

How it works

Interactive diagram · 9 steps
commands signal run_agent stream events LISTEN + SSE The UI is a reducer over the event log: it folds events into the view, so a refresh or reconnect replays exactly what you saw. It shows the live activity, questions, charts, findings and the report.Next.js UIfolds events into the view1 REST commands (create, answer, feedback, pause, resume, retry) carry a command id so a double click runs only once. A server-sent-events stream replays the event log and then follows it live.FastAPIcommands + SSE stream2 A Temporal workflow owns each check's state: running, waiting for an answer, paused, error or completed. It survives restarts, waits for hours at no cost, and cancels the agent's activity when you pause.Temporal workflowone per check3 The agent finds the company (asking you if the name is ambiguous), gathers its records, reviews and news through tools, analyses them and writes the report. It checkpoints after every node, so a retry or resume continues where it stopped.LangGraph agentinside a worker activity4 Gemini 3.5 Flash-Lite, with 3.1 Flash-Lite as a fallback, behind a per-model rate limiter and retries with backoff. The agent streams tokens from it, and you see the text appear live.Gemini3.5 Flash-Lite + fallback5 Postgres holds the company data, an append-only event log with a sequence number per check, command records for idempotency and the agent's checkpoints. What the reviewer sees is exactly this event log.PostgreSQLevents, checkpoints, data6
Pick a stepHover, focus or tap any shape to see what it does.
Temporal decides when the agent runs, LangGraph decides what it does, and Postgres stores what the reviewer sees. Dashed arrows are the event path back to the UI. Editable source (.excalidraw)
  1. You start a check in the Next.js UI. The FastAPI server records the command (with an id, so a double click runs once) and signals Temporal.
  2. A Temporal workflow owns the check's state and schedules the agent as an activity.
  3. The LangGraph agent finds the company, asking you if the name is ambiguous, gathers data through tools, analyses it and writes the report, streaming from Gemini.
  4. Every step becomes an event in Postgres, and the agent checkpoints after each node so it can resume exactly where it stopped.
  5. Postgres notifies the API, which streams the events to the UI. Pause cancels the activity and saves the text, and resume continues from the checkpoint.

Install and try it

You need Docker and a Google AI Studio API key. Everything else (Postgres, Temporal, the API, the worker and the UI) runs in containers.

  1. Get the code and add your key

    Then set GOOGLE_API_KEY in .env.

    git clone https://github.com/BriskAM/live-company-check.git
    cd live-company-check
    cp .env.example .env
  2. Start the stack

    Open http://localhost:3000. The API is on port 8000 and the Temporal UI on 8233. The seeded companies, including the lookalike names, load automatically.

    docker compose --profile app up -d --build
  3. Try it

    Type this into the box (three lookalike companies, so the agent will ask which one), or try Pinecrest Home Services.

    Brightline Logistics
  4. Check it is healthy

    It should return {"database":"ok","temporal":"ok"}.

    curl localhost:8000/health

Notes

All projects · Home