A spiral for time

This project has been a fun one. Although, I probably shouldn’t start there. Let’s start with where it all began.

Some time ago, long before ArchiHUB existed, we decided to scrape as many news articles as we could get our hands on. Once we had the data, we ran a few simple keyword searches across roughly 500,000 articles from the politics and economics sections.

We weren’t looking for anything in particular, but something quickly caught our attention: patterns. Some of them were surprisingly regular. Search for a phrase like “connect internet Colombia” and you’d see the same conversation come back every four years. Almost like clockwork. Almost like election time 😉

The pattern kept repeating, while the root problem never really got solved. But that’s a discussion for another post. What’s important here is that it made us wonder: why are we even thinking in a line when representing time?

And of course, it seems obvious Many cultures throughout history have understood time this way: not as a straight line, but as something that repeats. And really, how could it be any other way? The sun rises and sets. The moon continues its endless dance. The seasons come and go. Nature moves in cycles.

At some point, though (perhaps because of technical limitations, or maybe because our own understanding of progress became increasingly linear) we embraced the timeline. It became the default way of organizing history, events, and information.

And it stuck.

So much so that when I first saw these recurring patterns emerge from the data, they genuinely surprised me. What should have been obvious suddenly felt like a revelation. We had become so accustomed to thinking in straight lines that we had forgotten how much of the world moves in circles.

And so, we had our challenge. But we knew we had to start small.

First, we didn’t actually own the rights to the news articles we had collected, so simply uploading the dataset wasn’t an option. Even if it had been, it only covered the years from 2000 to 2024.

By then, we wanted to go much further back. Or, since I just argued that this isn’t really a timeline, let’s say we wanted to expand the historical record. Either way, we wanted to go way back.

That made things considerably more difficult. Older newspapers rarely come in neat JSON files. They’re scanned pages, often with poor print quality, inconsistent layouts, and plenty of OCR mistakes.

Fortunately, by then we had ArchiHUB. So we started experimenting.

The experiment

Our first step was to import a collection of public-domain newspapers from the Banco de la República’s digital archive. Choosing this collection gave us two important advantages: we knew we could legally work with the material, and the scans were of consistently high quality.

From the beginning, our goal was to use the ArchiHUB ecosystem from start to finish. To do that, we relied on the ArchiHUB Desktop App (currently in beta) to import every newspaper into the database.

Once the documents were loaded, we had several options. We could have used ArchiHUB Flows to extract metadata, run ArchiHUB OCR, and automatically identify information such as the publication date. Given how well ArchiHUB’s OCR performs, that approach would have worked perfectly.

But we wanted to make things a little more interesting.

Instead, we built a lightweight OCR engine directly into the desktop app. Before importing each document, the AI agent would use this OCR engine to read the first page, identify the publication date, and automatically add it as metadata during the import process.

To our delight, it worked on the first try.

We’ll talk much more about the Desktop App later, because it has quickly become one of the most useful tools in our workflow.

Once the newspapers were in the platform, we could finally begin processing them.

The first step was to run ArchiHUB’s OCR on the entire collection. The extracted text became the foundation of our search engine, allowing us to search through thousands of pages instead of relying only on metadata.

To make the search more effective, we built an ArchiHUB Flow that configured the search agent to better understand the Spanish used in newspapers from the early 1900s. Language changes over time, so we wanted the agent to recognize historical spellings and older expressions rather than treating them as completely different words.

The ArchiHUB Flow then used an iterative search process, scanning the entire collection and ranking the most relevant results for each query. This gave us a much more useful way to explore the archive, even when the language differed from modern Spanish.

With the search engine in place, we finally had what we needed: a way to retrieve meaningful events across a colection of newspapers.

Search is only half the story. Finding events is useful, but lists of results still force you to think chronologically, one date after another. We wanted to see whether those recurring patterns we had noticed years earlier could become visible in a completely different way.

Rather than building yet another timeline, we decided to experiment with a representation inspired by the very observation that started this project: history often feels less like a straight path and more like a series of recurring cycles.

If the patterns were truly there, we wanted people to see them, not just read about them.