🌌 Headlines tell you what. FogWeave shows you why.

🌫️ Imagine this

You put on your Quest. The room disappears. You are sitting under a deep night sky, and a slow gray fog drifts around you. Inside it, softly glowing, float stars: each one is a real news story from today.

You reach out and pinch one: "Rocket launch to Mars delayed."

The star opens, and the story grows around you: the space agency behind it, the moon it was going to study, the claims the reports make, what it might affect, and, a little further out, an older mission that failed years ago. That last link comes with a quote from each story, so you can see why they belong together.

In two minutes you don't just know what happened. You understand why it matters.

That is FogWeave.

💡 Inspiration

Why do we read the news at all? To understand what is really happening in the world: in our country, in science, in the decisions that shape our lives.

But most news today doesn't help with that. We get a flood of short headlines, half-stories, opinions dressed up as facts, and sometimes news that is simply false. We scroll for an hour and still can't answer the simple questions:

  • Why did this happen?
  • What led to it, and who is involved?
  • Is this a fact, or someone's guess?
  • Has this happened before?

A news feed answers what. It almost never answers why, and it never shows how one story connects to another.

I wanted the opposite: a calm place where one story opens up into everything it connects to, honestly. Facts should look different from inferences, and inferences different from speculation. Every link should carry the words of a real source, so you never have to just trust a headline.

Why VR? Because knowledge is not a list; it is a web. On a flat screen, a web of people, places, causes and past events collapses into a feed. Around you, it becomes something you can reach into. And because understanding needs calm, not noise, FogWeave lives in a quiet fog instead of an endless scroll.

🧩 One question the news can't answer. Try it yourself.

❓ "I read the headline, but why did this happen, and how do I know it's true?"

This is the real problem with the news today. A headline tells you what happened. It doesn't tell you the causes, the background or what happened before, and it doesn't show you any proof. So facts, guesses and opinions all look the same, and we end up scrolling without understanding.

How FogWeave answers it:

  • The story grows into a web with its background, earlier events and possible causes, including related news from years ago.
  • Every link is labelled 🟢 Reported, 🟡 Inferred or 🟣 Speculative, so a guess never looks like a fact.
  • Every news-to-news link shows a short quote from each story, word for word from the source, and code checks that each quote is real before you see it.

👉 Try it (30 seconds): open FogWeave, pinch any star, then pinch one of its links marked background or precedent. Read its label and the two quotes. You will see why the stories are connected and how sure that connection is.

✨ What it does

FogWeave is a hands-first, seated WebXR app for Meta Quest. No controllers, nothing to install: just open a link in the Quest browser.

⭐ Today's news, as stars

Every star is a real news item from open sources, with its real outlet and date. The feed is curated but varied, not just the loudest stories, and a new star drifts in every 20 to 40 seconds. More like this / Less like this tunes it.

🕸️ Touch a star, and the story grows into a web

A card shows the headline, source, date and a plain-words summary. Around it, the web unfolds:

  • who and what the story involves: people in public roles, places, organisations, technologies;
  • its key claims and what it may affect;
  • other news it connects to, from this week and from years ago.

The five closest links come first. The rest wait in groups (+3 People, +4 Places, +6 Claims), one pinch away, so the web never becomes a mess.

🏷️ Every link says how it relates, and how sure we are

News-to-news links are typed: same event, follow-up, background, precedent, similar pattern, corroborates, contradicts, shares a name, possible consequence. Every link also wears an honest label:

  • 🟢 Reported: a source says it.
  • 🟡 Inferred: reasoned from the sources.
  • 🟣 Speculative: plausible, but not grounded.

🔎 Every node explains itself

Pinch a place, an agency or a topic, and its card tells you:

  • how it relates to the story;
  • what it is, from the Wikipedia lead, cited;
  • key facts from Wikidata, cited.

If open sources have nothing reliable, the card says not enough information instead of guessing.

🌫️ Ask the fog

Pinch the empty fog and ask about any topic. You get a short, cited answer, and news about it drifts in as new stars right in front of you, including older stories from the archive.

💎 Seal what matters, and connect the dots

Your Library keeps what you sealed, on your device. Connect the dots finds patterns across what you kept: a shared name, the same actor appearing again, a recurring kind of event, a sequence in time, a contrast. Each pattern is backed by a quote from each item, or it isn't shown.

You can export an Evidence Pack (JSON-LD / PROV-O and JSONL, validated against SHACL shapes). And when you close a story, its web leaves the fog and the star drifts again.

🌟 What makes it different

  1. It shows why, not just what. Causes, background, precedents and possible effects are first-class. Each is labelled, so a reasoned guess never looks like a fact.
  2. It connects news across time. A story about a Mars mission links to the earlier mission that failed. That context is exactly what headlines leave out.
  3. Honesty is in the code, not just the prompt. The AI proposes; code decides.
  4. Calm by design. No infinite feed, no alerts, no outrage bait. Just a slow fog and drifting stars.
  5. Truly hands-first and seated. Every action is a pinch within arm's reach, and cards sit inside a comfortable field of view.
  6. Free and open sources only. No paywall bypass, no logins, no leaked data.

🛠️ How I built it

Client: IWSDK (WebXR, three.js, ECS) with hand tracking

  • Everything in the scene is procedural: no image assets, just a generated night sky and canvas textures.
  • 72 drifting fog banks plus a low fog floor, which thin near your face so text stays readable.
  • Instanced stars with per-star clocks that pause while you point at one, so your hand can settle on it.
  • Canvas-rendered cards whose buttons fire on pinch release, which makes them reliable.
  • A force layout arranges the web, and a quality governor protects the frame rate.

