- parse inputs in common formats to build candidate list
- use openlibrary to get information about candidates
- create embedding for each candidate
- store embedding raw data with the candidate in sqlite or something (so we can rebuild index without recaclulating embeddings)
- Build an index (annoy? faiss?) of the embeddings
- Library of Congress API
- OpenLibrary API
- WorldCat
- Google Books API
- SBERT Semantic Search
- Simon Willison's Explorations
- Semantic Search in Rust
- Annoy
- FAISS
- To save the index:
faiss.write_index(index, filename)
- To load the index:
index = faiss.read_index(filename)
- To save the index:
- Textual terminal ui library