01 / Agent systems / Full-stack AI Oct 2025 - Feb 2026

Misinformation investigation prototype

Project Aegis

A claim enters once, becomes a traceable background job, passes through evidence and investigation stages, and returns as a structured record an operator can inspect instead of a one-shot chatbot answer.

2-stageEvidence then verdict
4Specialist interfaces
15 minRSS ingestion interval
SHA-256Claim deduplication
The engineering thesis

Make model output reviewable by designing the workflow around state, evidence, and failure.

Aegis is not presented as an autonomous truth oracle. It is an investigation workflow for claims, market anomalies, and fast-moving public narratives. The useful engineering problem is orchestration: accepting work, preventing duplicates, gathering context, constraining the verdict shape, recording status, and exposing failure to the UI.

The deployed product combines a static multi-page frontend, a Netlify Gemini gateway, a FastAPI service, background claim processing, RSS ingestion, and Supabase persistence.

Core pipelineClaim ingestion, research, investigation
Specialist logicScout and Trending agents
Review surfaceSearchable verdict dashboard
PersistenceClaims, evidence, threat records
System architecture

Five boundaries, one traceable claim

The architecture separates deterministic application work from probabilistic model work. That separation makes retries, fallbacks, and review states visible.

01
Ingest
Manual submit or RSS headline
→
02
Identify
Normalize and SHA-256 deduplicate
→
03
Research
Supporting and refuting context
→
04
Investigate
Verdict, confidence, severity
→
05
Review
Supabase record and dashboard
Application plane

FastAPI + BackgroundTasks

Submission returns immediately while the worker advances the claim through pending, in-progress, completed, or failed states.

Model plane

Gemini 2.5 Flash

Research and investigation are distinct prompts. JSON normalization, schema checks, provider fallback, and controlled errors sit around the model call.

Data plane

Supabase PostgreSQL

Claims and evidence survive page refreshes. The dashboard prefers persisted completed claims and explicitly tops up from the WELFake dataset.

Intelligence plane

Scout + Trending

Scout computes market-volatility evidence; Trending collects Google News RSS and optional external social data for specialist scans.

Runtime workflow

What happens after Submit

01

Normalize before spending model tokens

The ingestion agent trims and normalizes the claim, then derives a stable SHA-256 identifier. Existing claims return their current record instead of triggering duplicate inference.

normalized_claim → sha256 → existing record or new job
02

Move slow work behind a status contract

FastAPI schedules claim processing in the background. The record becomes the shared contract between the API, worker, database, and frontend.

pending → in_progress → completed | failed
03

Separate evidence collection from judgment

The Research Agent produces supporting and refuting material. The Investigator Agent receives that structured context and generates verdict, confidence, severity, and reasoning as a second step.

04

Persist the result and its failure mode

Successful jobs write evidence and final fields. Failed jobs keep a failed status and an internal error reason, avoiding a silent blank result.

05

Expose source state in the interface

The dashboard can show persisted claims, cached data, or dataset fallback. The interface tells the user when the hosted backend is waking rather than pretending every row is live.

Product surfaces

The system is visible, not buried in a notebook

Implementation map

Where the important work lives

SubsystemSourceResponsibilityEngineering detail
API orchestrationbackend/main.pyRoutes, state, dashboard data, startup loopsFastAPI, GZip, CORS, background jobs, explicit fallbacks
Claim workerbackend/workers/claim_worker.pyResearch-to-verdict lifecycleState transitions and persisted failure handling
Research / verdictbackend/agents/*Two-stage model workflowJSON extraction, schema normalization, model and key retry
Market intelligencescout_agent.pyPrice history and volatility evidenceRolling statistics, impact simulation, specialist output
News ingestionrss_ingestion.pyRecurring claim discoveryGoogle News RSS loop with claim-level deduplication
Edge gatewaynetlify/functions/gemini.jsBrowser-safe model accessEnvironment-only keys, model fallback, controlled response
Engineering judgment

What is real, and what still needs validation

Implemented

A coherent end-to-end investigation system

  • Deterministic claim identity and deduplication
  • Asynchronous evidence and verdict stages
  • Persistent status, evidence, and dashboard records
  • Market and news specialist workflows
  • Hosted frontend, API, and database integration
Prototype boundary

Not an externally validated truth engine

  • Model-generated evidence needs stronger source retrieval and citation checks
  • Dashboard fallback rows are demonstration data, not live detections
  • BrandShield and Personal Watch remain interface-level concepts
  • No benchmark currently establishes operational accuracy or response-time claims
Next engineering milestone

Ground every verdict in retrieved source documents, retain multiple evidence records per claim, and run a frozen benchmark with calibration, latency, and abstention metrics.