Mental Floss
A small puzzle for a noisy brain.
This project started as a practical question: how do you reconcile a large personal pattern archive with a Ravelry library without doing everything by hand?
This evening, I was working with my thinking partners. I needed my brain to do something precise, contained, and honest. Not to escape work, but to reset how it felt.
I like fiber arts. I also seem to like collecting patterns.
Most of the patterns I buy come from Etsy, even though many of them also exist on Ravelry. I’m not entirely sure why that’s my default. It just is. When I download a pattern, I save the PDF to my Google Drive, and then I try to do the good follow‑up work. I go to Ravelry, add the pattern to my library, and drop a link to the Google Drive document into the notes.
Unfortunately, I fall behind.
The purchase happens when I’m excited. The bookkeeping happens later, when the excitement has moved on. Over time, the pile grows.
This evening, instead of pushing through that friction, I turned the gap into a puzzle.
The pile has a number
It helped to stop saying “a lot” and measure it.
I have over 400 pattern PDFs under my Patterns folder for just my crochet projects. I have 156 entries in my Ravelry library export. I also have 300 favorites from Ravelry’s exported data.
I’d already mapped about 200 of the PDFs manually over time. That number is higher than the 156 entries in my Ravelry library, because not all of my patterns exist on Ravelry at all. Some live entirely outside the catalog.
Which meant I wasn’t starting from zero. I was starting from a partial truth, scattered across files, exports, and memory.
Those numbers matter because they draw a boundary around the problem. This isn’t “organize a folder.” This is identity work at a scale where guessing stops being charming.
The real problem is identity
A PDF is content without identity. You can open it, read it, even love it, but the system doesn’t know what it is.
Ravelry is identity. Patterns have names, designers, sources, favorites, and libraries. It’s a place where things can be compared and joined.
The friction lives in the gap between the two.
What I wanted wasn’t perfect matching. I wanted a repeatable way to triage the backlog, surface likely links, and make manual review focused instead of overwhelming.
That framing changed everything.
Matching is the game
The surprising part wasn’t automation. It was extraction.
A PDF looks like a blob until you tug on the right thread and text falls out. Titles. Designer names. Sometimes a store name. Human‑facing information that was always there, just not visible to the system.
Once a file stops being “something I bought once” and starts being “a thing with a name,” it becomes matchable. Comparable. Placeable.
That’s when the work stops feeling like cleanup and starts feeling like play.
What was built: a matcher that respects reality
The workflow evolved into a two‑pass matcher.
The first pass uses cleaned filename signals. Cheap information, but often good enough once you normalize it.
The second pass uses clues extracted from PDF metadata and first‑page text. The stuff that tends to survive renames and folder shuffles.
Along the way, the pipeline was tuned for real‑world messiness. Malformed PDFs. Noisy OCR. Inconsistent naming conventions. Metadata artifacts. One unreadable or encrypted file shouldn’t derail an entire run. It should fail loudly for that file and let everything else keep moving.
Just as important as the matching logic was the output. Raw search results aren’t motivating. Buckets are.
So the system produces clear buckets you can act on:
likely match
needs review
no results
Once there was usable text, the next step was straightforward. Those extracted keywords were used to query Ravelry directly and pull back candidate pattern pages. Not decisions. Links.
That search step is what makes the buckets meaningful. “Likely match” means there’s a strong candidate Ravelry page. “Needs review” means there are plausible options worth a human look. “No results” means the catalog didn’t surface anything convincing, and that’s useful information too.
And because this started as a gap analysis, those buckets are joined back to the library and favorites exports so context stays visible. It’s not just “I found a candidate.” It’s “I found a candidate, and here’s whether it’s already in your library, whether it’s a favorite, and whether you’ve mapped it before.”
That’s not a script. That’s decision support.
A smaller question: post‑October only
Early October was the last time I did a serious mapping pass in Ravelry. So instead of aiming at the entire archive, we narrowed the question.
What if the scope was only patterns I’d purchased since 10/1/2025?
That gave a clean cohort: 190 PDFs. Small enough to feel tractable. Large enough to be real.
And then we got the kind of result that makes a project feel alive.
Out of those 190 post‑October files:
102 landed in an actionable bucket
10 were clear likely matches
92 needed human review
88 came back with no results
About half of the cohort was immediately actionable.
That distribution is exactly why I like this kind of tooling. It doesn’t pretend certainty where there isn’t any. It turns a vague backlog into a set of choices.
Why this still feels like a win
It would be easy to look at “10 likely matches” and feel disappointed.
I felt the opposite.
Because the point wasn’t to eliminate judgment. The point was to make judgment efficient.
A “needs review” bucket isn’t failure. It’s the system saying, “I found plausible candidates, and I’m putting the decision where it belongs.” And “no results” is honest too. It tells you where metadata is thin, naming has drifted too far, or the pattern simply doesn’t exist in the catalog.
Sometimes “no results” doesn’t mean “not found.” It means “not there.”
That honesty is part of the pleasure.
It also explains why I fall behind in the first place. The backlog isn’t just volume. It’s uncertainty. If every pattern were an obvious match, I’d keep up. It’s the repeated “maybe this is the one” loop that drains the energy.
What comes next, and what doesn’t
There are obvious ways this could grow.
I could tighten the keyword extraction. Add better normalization. Experiment with ranking signals. I could keep iterating on the matcher until the “needs review” bucket shrinks further.
I could also stop here.
That’s the part I want to be explicit about.
The value isn’t in driving the system toward full automation. It’s in knowing that I could keep going, and choosing not to unless it earns its way there. Right now, the system already does the most important thing. It tells the truth about what’s knowable, what’s ambiguous, and what simply isn’t there.
If I pick this back up, it will be for small, intentional reasons. Making manual review calmer. Preserving context. Reducing the cost of uncertainty a little more.
Not because the pile demands it. But because the work still feels interesting.
What this was really for
It’s worth saying out loud that the real point of this project wasn’t cleanup.
I needed mental floss.
I needed a reset. Something bounded. Something playful. Something that let my brain engage without stakes or deadlines. Matching patterns turned out to be the right kind of problem. Concrete enough to focus on. Open‑ended enough to stay interesting.
The fact that I also got some cleanup out of it is a big win. But it’s the secondary one.
The primary win was that feeling of traction again. Of moving uncertainty out of my head and onto a surface where I could look at it, sort it, and set it down.
Sometimes that’s enough. Sometimes that’s exactly enough.
What I took away
By the end of the evening, the project had reframed itself.
Instead of asking, “Can this be automated completely?” it started asking, “How can automation reduce uncertainty and make human judgment dramatically more efficient?”
That shift is what made it successful.
I didn’t fix my habits. I didn’t eliminate the pile. But I did build a system that could tell the truth about the pile, and that changed how the pile felt.
Matching is satisfying because it resolves uncertainty. It turns “maybe” into “yes,” “no,” or “worth a look.” It gives you permission to stop carrying the question in your head.
In the end, that was the mental floss I needed, and the fact that some real cleanup came along with it was just a bonus.
Alison + Wiggins
Postscript: In case you’re wondering, the pattern count is real. Some of it is holiday‑gift optimism. Some of it is a long‑standing ambition to make about forty blankets. I contain multitudes. And yes, doing this experiment is my idea of fun.

