DEV Community

Cover image for Link Séance: Summoning the Ghosts of Forgotten Websites with Open-Weight AI 👻
Rittik Chakraborty
Rittik Chakraborty

Posted on Edited on

Link Séance: Summoning the Ghosts of Forgotten Websites with Open-Weight AI 👻

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine

What I Built

Link Séance — Summon the ghosts of forgotten web pages.

Ever wondered what happened to an old website? Maybe a blog you used to visit, an abandoned personal website, or a page that disappeared from the internet years ago?

Link Séance is a small web application that brings those forgotten corners of the internet back to life.

Give it an old or dead URL, and it:

  • Searches the Internet Archive's Wayback Machine for the closest available snapshot.
  • Fetches the archived webpage and extracts its readable content.
  • Uses an open-weight LLM to reconstruct the story behind the page.
  • Explains what the website was about, who it was intended for, and potentially suggests a modern alternative when the model has enough confidence.
  • Offers an optional Ghost Mode, which narrates the result in a gentle, spooky tone.

I interpreted the Ghost in the Machine theme quite literally: what if the ghosts haunting the internet were not supernatural, but the forgotten websites, communities, and digital memories we left behind?

The idea was inspired by the thought that every dead link has a story worth discovering.

Demo

Try it here:

🔗 https://link-seance.vercel.app

Code

The project is open source and available on GitHub:

🔗 https://github.com/devrittik/link-seance

Built with a modular architecture so the application can be extended without tightly coupling the UI, archive retrieval, and AI inference.

How I Built It

I wanted to keep the project lightweight and avoid depending on a proprietary AI API.

Tech stack:

  • Next.js 16 and App Router
  • TypeScript
  • Tailwind CSS v4
  • shadcn/ui
  • Cheerio for HTML content extraction
  • Internet Archive's Wayback Machine
  • llama.cpp for local LLM inference

The AI integration was designed to be provider-independent.

The application communicates with an OpenAI-compatible chat completions endpoint. This means I can run an open-weight model locally through llama.cpp or switch to a compatible hosted inference provider simply by changing environment variables.

The AI configuration uses:

  • LLM_BASE_URL
  • LLM_MODEL
  • LLM_API_KEY

No application code changes are needed when switching between compatible inference providers.

The main workflow looks like this:

  1. User submits an old or dead URL.
  2. The backend searches the Wayback Machine for an archived snapshot.
  3. The archived HTML is fetched and cleaned using Cheerio.
  4. Extracted content is sent to the configured LLM.
  5. The model generates a contextual explanation of the forgotten website.
  6. The result is presented with the original snapshot date and an optional spooky narration mode.

I also added URL validation, distinct error responses, and request timeouts to make the experience more reliable.

Why Does Open Innovation Matter?

For this project, open innovation isn't just about using open-source tools. It's about keeping control over the entire AI pipeline.

Using an open-weight model with llama.cpp means the application can run without depending on a proprietary AI API, and potentially without sending archived webpage content to a third-party inference provider.

It also makes experimentation easier.

Developers can:

  • Choose and experiment with different open-weight models.
  • Run inference locally on their own hardware.
  • Switch between local and hosted inference.
  • Modify the prompts and model configuration.
  • Build on the project without being locked into a single AI provider.

I wanted Link Séance to be something that developers could actually run, inspect, and adapt.

My Agent Session

Coming soon!

The Spirit of It

The internet has a strange kind of memory.

A website can disappear, its owner can move on, and its community can scatter. But sometimes a snapshot survives somewhere in the archives.

I like the idea that a forgotten URL can become a doorway into a different time.

Link Séance is my attempt to make exploring that digital past a little more interactive — and perhaps a little spooky.

Not every ghost is dead. Some are just waiting in the archive. 👻

Prize Categories

Open-Source AI Challenge — Week 4: Ghost in the Machine.

Top comments (0)