DEV Community

Cover image for Unearthing the Ghosts of the Early Internet with Local AI 🕯️
Kaushani Koner
Kaushani Koner

Posted on Edited on

Unearthing the Ghosts of the Early Internet with Local AI 🕯️

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼

The Internet Left a Trail. I Built an AI Séance to Follow It. 🕯️

What if we could investigate the forgotten corners of the early internet—not through nostalgia or guesswork, but through the evidence that archived webpages actually left behind?

That question inspired Web Séance, my project for Hacktoberfest 2026 Week 4: Ghost in the Machine.

🎬 A Glimpse Into Web Séance

demo video-gif of the project


real application demo

This animated preview walks through the project's workflow. It offers a visual walkthrough of the experience; the full application and its source code are available below.

🕸️ What I Built

Web Séance is an AI-assisted digital archaeology tool for exploring forgotten internet culture through historical webpages preserved by the Internet Archive.

Web Séance is designed for digital historians, web archivists, researchers, and curious developers who want to explore forgotten internet culture through verifiable archival evidence.

The application helps users:

  • Retrieve historical webpage captures using the Internet Archive's CDX API.
  • Extract outgoing hyperlinks from archived HTML.
  • Normalize and classify links.
  • Assign traceable Evidence IDs to extracted links.
  • Explore observed hyperlink trails through a D3.js network graph.
  • Ask a locally running Gemma model to interpret the collected evidence.

The goal isn't to manufacture a story about the past. It's to make the available evidence easier to inspect.

features-flow

🔬 How It Works

1. Retrieve the archive

The application uses the Internet Archive CDX API to locate historical captures and retrieve archived HTML.

2. Extract evidence

BeautifulSoup is used to parse archived HTML and extract outgoing hyperlinks. The extracted links receive identifiers so they can be traced back to their source page.

3. Ask the local AI historian

Gemma 3:4b, running locally through Ollama, helps interpret the evidence. The system checks whether cited Evidence IDs exist in the collected evidence set.

That check is useful, but it is not a guarantee that every AI-generated interpretation is factually correct. The distinction between evidence, hypotheses, and unknowns remains important.

🔎 A Real Investigation: Excavating a 1997 Website

Investigation

To test Web Séance against real historical material, I investigated an archived webpage:

  • Website: Jeffrey Zeldman Presents
  • Original URL: http://www.zeldman.com/toc.html
  • Capture date: March 30, 1997
  • Capture timestamp: 19970330110648

Web Séance retrieved the archived HTML, recorded its SHA-256 fingerprint, and extracted 41 outgoing hyperlinks.

Each extracted link received a unique Evidence ID, making individual findings traceable.

What a Hyperlink Actually Tells Us

A hyperlink is evidence of a connection between two web pages, but it does not automatically reveal the relationship between the people behind them.

For example, if an archived page links to another website, we can verify that the link existed in that capture. However, we cannot conclude that the website owners collaborated, knew each other, endorsed one another or shared a common purpose.

Web Séance therefore distinguishes between observable link connections and unverified interpretations. This distinction is important when reconstructing the early internet, where a network of hyperlinks can reveal how pages were connected without necessarily explaining why those connections existed.

What did the page link to?

To make the extracted evidence more concrete, here are five representative records from the 41 outgoing hyperlinks:

Evidence ID Anchor text Destination Scope
P6-L1 GOOD EVENING, /snds/bell.wav Same-site
P6-L2 entrance, /welcome.html Same-site
P6-L3 — /awards.html Same-site
P6-L4 Ad Graveyard /ad.html Same-site
P6-L5 Pardon My Icons /icon.html Same-site

These five entries are representative examples from the 41 outgoing hyperlinks extracted from the archived page. The Evidence IDs identify individual records in the collected evidence set. Destinations are shortened for readability; the original URLs were extracted from the archived HTML.

Why does this matter?

Instead of asking an AI to invent a story about the early internet, Web Séance starts with inspectable historical evidence.

The Evidence IDs connect extracted links to their archived source page, making the investigation easier to reproduce and review.

That's the distinction Web Séance is designed to preserve: evidence first, interpretation second.

🧠 Why Gemma?

I used Gemma 3:4b through Ollama as the local AI historian.

I wanted the model to work with evidence collected by the application rather than inventing historical connections from vague prompts.

The division of responsibilities is intentional: Python handles archival retrieval and evidence extraction, while Gemma helps interpret the resulting evidence. This allows the model's interpretations to be examined against the records collected by the application.

The intended workflow separates:

  • Confirmed facts: What the archived HTML and extracted links directly support.
  • Hypotheses: Possible interpretations that need further investigation.
  • Unknowns: Questions the available evidence cannot answer.

Evaluating the Local AI Historian

I tested Gemma 3:4B using archived webpage evidence to understand how effectively a small local model could extract facts, interpret hyperlinks and distinguish verified information from hypotheses.

Evaluation approach

