-
-
This image is currently processing. Please be patient...
Inspiration
Every old forum thread, blog post and Hacker News discussion is a graveyard of links. We wanted a number, not a vibe: how much of the 2012 web is actually dead, and how much of it can be raised?
What it does
Necrolink scans a cohort of links, classifies each one (alive · dead · moved · bot-blocked), then holds a séance: it asks the Wayback Machine for the nearest snapshot and resurrects the dead link.
Measured result (real scan, reproducible with make judge-demo):
- Of 299 links from 2012 Hacker News front-page stories (>300 points), 55.2% are dead or moved.
- Of those, 84.2% are resurrected from the Wayback Machine.
- Control cohort: 300 links from 2025 stories show only 10% dead, so the 2012 rot is age, not a broken scanner.
Bot-block responses (401/403/405/436) are counted as BLOCKED, never as dead, so the claim isn't inflated.
The live app is a haunted graveyard UI: each tombstone is a dead link, and the Séance box resurrects any URL you paste.
How we built it (with Kiro)
- Spec-driven:
.kiro/specs/necrolink/{requirements,design,tasks}.md. Kiro implemented every task from the spec. We amended the spec twice when real scans exposed bugs: Wayback 429s led to serial requests with backoff, and bot-blocks got their own BLOCKED class. - Steering:
.kiro/steering/product.mdholds the falsifiable claim and the control-cohort rule;tech.mdholds the zero-dependency, CORS and theme rules. - Hooks:
test-on-saveruns tests on library edits;claim-syncregenerates the README claim when data changes. - Property-based tests: randomized never-throw and idempotence checks on the URL normalizer. 82 tests in total.
Zero runtime dependencies. Data from hn.algolia.com; snapshots from the Wayback availability API. MIT licensed.
Challenges
- The Wayback availability API rate-limits under concurrency, so the scanner went serial with exponential backoff.
- Many "dead" links were actually bot walls. Separating BLOCKED from DEAD changed the headline number, and it made the number honest.
What we learned
A spec with a falsifiable claim plus a control cohort keeps an AI-built project honest: the spec told Kiro what "correct" meant, and the control told us whether the scanner was lying.
What's next
Browser extension that rewrites dead links in place; scanning other corpora (Reddit 2010, Wikipedia citations).
Built With
- css
- html
- javascript
- kiro
- node.js
- wayback-machine
Log in or sign up for Devpost to join the conversation.