Backend: FastAPI (Python) on Render

  • Streams the web to the headset as it grows, using server-sent events.

AI with narrow, checked roles

  • Open models served by Groq, always asked for strict JSON that is validated with Pydantic.
  • They extract claims and entities, judge how two stories relate, map possible effects, find patterns and write short summaries.
  • A quota governor and a disk cache keep usage inside the free tier, and every model call has a code-only fallback.

The model proposes, code decides

  • Every quote must appear verbatim in its source.
  • Dates must fit the relation: background comes earlier, a follow-up comes later.
  • A cause is never more than Inferred, and a possible consequence is always Speculative.
  • If the model says two stories are unrelated, no link is made.

Knowledge graph

  • An ontology shared by client and server defines the node types, the relation types, and which labels each relation may carry. Every edge is validated against it before it reaches the scene.
  • Entities are linked to Wikidata conservatively: no link is better than a wrong one.
  • Paths, importance (PageRank) and story clustering run in the browser.

Sources (open and legal only): Wikipedia Current events (with its archive back to 2005), Wikidata, GDELT, Hacker News, arXiv and Zenodo. Fetched web text is treated as untrusted data, never as instructions.

AI pair-programmer: I built FogWeave with Claude (Anthropic) as a coding assistant for design, code, tests and the evaluation harness.

📊 How I know it works

I measured it instead of hoping:

  • Relation precision: 0.93 on 43 related-news pairs, 31 of them with older news. The labels were made by an AI assistant with a written reason for each pair, not by an independent human, and every label is in the repository. The three wrong links led to two new code rules.
  • Dossier facts: 61/61 key facts match their Wikidata source, and 14/14 overviews appear verbatim in the Wikipedia lead.
  • Claims: 99/99 have a quoted, linked source, and every quote was found verbatim again on a re-check.
  • Speed (in the emulator): a star's card opens in about 0.7 s, and the first node of its web appears about 0.35 s later.
  • 87 server tests and 10 end-to-end suites drive the app with emulated hands.

🧗 Challenges

  • Keeping AI honest. Models invent quotes, add "…" inside them and garble ids. Everything they produce is checked by code. Links that fail are dropped and counted, never shown.
  • Linking names to the right thing. "Phobos" in a space story is Mars's moon, but Wikidata's first match is a comic-book character. Linking is strict: types must fit, and fiction is never linked.
  • Weak links. Early on, two stories were linked just because both mentioned "Russia". Now a big place alone never links two stories; they need a specific shared person, organisation or event.
  • Pinching small things with hands. Stars pause while you point at them, buttons have generous hit areas, and a press fires on release.
  • Free-tier limits. The backend runs on 512 MB and free model quotas, so the hosted version uses lighter methods.
  • Beauty without assets. The sky, the fog and the stars are all generated in code, and the fog still had to stay readable around the cards.

📚 What I learned

  • Trust comes from showing your work: a quote, a source, a label. Not from sounding confident.
  • AI is a great proposer and a poor judge. The reliable design is: AI proposes, code and people verify.
  • A web you can reach into invites curiosity in a way a feed never does.
  • Measuring precision on real data found bugs that no amount of testing by eye would have found.

🚀 What's next: from understanding the news to understanding anything

Today, FogWeave helps you understand the news. But the same idea works for any field of knowledge: medicine, climate, law, history, a new technology. Any topic can become a web you explore, where every link shows its source and how sure it is.

The bigger vision is a loop where people and AI make each other smarter:

  1. 🤖 AI prepares. For any topic or piece of research, AI gathers the sources and builds a short, cited summary and its web of links.
  2. 👀 People read and judge. Readers see the summary with its evidence and mark it: accurate, misleading, missing something, or worth keeping.
  3. ✅ Good knowledge is kept. Summaries that people have checked become trusted, sourced knowledge, with the evidence and the human judgement attached.
  4. 🧠 AI learns from it. That verified knowledge is exactly the data AI needs: grounded in sources and checked by people, instead of scraped noise. So the next answers get better.

People learn by exploring and judging. AI learns from what people have verified. And because every link keeps its source and every judgement stays visible, nothing becomes a black box.

Next steps on that road:

  • A test pass on Meta Quest 3 and 3S for comfort and frame rate (target: 72 fps or more).
  • Human review of links: the first step of the loop above.
  • Timelines: watch a story develop day by day.
  • More languages and regional sources, still open and legal only.
  • Shared fog: explore a story together with a friend in the same space.

Launch: the app is already public and free at anjalisingh1818.github.io/fogweave and will stay live through judging. A polished, Quest-tested release is planned for January 2027.

🥽 Try it

  1. Open anjalisingh1818.github.io/fogweave in the Meta Quest browser and press Enter XR.
  2. Hands only, seated, free. Pinch a star and watch its story grow.
  3. Pinch the empty fog to ask about anything.

The Demo scene works anytime, even if live news is unreachable: open it from Menu → Demo scene, or go to anjalisingh1818.github.io/fogweave/?demo. It is always labelled as a recorded snapshot and never passed off as live.

Source code: github.com/anjalisingh1818/fogweave

Less scrolling. More understanding. 🌌

Built With

Share this project:

Updates

Submission history