This repository contains materials for the Macroexpand 2025 conference presentation: "From Correlations to Recommendations – A Publisher's Journey into Data-Driven Book Sales using the SciCloj stack".
This presentation demonstrates how a book publisher (Jan Melvil Publishing) used Clojure and the SciCloj ecosystem to analyze customer purchasing patterns and develop a data-driven recommendation system.
- Discovering hidden patterns in customer purchasing behavior
- Moving from basic correlation analysis to association rule mining
- Building a practical book recommendation system
- Visualizing relationships between books using network graphs
- Implementing business insights from data analysis
The project uses a series of Clojure notebooks to demonstrate the journey from raw sales data to actionable recommendations:
- Data loading and preparation
- Correlation analysis between book titles
- Market basket analysis using the Apriori algorithm
- Recommendation engine implementation
-
Development Environment: VS Code + Calva
-
Project Management: deps.edn
-
Notebook Environment: Clay
-
Key Libraries:
- tablecloth.api - data manipulation
- scicloj.tableplot - visualization
- scicloj.kindly - rendering
- clojure.math.combinatorics - itemset generation
This analysis led to several business improvements:
- More effective cross-selling recommendations
- Better understanding of purchase patterns between Czech vs foreign authors
- Creation of new targeted bundles based on actual customer behavior
- Implementation of "Customers Also Bought" sections on product pages
- Article about the topic on Clojure Civitas
- SciCloj: scicloj.github.io
- Tablecloth: scicloj.github.io/tablecloth
- Presenter: Tomáš Baránek
- About me: https://barys.me
- Email: tom@barys.me
- GitHub: https://www.github.com/tombarys
- Zulip: https://clojurians.zulipchat.com
- Jan Melvil Publishing: https://wwww.melvil.cz
- Servantes: Servant.es
- Blog (EN): https://lifehacky.net
- Blog and Club (CZ): https://lifehacky.cz
- Nautilus Omnibus: https://nautilus-omnibus.web.app