Dogear bookmark generator

What if every book carried a hidden signature—something as unique as a fingerprint, but generated entirely from its ISBN? That’s the idea behind Dogear: turning numbers into striking, one-of-a-kind bookmark designs that blend maths, art, and a bit of flair.

Dogear is my experiment in turning ISBNs into physical art. Every book gets a unique bookmark design—and for special collections, those designs can carry custom touches.

The idea came to me when I needed a bookmark for a book I was reading in the company makerspace. Having recently given some demos on using our new Cricut Maker 3 I figured I'd just cut a rectangle out of cardboard and call it a day.

I was however quickly nerd sniped by my coworkers, and an idea started taking shape. Why didn't every book come with its own unique bookmark? And so the project escalated, quickly.

The idea grew: not just a rectangle, but a custom outline, a decorative top, a generative art design, and a QR code pointing to an explanation of what it all meant. Naturally, the title and author needed to be plotted with my shiny new pen-plotting tool.

The project earned its name — “Dogear” — a nod to the risk of page-folding it was designed to replace.

Soon it wasn’t just about making a bookmark for myself. I set out to give every book in our tech library its own bookmark. You can see an example on the dogear page listing for Advanced Unix Programming , or read about the design rationale for the Man Tech library.

Each bookmark is built from four vector layers:

Creating the design files

Dogear is written in Rust, which I’ve been learning (and thoroughly enjoying). The system has three main parts: book_sniffer, dogear, and bundler.

book_sniffer

book_sniffer handles the data setup—pulling in metadata, creating description files, and generating the webpages each QR code links to. For each book, it:

Dogear

dogear takes the RON file and outputs all four vector layers. Along the way it:

Bundler

Bundler takes a number of bookmark directories, and adds each layer to an A4 page (either in portrait or landscape mode, but landscape uses the card stock most effectively).

This not only cuts down on a lot of manual work placing the bookmarks in the Cricut Design Studio - it also:

Cut, print, and plot

The Cricut Maker made quick work of the intricate cuts, and the Voronoi patterns translated beautifully to paper. A little “weeding” is needed to clear stray pieces, but so far it’s manageable. Ask me again after a hundred bookmarks.

The hardware shines, but the “Cricut Design Space” software… less so. It relentlessly pushes its subscription and tries to sell me things. The cloud-first approach doesn't work for projects like these bookmarks at all. Compounding these issues, it's picky about SVGs, lacks many critical features when reading in vector files, and inserts unreasonable hoops to jump through when creating cuts outside of its own software. My dream of pen-plotting the QR code gave way to laser printing — but honestly, the crisp printed result looks better anyway.

Assembly

Assembly is equal parts spray glue and patience. Glue goes on the back of the front layer only, so the accent color peeks through cleanly. With glue on one side, it takes a day to cure fully. The other layers glue faster. I have make a jig to align the tricky sticky pieces right, and a press to keep things aligned and flat while they're drying — no more warping like I had with PVA glue

Upload step

Finally, rsync ships everything to this site.

Putting it all together

Countless lunchtime Makerspace sessions went into refining the process. But running it now is simple:

      
      $ book_sniffer list newly_scanned_isbns.txt
      $ just generate  # runs `dogear` on every .ron file in the `new` directory.
      $ bundler --orientation=landscape  bookmark_dir_1 bookmark_dir 2 ...
      $ just upload    # triggers rsync on the `new` and `static` dirs.
      
      

Other software used

A whole ecosystem of Rust crates helped make Dogear happen:

Am I happy with the result?

Absolutely. I’m gearing up for the first big production run, and the prototypes are looking great. Along the way, I’ve had fun learning Rust, exploring crates, and building a system that bridges metadata, maths, and craft.

If you haven’t already, take a look at the example page for Advanced Unix Programming, or read about how the design for the Man Tech company library came together.