I didn't realize fuzzysort requires (almost?) the whole search string to be present in the string being matched against. That means it wasn't adding a lot of value in this particular use case. Anyway, I should have started simpler. Matching on title, with some simple normalization rules, is probably good enough most of the time; in the future I could add a way for the user to provide an explicit mapping of Kindle titles to citation IDs in the front matter.