This book not only presents conceptual theory but also guides readers through building an end-to-end system using a real-world case study called ChapterNode. Readers will be introduced to modern architectural management practices that combine a React frontend, a TypeScript-based Fastify API, a Python-based Prefect data pipeline, and a PostgreSQL relational database. Technical topics covered include:
Cleansing and normalizing raw book metadata from the Open Library (from titles and author name variants to subject taxonomies).
Designing a user profile matrix based on implicit behavior (READ, READING, TO_READ, DNF status) and Rocchio-based weighting.
Implementation of retrieval and candidate generation techniques using parallel subjects, TF-IDF, and BM25.
Transparent scoring and ranking mechanisms that combine subject matching, author affinity, and popularity boost.
Construction of an automated reasoning engine (reason generation) to generate transparent and debuggable recommendation rationales (“Because you are reading…”).
Written with a practical approach rooted in real-world experience, this book is an essential reference for a wide range of audiences. It is highly recommended for computer science students, software/data engineers, and system planners who want to design easily controlled, low-cost, and highly precise recommendation architectures. Furthermore, this book is dedicated to serving as a technical guide for anyone seeking to master the art of feature engineering at a real operational scale.
Viona is a software engineer based in Jakarta. She built ChapterNode to answer a specific question: can hand-crafted features and a transparent scoring function produce book recommendations worth trusting, without a machine learning framework or cloud infrastructure? This book is a case study. Her day job is at Bank Mandiri, where she works on Smart Branch, the digital banking platform running across 2,000 branches and 18 million accounts. Before that, she worked for London-based B2B trading analytics, architected the frontend platform serving 65 proprietary trading firms globally. Earlier stops include SuperApp (YC W18), Adactive Asia to ship 3D wayfinding apps to Singapore buildings and Yamisok, where she helped ship Indonesia's first integrated e-sports platform. She holds a Master of Science in IT from President University. Her thesis classified karate movements using Temporal Convolutional Networks on pose sequences. Her undergraduate thesis applied K-Nearest Neighbors to breast cancer diagnosis. She writes about machine learning, computer vision and software engineering on Medium, mentors earlycareer engineers on Dealls and coached the frontend track for SISTECH 2026 (RISTEK Fasilkom UI). Her side projects include an ATS resume builder with voice dictation and a timesheet tool used by outsourced workers at Bank Mandiri. She is interested in pushing AI research into production.
Currently serves as Rector of the South Tangerang Institute of Technology (ITTS). Onno earned his Ph.D. in Electrical Engineering from the University of Waterloo, Canada, is a copyleftist, educator, and ICT evangelist. He has published 50++ books, including a free ICT ebook for schools in 2008. Some of his latest books are "Internet-TCP/IP: Concepts and Implementation", 2018; "Operating Systems, Concepts and Creating Linux OpenWRT and Android ROM", 2019; "IPv6 to Support Network Operations and Domain Names" System", 2019; " Kubernetes for Beginners", 2024 and "Creating Your Own 5G Mobile Operator", 2024. He led the first Internet connection at the Bandung Institute of Technology, 1993-2000, and used it to create the first educational Internet network in Indonesia. He freed up WiFi frequencies, introduced RT/RW-net, Wajanbolic antennas and OpenBTS cellular networks and his own private 5G. He led the first telephone network over the Internet, VoIP Merdeka, which later became known as SIP-based VoIP Rakyat and used area codes +62520 and +62521. He is currently actively introducing eLearning, and running e-Learning servers at http://lms.onnocenter.or.id/