SignalBrief

How I built the analyst agent.

I built SignalBrief because the most valuable work in data and AI roles is rarely just modelling. It is turning messy information into a fast, structured, defensible decision. This project shows that workflow end to end.

PlannerCreates focused research queries from a company or topic.
SearcherUses Tavily when configured, otherwise demo sources for instant previews.
RAG ReaderChunks documents and ranks evidence with a TF-IDF retrieval index.
ExtractorConverts evidence into Pydantic facts, metrics, risks, and opportunities.
WriterProduces the final executive briefing and exportable JSON.
1

Define the analyst problem

I started with a simple question: what would a junior analyst produce after three hours of desk research? The answer became the output schema: sources, metrics, facts, risks, opportunities, sentiment, and an executive summary.

2

Design the graph

I used LangGraph because the work is naturally stateful. Each node updates the same research state, which makes the workflow easy to debug, test, and extend with more specialist agents later.

3

Ground the output

The app builds a retrieval index over collected source chunks and attaches evidence snippets to the structured output. The goal is not just a nice answer, but a brief that can explain where each claim came from.

4

Make it recruiter friendly

I added a deterministic demo mode because portfolio projects should be runnable without API keys. If Tavily is configured, the same interface can switch into live web-search mode.

5

Package it like production

The repository includes tests, Ruff linting, typed Pydantic models, CI, Streamlit theming, a preview page, and deployment steps so the project reads as engineering work rather than a notebook experiment.

6

Design the product surface

I wanted the first screen to feel like a serious analyst terminal: compact, readable, evidence-led, and visually polished. The app therefore opens directly on the working briefing surface instead of hiding the product behind a marketing page.

7

Verify the real experience

I checked the app in a browser at desktop and mobile sizes, fixed raw HTML rendering, removed stale Streamlit width parameters, and kept the screenshots in the README so reviewers can see the product before they run it.

Implementation logic

The build separates orchestration, retrieval, extraction, and UI. That keeps the system easy to explain in interviews: the graph coordinates the work, the retrieval layer grounds the claims, and the Streamlit interface makes the output usable.

StateGraph -> planner_node(topic) -> searcher_node(queries) -> reader_node(source_chunks) -> extractor_node(facts, metrics) -> analyst_node(risks, opportunities) -> writer_node(executive_summary)
Runnable without keysDemo mode gives recruiters an instant product experience.
Live-search readyTavily activates when the environment contains an API key.
Typed outputsPydantic models keep analyst sections consistent and exportable.
Tested corepytest covers the briefing pipeline and retrieval relevance.

Why this project fits my CV

My CV already shows RAG, local AI, data pipelines, and automation. SignalBrief combines those themes into one high-signal product that mirrors consulting, hedge fund, and enterprise AI analyst work.

Where I would take it next

The next layer would add authenticated source connectors, richer embeddings, analyst review checkpoints, scheduled monitoring, and a human-in-the-loop approval step for investment or consulting use cases.