I mapped U.S. politicians' alliances and feuds from the news, then added co-sponsorship, FEC, lobbying and roll-call data. None of the money or voting measures predicted who feuds with whom.
▲ 30 r/SocialEngineering+1 crossposts

I mapped U.S. politicians' alliances and feuds from the news, then added co-sponsorship, FEC, lobbying and roll-call data. None of the money or voting measures predicted who feuds with whom.

A few weeks ago I shared POLARIS here: an interactive graph of who in U.S. politics is allied with whom and who is feuding with whom, with a nightly pipeline that reads the political press and tracks how those ties shift. Two comments shaped what I built next:

  1. Could this show who actually influences federal decisions — staffers, donors, lobbying, roll-call votes?

  2. How far can you trust a graph built from biased, clickbait headlines?

Here's what changed, including what didn't work.

Live: https://world-politicians.vercel.app/ (no signup, works on mobile)

Source (MIT): https://github.com/showjihyun/world-politicians

---

What it is

- 101 figures, 266 hand-curated relationships (alliance, feud, bipartisan bridge, political family, mentorship), in 2D or 3D

- A nightly news layer. Articles from 17 outlets are classified by an LLM as ally-leaning, feud-leaning or neutral, and kept in a rolling one-year archive

- A relationship timeline. Pick any two people for month-by-month polarity. Trump × Musk shows the June 2025 blow-up and the January 2026 reconciliation

- An evidence panel on every edge, with direct article links or a plain "no linked source"

  1. Measured data, kept separate from editorial judgment

Co-sponsorship (119th Congress). I added 112 edges from GovInfo's bill-status bulk data, for pairs with 10 or more shared bills. They're drawn differently from the curated edges, because "these two are allies" is a judgment and "they

co-sponsored 78 bills" is a measurement.

- Raw counts mostly re-encode party. 84% of pairs above the threshold are same-party. The 11 cross-caucus pairs are the interesting part: Fitzpatrick × Gluesenkamp Perez (19 bills), Collins × Klobuchar (15), Lawler × Torres (12).

- Cross-party is judged by caucus, not party label. Counting Sanders and King as cross-party inflated the count from 11 to 19.

- Direction is kept. "Kim signs 15 of Warren's bills, Warren signs none of Kim's" is not the same relationship as "Padilla and Sanders, 15 each".

FEC money (2026 cycle), shown on the profile. One FEC file mixes three things that have to be separated:

- direct contributions: $32.0M

- independent expenditures supporting a candidate: $14.4M

- independent expenditures opposing a candidate: $18.1M

Merge them and the $10.1M spent attacking Thomas Massie reads as his funding. On-screen caveat: named PAC money is only about 6% of receipts.

Lobbying revolving door. From the House Clerk's raw LD-1 filings (2022–2026): 295 former staffers of 61 figures are now registered lobbyists. Matching uses full names only, since Congress has had 33 members named Harris.

Party-line defection. From Voteview: the share of party-divided votes (1,279 in the 119th) on which a member broke with their own party's majority. Raw agreement scores just encode party (Cruz × Hawley at 98.6% means "both Republican"); defection holds party constant.

  1. The negative result

I tried six ways to turn these person-level facts into relationship signals:

┌────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────┐

│ Test │ Result │

├────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤

│ Shared donors × curated ally/feud │ 27% vs 28% │

├────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤

│ Shared donors × heavy co-sponsorship │ 19% vs 17% │

├────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤

│ PAC share × bipartisan edges │ 10.3% vs 8.3% │

├────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤

│ NOMINATE deviation × intra-party feud │ p = 0.81 │

├────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤

│ Party defection × intra-party feud │ p = 0.99 │

├────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤

│ Party defection × outside money spent against them │ p = 0.058, no dose-response, confounded by race competitiveness │

└────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────┘

Collins and Fitzpatrick are among the most frequent defectors, and neither has a single intra-party feud. Quiet, steady defection doesn't produce public fights. The feuds in this graph are loud and personal, and they look orthogonal to the voting dimension. So money, lobbying and defection are shown as facts about a person, each with a note on what the number does not mean.

  1. Handling media bias

That critique was fair, and a better prompt can't fix it on its own. Following the literature (D'Alessio & Allen's meta-analysis, Groseclose & Milyo, Gentzkow & Shapiro, Soroka on negativity bias, Vallone et al. on the hostile media effect), I split the problem into three layers:

