Make Sense Of It
← All work

Backed up, but invisible

A vast amount of pre-internet culture is technically preserved but practically invisible - locked in scans, PDFs and microfilm, outside the channels where culture now lives. We digitised a London anarcho-punk zine (2003-2010) into a searchable, connected, agent-readable archive, as proof that bringing that material across is now tractable.

Backed up, but invisible

A vast amount of the recent past is technically saved and practically lost. It's been scanned, microfilmed, exported as PDFs - backed up, in the narrow sense that the bytes exist somewhere. But it isn't in any of the channels where culture actually happens now. It isn't searchable. No model has read it. An agent can't fetch it. It's preserved the way a photo in a shoebox in the loft is preserved: present, and out of view.

This project was a test of how tractable it now is to bring that material across - out of the shoebox and into the channels. The subject is Last Hours, a zine published out of London between 2003 and 2010: seventeen issues, more than eighteen hundred pages of interviews, articles, reviews and columns from the city's anarchist, punk and direct-action scenes. I spent a chunk of my twenties in and around that world, which is part of why I picked it. But it's a stand-in for something much larger. We started because the handful of issues that had been scanned onto the Internet Archive carried OCR that was close to useless, and then realised the same wall sits in front of almost everything from before the web.

It's worth bringing across because it's a real record of how a particular corner of the world thought and talked, in the voice that corner actually used. Lose the ability to read it and you don't just lose a zine. You lose that corner from the story future readers - increasingly, future machines - will be able to tell at all.

Why the scans weren't enough

OCR isn't the problem, exactly. It's very good at the job it was built for: clean, typed pages where you want the words and don't much care how they were arranged. Point it at a novel or a typed report and it's close to solved.

A zine is the opposite of that job. The craft was in the layout - an interview that starts on page nine and finishes on page fourteen, columns that cut across each other, hand-drawn titles, comics, pull-quotes lifted out of the body. What you want out of it isn't a bag of words, it's structure: this is an interview, with this band, and here are the questions and answers in the right order. Run a complex page through OCR and it falls apart at the first column edge - you get back somewhere between a tenth and most of the words, rarely in an order that means anything, and the names bent towards dictionary spellings.

The zine is an extreme case, but the limitation is general. Any visually complex source - an old periodical, a form, a report laid out in columns and boxes - hits the same wall. The thing that's been missing was never better OCR. It was a way to pull structured content out of a complicated page.

What makes it tractable now

What changed is that you can hand a vision model the page image and a schema - the shape you want back, say a piece with a type, a title, a body, or an interview's questions and answers - and it returns the content already structured. The application compiles those pieces into the finished article. Image in, structure out. That alone gets you into the high nineties on pages classical tools can't touch, and it skips the whole apparatus people used to need - the thresholding, the region-finding, the column detection - to get a clean rectangle in front of an OCR engine. You stop trying to find the regions. You ask for the answer in the shape you want it.

That's the core of it, but a whole issue is more than one page, and we didn't land the architecture in one go. Nobody has a settled recipe here, so we tried things and watched what broke. The obvious first move was to read the text off page by page and stitch the fragments into articles afterwards. It was fragile in exactly the way you'd fear: an interview spanning five pages, sharing those pages with a comic and three record reviews, gives a page-by-page reader no way to know what belongs to what. The stitching did more damage than the extraction.

What worked was to give the model less to do at each step. First a cheap pass that only works out which pieces an issue contains and which pages each one spans - no transcription, just a map. A person reviews that map. Then each piece is read on its own, image and schema, with just the pages it lives on. The application does what applications are good at - walking the issue, holding the running order, fanning the reads out across workers, caching, compiling - and the model does the one thing it's best at.

A grid of zine pages, each overlaid with numbered blue boxes marking blocks of text in reading order, with a control to confirm or fix the order.

The reading order the model proposed for each page, laid out for a person to confirm or fix before any piece is read.

It's a small instance of Sutton's bitter lesson: the hand-built cleverness, the column detection and the boundary heuristics, loses to handing the model the image and letting it do the general thing. And it's cheap enough to matter for material no one is funding. The workhorse model is Qwen 3.7, which on our test pages matched Claude Sonnet's fidelity for a fraction of the cost, with its reasoning turned off because it added cost and nothing else.

What "accurate" even means

There's an awkward part that turns out to be the interesting part.

You can only measure transcription accuracy where you have something true to check against. We had that for the subset of pages with a surviving clean text layer, and on those the character-level fidelity ran consistently into the high nineties. That's a real number but a partial one, and leaning on it would be slightly dishonest, because for most of the archive there is no ground truth. The scan is the only witness.

