Inspiration

As a citizen of a community of people that work so hard to improve to lives of everyone else, I feel that it is a personal duty to uphold what it righteous and just. However, me and many people are often simply unaware of the social and political issues that leave many discriminated against and exploited. Thus I built EthicAtlas as a way for people to not only understand the issues in society but also the philosophy behind them.

This is because by learning how to think like Plato and Aristotle, we can better protect ourselves from facing oppression and get a better grasp on the world as it is.

What it does

EthicAtlas is an interactive 3D map of ethical dilemmas, philosophical ideas, thinkers all tracing back and connected to real-world issues. You can start anywhere you'd like an see how ideas relate and compare different ways of approaching the same ethical dilemmas.

If something catches your attention, save it, annotate it, write about it, or share it. You can save discoveries, build collections, and map out your own world of philosophy.

You can also browse real-life issues in realtime and compare the philosophies and ideologies of the greats to our modern-day problems.

How I built it

EthicAtlas is a Next.js, React, and TypeScript app, with Three.js rendering the map you move through.

The knowledge that the 3d map is based on was extracted via a python crawler that parses articles, wikipedia pages, and open-sourced information and images. This crawler is built on OpenAI which converts the noisy information into something that is actually interesting, coherent, and useful. The LLM also provides us with a structured output (using python instructor) that connects ideas to thoughts to thinkers to social problems.

The map stays connected to the present through NewsAPI so real headlines can be linked to the ideas and dilemmas behind them.

A retrieval-augmented generation (RAG) pipeline running on Groq grounds each response in the atlas's own sources and curated content, so you can push back on a thinker's position and get an answer rooted in their actual ideas, not a generic chatbot's guess. Groq's speed keeps the exchange feeling like a real back-and-forth.

When you want to keep something, the reading room and personal library let you save discoveries, highlight passages, and write annotations. Everything is stored locally in your browser, so your reading stays yours. The core atlas works without API keys, and the live and AI-powered features layer on top when they're configured.

Challenges we ran into

Turning messy web pages into trustworthy graph edges. The crawler was the hardest part to get right. Articles don't announce "this passage connects Kant to AI regulation." We use OpenAI to extract the ideas, thinkers, and issues a page touches on, but model output is probabilistic, and a graph full of confident-sounding mistakes is worse than no graph. So every extracted relationship has to be traceable. Each one is stored with the source URL and the passage it came from, validated against a fixed schema before it's accepted, and labeled as an article mention rather than a curated connection. A source that mentions an idea isn't endorsing it, and the data model keeps that distinction instead of leaving it to the interface.

Keeping the crawl bounded and the costs predictable. An unconstrained crawler on a web of interlinked articles will sprawl, and every page sent to an LLM costs time and money. We track sources in SQLite with canonicalized URLs, so the same article reached through different links isn't processed twice. We cap crawl depth and page budgets and cache fetched content. Extraction only runs on content that's new or changed, so re-running the crawler is cheap and doesn't quietly rewrite the graph.

Making the pipeline resilient and repeatable. Pages fail, time out, or change shape, and API calls get rate-limited or return malformed output. The crawler records each source's state in the database, so it can retry or skip failures and resume where it stopped instead of starting over. The finished graph is exported as a single snapshot the website reads, which keeps the frontend fast and independent of the crawler. The core atlas works with no keys and no live pipeline.

Accomplishments that I am proud of

We took ideas that usually live in isolation and made them something you can explore, then paired that discovery with tools for slowing down and reflecting. We're especially proud that the core experience works with zero API keys, and that anyone can inspect the sources behind a connection instead of taking our word for it.

What I learned

I learned a lot about working with LLMs, scrapers, and enforcing structured outputs.

What's next for EthicAtlas

The next major advancement for EthicAtlas is account syncing for personal libraries and guided learning paths (like a Duolingo for philosophy) for newcomers. Moreover, I want to start working on a minimal mobile app that matches Substack's vibe and feel for people to better be able to share their comments and thoughts and read those of others.

Built With

Share this project:

Updates

Submission history