M4RKYU.SYSEdition 2027
Skip to content
LOCEN/Ontario · CA/▸work · politilensStandbyOK/--:--:--EST
M4M4RK_YUportfolio
  • BuildBuild
    BuildOverview
    • WorkSelected case studies and write-ups
    • GamesPlayable prototypes and game-dev logs
  • GalleryGallery
    GalleryOverview
    • PhotosPhoto collections and visual experiments
    • ShopPrints, posters, and one-off objects
  • WritingWriting
    WritingOverview
    • BlogLong-form devlogs and field notes
    • NotesShort observations, links, snippets
  • ResourcesResources
    ResourcesOverview
    • Tools38 in-browser developer utilities
    • LinksDaily-use dev and design bookmarks
  • AboutAbout
  • ContactContact
中文
← projects
Web app · 2026Ready

PolitiLens

A political news intelligence dashboard for comparing how outlets across the spectrum frame the same story.

Quick facts

Role
Solo product engineer: research model, data pipeline, dashboard architecture, information design, internationalization, and deployment.
Timeline
May 2026 · v1.1.0
Platforms
Web · Responsive dashboard
Live

On this page

  • >What it is
  • >What it looks like
  • >Built with
  • >Highlights
  • >Engineering
  • >Under the hood
  • >Outcome
  • >Roadmap & lessons
PolitiLens political compass dashboard comparing news outlets and story clusters
Fig. 01 — PolitiLens

Why I made this

I wanted a way to read political coverage without pretending a single score could tell me who was right. The useful question was narrower: what changes when the same event moves across different editorial lenses?

01

What it is

#

Problem

Political news is abundant but comparison is expensive. Readers have to find parallel coverage manually, infer editorial positioning, and separate factual overlap from framing differences.

Solution

PolitiLens aggregates coverage from dozens of international outlets, clusters articles about the same event, and presents divergence, sentiment, source health, political-compass placement, and AI-assisted framing analysis with its methodology and limitations kept visible.

02

What it looks like

#
  • Story explorerClustered stories expose source breadth, political lean coverage, sentiment, and divergence before the reader opens a comparison.
03

Built with

#

Product

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS

Data

  • TanStack Query
  • Zustand
  • RSS
  • GDELT
  • Congress.gov

Analysis

  • Vercel AI SDK
  • OpenRouter
  • AFINN
  • compromise

Visualization

  • Recharts
  • react-simple-maps
04

Highlights

#
  • Story clustering across politically diverse outlets
  • Two-axis political compass with regional filtering
  • Divergence and sentiment signals with confidence context
  • AI-assisted framing comparison and consensus extraction
  • Congress, fact-check, source-health, and world-coverage views
  • Complete English and Simplified Chinese interface
05

Engineering

#
  1. Process 01

    Measure divergence without calling it truth

    Context
    Political framing is multidimensional, and a single bias score can imply certainty the system does not possess.
    Approach
    Compute a documented heuristic from source breadth, spectrum coverage, and region, then show its method and confidence context.
    Outcome
    The signal supports comparison without judging factual correctness, but readers must still inspect the underlying coverage.
  2. Process 02

    Cluster deterministically before invoking AI

    Context
    Letting a model decide which articles belong together would make the core research unit difficult to reproduce or challenge.
    Approach
    Normalize, deduplicate, and similarity-cluster articles first; use AI only to describe framing and consensus inside an established cluster.
    Outcome
    The pipeline stays inspectable and cheaper, while deterministic clustering errors remain visible instead of being hidden by fluent summaries.
06

Under the hood

#

Architecture notes

  • RSS and API articles normalize into one model before URL deduplication and similarity clustering.
  • Divergence is a transparent heuristic based on source breadth, spectrum coverage, and region rather than a claim about truth.
  • Expensive news aggregation routes use bounded concurrency, caching, and stale-while-revalidate behavior.
  • AI analysis is downstream of deterministic clustering and presents framing differences without assigning factual authority.

Challenges

  • Keeping politically sensitive scores explainable enough that users can challenge the method.
  • Handling unreliable feeds and uneven source coverage without hiding degraded data.
  • Making a dense research interface scan quickly on both desktop and mobile.
07

Outcome

#
“
A deployed v1.1 research product that turns a noisy news stream into a transparent comparison workflow without presenting its heuristics as objective truth.
08

Roadmap & lessons

#

Lessons learned

  1. 01Trust comes from showing how a score was produced, not polishing away its uncertainty.
  2. 02Dense dashboards need progressive disclosure so methodology remains available without blocking the first scan.
  3. 03AI is more credible when it describes differences after deterministic grouping instead of deciding the groups itself.

Next steps

  1. 01Ground framing summaries in cited article excerpts
  2. 02Improve entity-aware story clustering
  3. 03Add timeline views for how coverage changes across a news cycle

Related work

Web app

Nimbus

A passwordless cloud workspace for organizing, sharing, beaming, and asking questions about your files.

Web app

M4rketView

A free, no-key crypto dashboard with live prices, resilient public-data fallbacks, local portfolios, alerts, and comparison tools.

PreviousBloomprintTurns yard inspiration into a buildable plan — what to buy, how much, what tools, in what order, and what can go wrong.
Back to all work
NextPurecreateA 3D apparel customizer that designs your shirt in real time and generates decals from a text prompt with DALL·E 3.
Back to archive
M4RKYUM4RKYUM4RKYUM4RKYUM4RKYUM4RKYUM4RKYUM4RKYU
Crafted since 2024
ZhenXiao Mark YuZhenXiao Mark Yu
get in touch

Saw something here?Tell me about it.

It's a portfolio, not a service · but I read every note — drop a line if anything here resonated, or just to say hi.

Start a conversation
open channel

say hi anytime · 2026

--:--:--ESTOntario, Canada
  • Email
  • GitHub
  • dev.to
  • LinkedIn
  • Twitter / X
  • Instagram
  • Facebook
  • YouTube
  • CodePen
  • Spotify
  • Snapchat

Newsletter

Get the occasional dispatch

Notes and logs from m4rkyu.com — short, dated, no noise. Unsubscribe anytime.

Work

Production builds, games, and visual archives.

  • Projects
  • Games
  • Archive
  • Logs

Resources

Daily-use tools and a personal link library.

  • Search
  • Latest
  • Tools
  • Links
  • Notes
  • Topics
  • Shop
RSSJSON feed

Studio

Background, contact, and channels for collaboration.

  • About
  • Contact
  • Changelog
  • Colophon
  • Resumepending

Socials

Find me on the usual feeds.

  • GitHub
  • dev.to
  • LinkedIn
  • Twitter / X
  • Instagram
  • Facebook
  • YouTube
  • CodePen
  • Spotify
  • Snapchat
  • Email
© 2026 ZhenXiao Mark Yumarkyu0615@gmail.com
  • Email
  • GitHub
  • dev.to
  • LinkedIn
  • Twitter / X
  • Instagram
  • Facebook
  • YouTube
  • CodePen
  • Spotify
  • Snapchat
PrivacyTermsBuilt with Next.js 16 · React 19 · Tailwind 4