In any case, "accurate" is a slippery target, and the clearest case is spelling. The model's instinct is to fix a misspelling as it reads, and for this material that instinct is exactly wrong. The whole reason the archive is worth anything is that it records how people actually wrote, in 2005, in this scene, and people in their twenties in London in 2005 could not spell. The misspelling is the data. When a band describes itself as "quirk-punk - Qunk?", you keep the "Qunk?", question mark and all. The clean version is the worse record. So the instruction is the opposite of the usual one: keep the spelling and the typos, don't correct and don't paraphrase. The other thing it would do, on a page packed with content, was quietly drop a stretch from the middle - which is why we check how much was carried across as hard as we check how faithfully.

And sometimes the source won't tell you what accurate would even mean. One issue runs an interview with Grabba Grabba Tape - except most of the answers come from members of That Fucking Tank. Who is the interview with? A flawless transcription doesn't settle it, because the ambiguity is on the page, not in the reading. The job was never to tidy those things up. It was to carry them across intact and let the reader, human or machine, see them for what they are.

That's where the Loop was doing important graft. It isn't an accuracy machine; it's the thing that makes the judgment calls reviewable and writes them down. This isn't sensitive data - it's a public zine, there's no one to protect - so the governance that counted here wasn't redaction, it was the audit trail and the review gates. The digitisation runs as four stages: work out the issue's structure, map its pieces, extract them, then tag them. A person signs off at the end of each before the next begins, and every decision is recorded - which model and which version of the instructions produced a piece, what a reviewer changed, why a particular typo was kept. When the question is "why does the archive say this", there's an answer, traceable to a page. It's the same machinery we put in front of a charity's casework. Here it happened to be guarding the integrity of a record rather than the privacy of a person.

A grid of thumbnails of every page in an issue, each tagged with a role such as cover, contents, advert, artwork or content, with a notice that roles are locked while the extraction task exists.

An issue mid-pipeline: every page tagged by role, the work held until a reviewer signs the stage off.

The connections only an insider could see

The thing we didn't plan for was the graph.

A force-directed graph of several thousand coloured nodes - topics, bands, people, places, labels, works, zines, projects and events - densely interconnected.

The corpus as a graph: bands, people, labels, places, works, zines, projects, events and topics, with every edge drawn from the zine's own pages.

Once every piece had been tagged for the bands, people, labels, places and ideas it named, a structure fell out of the material that no single reader would ever have held in their head. Across the digitised issues, the corpus names a bit over five thousand distinct entities, joined by some thirty-two thousand connections. Land on Crass and you see not just the records and the other bands but the causes, the venues and the arguments that recur alongside them - the Spanish Civil War turning up next to a hardcore band, anarchism sitting beside a record label, Kropotkin and Emma Goldman among the most-named figures in a punk zine.

What's interesting isn't that this is possible, it's how it was built. Nothing is imported from outside - not Wikipedia, not a music database. Every connection is derived from the zine's own text: two things named in the same piece, a label credited on a release, a cause aligned with a band. It's the publication's own lens, not the world's, and it captures exactly the kind of knowledge that used to live only in the heads of people deep in the scene. And every edge is cited - it carries the issue and the piece it came from, checkable against the scanned page. The graph is rich and it is auditable, which are not words that usually sit together.

Built for the readers who aren't people

If the next readers of an archive are as likely to be machines as people, you have to build for both.

For people, the reader keeps the artefact present: clean, searchable transcription with the original scanned page one click away in the margin, and a spine down the side of every issue you can scrub through page by page. You never lose sight of the thing itself.

For machines, the archive is deliberately legible. It publishes a model-readable guide, renders every page as plain crawlable HTML, and exposes the corpus through a small MCP server - the protocol agents use to call tools - so an agent can search the entities, pull a piece, walk the graph or ask what's in an issue. The graph is what makes the dense stuff navigable: rather than read the whole run cold, an agent can follow the connections the material itself lays down. We're working on the assumption that within a few years most reading of a corpus like this will be done by an agent, on behalf of a researcher who never opens page one. The archive is ready for that reader now.

Why a punk zine

This is one defunct zine and a small constellation of interests thousands of people held twenty years ago. The point isn't the zine. It's that the same wall sits in front of an enormous amount of material that matters, and the wall has just become climbable.

Plenty of organisations are sitting on their own version of it: decades of case notes, a paper archive, ten years of reports and PDFs that are backed up and unsearchable. The specifics differ; the method doesn't. Hand the model the image and ask for the shape you want. Give it narrow jobs and let the application carry the structure. Gate the judgment calls with a human and write down every one. Build the connections from the material's own lens. Make the result readable by the agents that will increasingly be doing the reading.

Transcription is still hard, and we've left the parts held together with tape on show rather than papered over. But it works, it's live, and a record that was backed up but invisible is readable again - by people, and by machines.

Something similar in your charity?