Mosaic brings reporting together, makes common ground visible, and leaves room for the differences that matter.
Explore Mosaic | How the analysis works
Every outlet chooses a lens: what leads, what is left out, whose words are quoted, and what context is considered essential. Reading widely is valuable, but it should not require opening ten tabs and mentally reconciling every version yourself.
Mosaic is built for that gap. It follows a developing story across independent reporting outlets and gives the reader a clearer map of the coverage, without pretending disagreement is a problem to be erased.
|
See the material claims that reporting outlets independently support. |
Notice where coverage diverges in emphasis, framing, interpretation, and tone. |
Follow every comparison back to the source articles and make up your own mind. |
The feed groups reporting about the same event into one considered story card. It foregrounds current, multi-source coverage and shows exactly when the underlying reporting was published.
Open a story to see the reporting outlets behind it, the degree of source overlap, and a synthesis that distinguishes shared claims from meaningful differences. Mosaic does not replace the reporting; it makes the path through it easier to follow.
Mosaic keeps the same calm, editorial visual language in light and dark mode, including its mark and favicon.
Mosaic groups recent coverage from independent outlets, compares material claims, calculates the source-overlap percentage from structured comparison data, and links readers back to the original work. It does not declare a source correct or turn disagreement into a verdict.
The web experience is a responsive Next.js application connected to the Mosaic API, which handles ingestion, clustering, source comparison, and synthesis.
Run the frontend locally
Requirements
- Node.js 20 or newer
- pnpm 10 or newer
- A running Mosaic API instance
pnpm install
Copy-Item .env.example .env
pnpm devOpen http://localhost:3000.
Configure the frontend to use a local API instance with:
NEXT_PUBLIC_MOSAIC_API_URL=http://localhost:3001If the variable is omitted, Mosaic uses the deployed API.
Frontend stack
| Area | Technology |
|---|---|
| Application | Next.js 16, React 19, TypeScript |
| Interface | Tailwind CSS 4, shadcn/ui, Lucide |
| Motion | Motion |
| Analytics | Vercel Analytics |
| Data layer | Mosaic API and Supabase |
Commands
| Command | Description |
|---|---|
pnpm dev |
Start the development server |
pnpm build |
Create a production build |
pnpm start |
Serve the production build |
pnpm typecheck |
Run TypeScript validation |



