← portfolio

AI Research Agent

An AI that argues with itself: building a multi-perspective research system

A fact-checking agent that automatically researches any claim from all sides simultaneously — real browser, up to 50 sources, explicit bias classification. Built to separate verified facts from rhetoric, not confirm a single perspective.

4 min read AI Agents · Browser Automation · Research · NLP

The problem with most fact-checking isn’t that it’s dishonest. It’s that it’s incomplete.

Even well-intentioned fact-checkers tend to pick a primary authoritative source, check whether the claim matches it, and call the matter settled. For clear empirical questions — a number, a date, a recorded event — this works. For contested claims — policy decisions, geopolitical events, disputed studies — the right answer often isn’t a verdict. It’s an understanding of why serious people on different sides believe what they believe, and what the verifiable evidence actually shows for each.

I built a research agent designed to handle the messier kind of question.

The gap that standard research tools miss

Existing AI research tools share a common failure mode: they retrieve evidence that supports the most common framing of a question. If the framing is biased, the evidence base is biased. The output looks thorough — lots of citations, confident language — but it leaves out the strongest counter-evidence entirely.

For a news organisation fact-checking a politician’s claim, this is embarrassing. For a policy team evaluating a controversial proposal, it’s dangerous. For a legal team conducting due diligence on a disputed matter, it’s a liability.

The system I built starts from a different premise: any significant claim has at least two serious perspectives, and a credible research process has to engage with all of them.

How the agent works

Rather than searching for “evidence about X,” the agent first asks: what are the main perspectives on X? An LLM identifies the two to four most coherent viewpoints on the claim — not straw men, but the actual positions held by real experts, organisations, or communities.

Then it runs a separate research branch for each perspective.

Step 1 — Claim decomposition. The original claim is broken into verifiable sub-claims. “Policy X reduced unemployment” becomes: what happened to unemployment rates? what caused the change? what do the underlying numbers show? Each sub-claim generates its own search queries, including explicitly sceptical counter-queries.

Step 2 — Perspective identification. For each major perspective identified, the system generates the search queries that perspective would actually use. This is the key mechanism: instead of searching for “neutral facts about X,” it searches for “what Perspective A says about X” and “what Perspective B says about X” separately — and weights searches toward authoritative international sources (UN, ICC, Human Rights Watch, Amnesty International, peer-reviewed publications).

Step 3 — Browser-based research. A real Chromium browser — not a basic web scraping API — opens and navigates search results for every query. It extracts and stores content from up to 50 sources across all perspectives. The real browser matters: it handles JavaScript-rendered pages, cookie consent flows, and content structures that a lightweight scraper would miss.

Step 4 — Bias classification. For each source found, the system classifies its political or institutional alignment and which perspective it supports. This becomes part of the evidence record — not to dismiss biased sources, but to contextualise them accurately.

Step 5 — Rhetoric extraction. For each perspective, the system explicitly asks: what narrative does this side use? What are their key claims, emotional appeals, and framing techniques? This separates verifiable facts from rhetoric — a distinction most research processes never make explicit.

Step 6 — Synthesis. Sub-claim evaluations are aggregated into a final report: an overall verdict (true / false / debatable / unverifiable), a neutral summary, per-perspective evidence summaries, and a bias landscape assessment. The report downloads as a structured PDF.

What this looks like in practice

Media and journalism teams: Verify a viral claim before publishing. Get a structured document showing exactly which sources say what — including sources you might not have found with a standard search. The output is also documentation of your research process, which matters for editorial accountability.

Policy and government teams: Understand a contested proposal in full. “What do the serious critics of this actually say, and what evidence do they cite?” is a question that most briefing documents don’t answer honestly. This system answers it systematically, from primary sources.

Legal and compliance: Research the factual landscape around a disputed claim. Track which regulatory bodies, expert voices, and international organisations have weighed in on each side. Every source is cited, classified, and traceable.

Corporate communications and public affairs: Monitor claims being made about your industry, product, or company. Understand how those claims are framed across different communities before you need to respond to them — not after.

What it can and can’t do

This system is not a replacement for human judgement on genuinely contested questions, and it doesn’t produce false certainty. What it does reliably:

  • Finds evidence that manual research in the same timeframe would miss
  • Surfaces the strongest arguments on each side, not just the most common ones
  • Explicitly flags source bias so you can weight evidence accordingly
  • Separates empirically verifiable claims from opinion and framing

For a team that currently does this research manually — which most do — the time difference is significant. Research that takes a team days to compile gets done in under an hour. The coverage is broader. The bias is explicit rather than buried in which sources were chosen.

The challenge with research has never been that the evidence doesn’t exist. It’s that gathering it systematically, across all perspectives, is too slow to be practical. That’s the specific problem this was built to solve.


Want something like this built for your business?

Every system on this page was built to solve a specific operational problem. If you have a similar one, let's talk about what a solution looks like for you.

Get in touch