I used the evidence dossier from the 1997 website investigation and asked Gemma questions covering five areas:

  1. Metadata extraction: Could it identify the page title, original URL and archival capture date?
  2. Hyperlink identification: Could it retrieve the supplied URLs and their associated anchor text?
  3. Evidence interpretation: Could it distinguish an observed hyperlink from an unverified relationship or historical claim?
  4. Uncertainty handling: Could it identify what the archived evidence did not establish?
  5. Citation discipline: Did its responses refer to actual Evidence IDs without inventing records?

I reviewed the responses against the collected evidence, paying attention to factual correctness, unsupported assumptions, missing information and citation accuracy. I also experimented with shorter prompts and explicit evidence constraints to observe whether more focused instructions improved response consistency.

Observed results

Evaluation area Observed result
Historical fact extraction Successfully retrieved page title, URL and archival date
Hyperlink identification Correctly identified the supplied URLs and anchor text
Link classification Demonstrated understanding of SAME-SITE and EXTERNAL classifications
Evidence interpretation Recognized the difference between hyperlink connections and proven relationships
Historical reasoning Generated plausible hypotheses about multimedia and early web design
Uncertainty awareness Identified missing information about linked pages and website purpose
Evidence accuracy Needed occasional guidance to avoid unsupported details and incorrect references
Prompt responsiveness Produced more focused and structured answers with shorter, evidence-constrained prompts

These observations describe behavior on this investigation's evidence set; they should not be interpreted as a general measure of model accuracy.

The experiment showed that Gemma 3:4B can support local historical evidence interpretation, particularly when given structured archival data and focused instructions. It also highlighted opportunities to improve citation validation and uncertainty handling within Web Séance.

This was a qualitative, task-based exploratory evaluation using one historical investigation, not a comprehensive accuracy benchmark.

🧪 How I Checked the AI's Work

evidence 1

evidence 2

Gemma 3:4b in action: The local model analyses an evidence dossier containing 41 extracted links, separates verified facts from plausible hypotheses, and identifies unknowns. Web Séance then checks whether cited Evidence IDs exist in the dossier.


That gives me a basic traceability check: a citation should point to an actual extracted record, not an invented identifier.

However, this is not a complete factuality evaluation. A valid Evidence ID does not automatically mean the model interpreted that evidence correctly.

I treat these as separate questions:

  • Traceability: Does the cited Evidence ID exist?
  • Interpretation: Does the cited evidence actually support the statement?
  • Uncertainty: Does the model distinguish what is known from what remains unknown?

This is an important limitation of the current implementation, and an area I want to evaluate more rigorously.


👻 What the Archives Cannot Tell Us

One of the most important lessons from building Web Séance is that an archive is not a complete record of the internet.

A missing hyperlink does not necessarily mean a connection never existed. A page may have changed, an archive capture may be incomplete, or an important interaction may have happened somewhere outside the archived HTML.

I don't want the AI to turn these gaps into confident historical stories.

For this reason, Web Séance treats its findings as evidence to investigate rather than a complete reconstruction of internet history.


🛠️ Tech Stack

  • Python — application logic
  • Streamlit — user interface
  • BeautifulSoup — HTML parsing and link extraction
  • Requests — HTTP requests
  • Pandas — structured data handling
  • D3.js — network graph visualization
  • Internet Archive CDX API — historical capture discovery
  • Ollama + Gemma 3:4b — local AI interpretation

🌍 Why Open Innovation Matters

The early internet grew through shared ideas, open standards, personal websites, mailing lists, and communities that built things in public.

I wanted Web Séance to follow a similar philosophy.

The project combines publicly accessible web archives with an open-source AI model that can run locally through Ollama.

This matters for a few reasons:

  • Inspectable methodology: The source code makes the extraction and evidence-handling process available for others to examine.
  • Local AI experimentation: Gemma can interpret collected evidence without sending the inference request to a hosted LLM API.
  • Reproducibility: Other developers can inspect the implementation, test the same workflow, and challenge its conclusions.
  • Room to improve: The project can be extended with better archival sources, stronger evaluation, and more careful historical analysis.

There is an important distinction: local AI inference does not make the entire application offline. Retrieving new historical captures still requires access to the Internet Archive.

For me, open innovation is not just about making a repository public. It's about making the process open to inspection, criticism, and improvement.

🕯️ The Spirit of the Project

The internet doesn't remember everything.

Some pages disappear. Some links break. Some histories become difficult to reconstruct.

But sometimes, a small trace remains.

Web Séance is an attempt to follow those traces responsibly—with archival evidence first, AI interpretation second, and uncertainty always visible.

If you're interested in digital archaeology, forgotten internet culture, open-source AI, or the history of the web, I'd love for you to explore the project and share your thoughts.

🏆 Prize Category

Best Use of Gemma

Built with Gemma 3:4b running locally through Ollama.


Curious about what the early internet left behind? Explore the project, try the interactive walkthrough, and let me know what you discover.

Project: https://github.com/kaushanikoner20-hub/Web-Seance

Interactive walkthrough: https://kaushanikoner20-hub.github.io/Web-Seance/demo.html

Top comments (1)

🔥 Jadwal & Hasil: kaushanikoner/unearthing the ghosts of the early internet with local ai hcg - Info Live Streaming 2026
 
kaushanikoner20 profile image
Kaushani Koner •

Happy Halloween!!! Happy Hackinggg !!