The situation
A US publishing group wanted personalized book discovery across more than 10 million titles, without paying thousands of dollars a month in model API fees.
What we built
- An ETL pipeline normalizing catalog records from Amazon, Ingram and Goodreads into one clean catalog of more than 10 million records.
- A hybrid recommendation engine over PostgreSQL and Qdrant, combining collaborative and content-based filtering. A related build used a two-tower deep learning model that adapts to live user interaction rather than an overnight batch.
- A goal-based recommendation chatbot that establishes intent through guided questions before recommending, and explains why each book was chosen. It runs on a self-hosted Llama 3 model. The model is served with Ollama.
- FastAPI services deployed with Docker to a private cloud, with 95 percent test coverage and 50 requests per second validated under k6 load testing.
Results
- 60 percent higher click-through on recommendations
- About $10,000 a month in API costs avoided by self-hosting the language model
- More than 10 million book records normalized
Why it matters
Self-hosting is not always cheaper, but at this volume it avoided roughly $10,000 a month in API fees and kept the model running in the client’s private cloud.