┌─────────────────────────────────┬─────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐

│ Layer │ What it looked like here (when studied) │ What I did │

├─────────────────────────────────┼─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤

│ Gatekeeping (what becomes news) │ Feuds were 2/3 of ally/feud headlines │ Changed how votes are counted │

├─────────────────────────────────┼─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤

│ Visibility (who gets covered) │ Trump appeared in 71% of signals │ Shown on screen, not "corrected" — it's a collection problem │

├─────────────────────────────────┼─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤

│ Tone (how it's told) │ The LLM's polarity call │ Scored against labels; tested for outlet cues │

└─────────────────────────────────┴─────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘

What changed:

- One vote per pair per day, not per article. Five outlets running one story used to cast five votes. A day now casts one vote, weighted 1 + ln(outlets), and only if two-thirds of that day's coverage agrees. Decisive votes fell from 244 to 175. I tried clustering stories by headline similarity first and dropped it, because it fails both ways: two headlines about the same Walz story scored a Jaccard of only 0.10.

- A month needs a 2:1 margin to flip. Previously the month's first non-neutral headline set its colour, so one feud headline could beat six later ally headlines. Real reversals (Trump × Musk) get covered by many outlets over many days and clear the bar; a single clickbait headline doesn't. Jeffries × Trump in August 2026 had 5 feud signals to 2 ally and had been showing "ally".

- Disagreement is shown, not resolved. When Fox frames Graham × Trump as an alliance and CBS frames it as a feud, the month is hatched rather than one side being picked. Given the hostile media effect, that seemed more honest than adjudicating.

- The source mix is public. The top five outlets carry 63% of the archive, and AP and Reuters together are under 5%.

Tested and dropped: I swapped "Fox News" and "NPR" on the same headlines, with the outlet suffix stripped so it couldn't leak. 0 of 14 polarity calls changed, while plain re-runs of identical input wobbled by up to 13%. So I dropped the planned "outlet-blind" second pass, which would have doubled the cost.

Not done yet, on purpose:

- Wire-service baseline calibration (in the spirit of Groseclose & Milyo). The wires supply only about a dozen articles so far.

- Discounting feud headlines by their measured false-positive rate (neutral → feud is about 30%). Most of the labels are model-seeded, so this would be the model grading itself.

- Signed-triad balance checks. 37 of the 39 triangles the news produces pass through Trump.

How accurate is the classifier? On 118 stratified articles it gets 84.7% on polarity and 87.3% on picking the right pair. Most errors are a neutral article read as a feud; only one was a true ally/feud reversal. Caveat: only 20 of those labels are human-checked so far, so treat this as a floor to beat, not a validated score.

  1. Still open

- Staffer movement between offices

- Individual donors (a huge separate file, where only gifts over $200 are itemised)

- Senate-side lobbying data, which currently blocks automated access

---

Feedback I'd most value:

- Edges you think are wrong (with a source)

- Better ways to validate polarity than headline classification

- Is there a relationship-level measure from voting or co-sponsorship that isn't just party in disguise?

I'd also welcome help hand-labelling the evaluation set. Methodology notes are in the repo under docs/roadmap.md and docs/research/.

u/Impressive-Judge-357 — 11 days ago
▲ 2 r/northkorea+1 crossposts

Open-source relational map of South Korea's 22nd National Assembly — automated extraction of inter-legislator conflict from news text. Looking for methodological critique.

https://preview.redd.it/upjurbas9xmh1.png?width=3432&format=png&auto=webp&s=259e9fcd17d7850b4fc19ba5a28c3e2dd63a2f45

Hi Guys. Re Hi~

I've been building a public dashboard that treats the 296 sitting members of South Korea's National Assembly as a graph, and infers edges between them from Korean-language news coverage rather than from roll-call votes. It's live and open source, and I'd genuinely like this sub to poke holes in the method.

Live board: https://korea-politician.vercel.app

Source: https://github.com/showjihyun/KoreaPolitician

What the graph contains right now — 296 Member nodes, 8 Party nodes, 296 affiliation edges, 39 directed sentiment edges (36 conflict, 3 alliance), 368 co-mention edges.

How edges are derived — A nightly job pulls articles from the politics, economy, and society sections of a major Korean news portal and resolves which legislators are named. Name resolution took the most work: Korean given names are short and frequently appear inside unrelated words, so I use longest-match masking plus a boundary check rather than substring matching.

Two different time bases, deliberately — the design decision I'd most like feedback on:

- Relations are cumulative. A conflict, once observed, is never dropped.

- Attention is a 7-day rolling window. News mentions plus log-normalized YouTube views.

Mixing a cumulative measure and a rolling one in one view risks misreading, so each panel carries its window as a visible label and a tooltip. I'm not sure that's sufficient.

Attention scoring — YouTube views are log-compressed (1k → 0, 10M → 100) before being added to the news component, and an article naming n legislators contributes 1/√n to each, so roundup pieces don't inflate everyone equally.

Where I know it's weak — the dataset is new (collection started 2026-08-30, so "cumulative" is days, not years); no inter-coder reliability on the sentiment edges; one news portal; coverage ≠ influence; conflict outnumbers alliance 36:3, which may be real or may be an extraction artifact.

What I'd like input on —
(1) Is media co-occurrence defensible as a complement to vote-based measures like W-NOMINATE, or is coverage bias fatal?
(2) What's the minimum validation before sentiment edges count as data — a hand-coded n=200 with reported kappa?
(3) Has anyone handled the cumulative-vs-rolling presentation problem well?

reddit.com
u/Impressive-Judge-357 — 1 month ago
▲ 11 r/SocialEngineering+2 crossposts

Mapping 266 relationships between 101 U.S. political figures produces a hub-and-spoke network, not two blocs. What does that imply for what happens after the hub is gone?

I built a relationship map of U.S. politics — 101 figures, 266 relationships curated from

public reporting, typed as alliance / feud / bipartisan bridge / political family / mentorship.

Interactive version here: https://world-politicians.vercel.app/ (free, open source, no signup)

The structural result is what I want to ask about rather than assert.

Conventional framing treats American politics as two cohesive blocs with a shrinking bridge

between them. What the graph actually shows is closer to a hub-and-spoke topology: one node

carrying dozens of direct ties, with unusually few edges between the spokes themselves. Cabinet

members, House leadership, and Senate loyalists connect through a single person far more than

they connect to each other.

Network topology says those two shapes fail very differently. A two-bloc network that loses a

leader gets a succession fight and continues. A hub-and-spoke network that loses its hub

doesn't split cleanly — it fragments, because the spokes were never connected to one another

in the first place.

Some numbers from the dataset: 113 alliances, 127 feuds, and only 19 cross-party bridges. A

large share of the feuds are intra-party.

Questions I'd genuinely like pushback on:

  1. Is the hub-and-spoke reading actually right, or is it an artifact of press coverage

    concentrating on one figure — meaning I've mapped media attention rather than political

    structure? I think this is the strongest objection to my own work.

  2. If the topology is real, what does the post-hub period look like — realignment, or

    fragmentation into factions that were never linked to begin with?

  3. Has any party organization historically survived losing a hub in this configuration, or

    does the structure itself predict the outcome?

Full disclosure on method: the edges are my editorial judgment from mainstream reporting, not a

neutral record. The dataset and code are public (MIT) specifically so the reasoning can be

audited: https://github.com/showjihyun/world-politicians

reddit.com
u/Impressive-Judge-357 — 2 months ago

I built a self-hostable social world where 100 AI characters live their own lives—even when nobody is watching(Update for ENG/CHN)

I've always wondered why every AI chat app feels the same.

You open it, ask a question, close the tab... and the entire world freezes until you come back.

I wanted the opposite.

So I started building Living Feed.

Instead of an assistant waiting for prompts, it's a self-hostable social world where around 100 AI characters continuously live their own lives.

260725 : Support English/Chinese Language

They:

- write posts

- reply to each other

- build friendships

- hold grudges

- remember past events

- send you DMs first

- continue living even if nobody logs in

You're not the protagonist.

You're simply another person entering an already living world.

Every like, comment or DM slightly changes relationships, and those relationship changes create new stories later. Characters remember what happened instead of resetting every conversation.

Technically it's built around:

- Event Sourcing

- CQRS

- PostgreSQL as the source of truth

- NATS JetStream

- FastAPI

- Next.js

- Docker Compose

- Local Ollama or hosted LLMs

A simulation engine that continuously advances the world instead of generating isolated chat.

The project is MIT licensed and fully open source.

I'd love feedback from the self-hosted community.

Especially:

Would you actually host something like this?

u/Impressive-Judge-357 — 3 months ago
▲ 17 r/SocialEngineering+1 crossposts

I built a self-hostable social world where 100 AI characters live their own lives—even when nobody is watching(Update for ENG/CHN)

I've always wondered why every AI chat app feels the same.

You open it, ask a question, close the tab... and the entire world freezes until you come back.

I wanted the opposite.

So I started building Living Feed.

Instead of an assistant waiting for prompts, it's a self-hostable social world where around 100 AI characters continuously live their own lives.

260725 : Support English/Chinese Language

They:

- write posts

- reply to each other

- build friendships

- hold grudges

- remember past events

- send you DMs first

- continue living even if nobody logs in

You're not the protagonist.

You're simply another person entering an already living world.

Every like, comment or DM slightly changes relationships, and those relationship changes create new stories later. Characters remember what happened instead of resetting every conversation.

Technically it's built around:

- Event Sourcing

- CQRS

- PostgreSQL as the source of truth

- NATS JetStream

- FastAPI

- Next.js

- Docker Compose

- Local Ollama or hosted LLMs

A simulation engine that continuously advances the world instead of generating isolated chat.

The project is MIT licensed and fully open source.

I'd love feedback from the self-hosted community.

Especially:

Would you actually host something like this?

reddit.com
u/Impressive-Judge-357 — 3 months ago

I built a self-hostable social world where 100 AI characters live their own lives—even when nobody is watching

I've always wondered why every AI chat app feels the same.

You open it, ask a question, close the tab... and the entire world freezes until you come back.

I wanted the opposite.

So I started building Living Feed.

Instead of an assistant waiting for prompts, it's a self-hostable social world where around 100 AI characters continuously live their own lives.

They:

- write posts

- reply to each other

- build friendships

- hold grudges

- remember past events

- send you DMs first

- continue living even if nobody logs in

You're not the protagonist.

You're simply another person entering an already living world.

Every like, comment or DM slightly changes relationships, and those relationship changes create new stories later. Characters remember what happened instead of resetting every conversation.

Technically it's built around:

- Event Sourcing

- CQRS

- PostgreSQL as the source of truth

- NATS JetStream

- FastAPI

- Next.js

- Docker Compose

- Local Ollama or hosted LLMs

A simulation engine that continuously advances the world instead of generating isolated chat.

The project is MIT licensed and fully open source.

I'd love feedback from the self-hosted community.

Especially:

Would you actually host something like this?

reddit.com
u/Impressive-Judge-357 — 3 months ago
▲ 3 r/Chatbots+1 crossposts

I built a self-hostable social world where 100 AI characters live their own lives—even when nobody is watching

I've always wondered why every AI chat app feels the same.

You open it, ask a question, close the tab... and the entire world freezes until you come back.

I wanted the opposite.

So I started building Living Feed.

Instead of an assistant waiting for prompts, it's a self-hostable social world where around 100 AI characters continuously live their own lives.

They:

  • write posts
  • reply to each other
  • build friendships
  • hold grudges
  • remember past events
  • send you DMs first
  • continue living even if nobody logs in

You're not the protagonist.

You're simply another person entering an already living world.

Every like, comment or DM slightly changes relationships, and those relationship changes create new stories later. Characters remember what happened instead of resetting every conversation.

Technically it's built around:

  • Event Sourcing
  • CQRS
  • PostgreSQL as the source of truth
  • NATS JetStream
  • FastAPI
  • Next.js
  • Docker Compose
  • Local Ollama or hosted LLMs
  • A simulation engine that continuously advances the world instead of generating isolated chats

The project is MIT licensed and fully open source.

GitHub:

https://github.com/showjihyun/livingfeed

I'd love feedback from the self-hosted community.

Especially:

  • Would you actually host something like this?
  • What would make it useful in a homelab?
  • What would stop you from running it?

I'm much more interested in criticism than stars.

Why I built it

Because I wanted AI to feel less like ChatGPT...

...and more like walking into a town where everyone already has a life.

u/Impressive-Judge-357 — 3 months ago