Skip to content
← Back to work
Case Study / Sift

Sift

A news app with AI summaries and side-by-side coverage comparisons. Readers can open the original reporting, read background explainers and term definitions, and explore sourced reference pages about people, organizations, and legislation mentioned in stories.

10 categories · curated outlet registryTopic search + multi-source compareReference pages · explainers · term definitionsFastAPI + LangGraph + Anthropic
RoleProduct design and frontend/backend development
Year2024–2026
StackNext.js · FastAPI · LangGraph · Anthropic · Neon Postgres + pgvector
DeliveryLive web application

From summaries to supporting context

I started with a categorized news feed and comparison tools. I then added an introductory primer, inline glossary entries and linked reference pages to make background information available alongside articles.

Reading and comparing

The feed organizes stories into ten categories. Readers can open source reporting, save bookmarks, search topics and compare coverage from multiple outlets. Topic search retrieves stored articles through a vector index and can supplement sparse results with AI-assisted web search. Results stream as they become available.

Guests can browse the feed, search topics and inspect a dated saved comparison. Running a new comparison requires sign-in. The guest example is stored output, not a fresh query; when its source availability was not recorded, the app hides its summary and marks claim agreement as unverified.

Search can return older reporting. The web-search fallback does not establish publisher dates; those results show Date unavailable, including cached fallback records whose older timestamps came from search time. Missing or invalid dates also remain unavailable, and future dates are identified explicitly.

Reference pages bring together available information about matched politicians, organizations, bills and news outlets. Not every article entity has a page, and fields and citations vary. The curated outlet registry also does not establish which outlets are actively ingesting at a given time.

Sources include public records and named external rating providers. Outlet ratings are attributed to their providers rather than presented as Sift's own assessments. Source links help readers check claims, but their presence does not independently verify generated explanations.

Sift news feed with a grouped Top Stories item, links to original articles and attributed outlet ratings.

Sift’s news feed, showing grouped coverage, links to original reporting and attributed outlet ratings. Captured October 24, 2026.

View full-size screenshot ↗

Background and live processing

The background pipeline extracts entities, links reference pages and prepares summaries and context before browsing. The frontend reads that prepared material from Postgres. Comparison and topic-search requests can require additional live AI work, so they stream results as processing proceeds.

The companion MCP server exposes article search and civic profiles to AI clients. Semantic search calls Voyage before querying the database. Its organization-field gate withholds selected values when required source metadata is missing; it does not read the linked page or verify that it supports the claim. Response times depend on these database and provider calls; a current end-to-end benchmark remains unmeasured.

Limits and next checks

Generated summaries, comparisons and entity links can be wrong or incomplete. Readers still need to check the generated interpretation against its source.

I would test whether readers can identify which source made a claim, find a relevant definition and distinguish a generated summary from original reporting. Broader claims about civic understanding or daily use would need a separate user study.