← All work
Engineering · 2018–24

Recommendation Engine Evaluation & Extension (Gorse / Go)

Overview

Hands-on evaluation and extension of Gorse, a mature open-source recommendation engine written in Go. We assessed its multi-source recommendation pipeline (popular, latest, item-based, user-based, and collaborative filtering) and adapted it to fit a recommendation use case within one of our client engagements.

Why It Exists

Building a production recommender from scratch is expensive and risky. We evaluated Gorse as a proven, self-hostable alternative to commercial recommendation APIs, validating whether its AutoML model search, distributed prediction, and RESTful data CRUD could be slotted into an existing content platform without a ground-up ML build.

What We Built

This is an upstream open-source codebase (originally by zhenghaoz / gorse-io) that we forked, ran, and extended with a small set of targeted commits to adapt configuration and behavior for our integration. The system is organized into clear services we worked across: master (training coordination and AutoML search), worker (recommendation generation), server (RESTful API for data and recommendations), and pluggable storage/config layers backed by SQL databases and Redis. We exercised the full workflow of importing users, items, and interaction feedback and serving per-user recommendations, including the bundled dashboard for monitoring and cluster status.

Technologies & Approach

Go service architecture with a master/worker/server split, SQL (MySQL/PostgreSQL) and Redis storage backends, and Docker Compose for local stand-up. Our changes focused on environment and configuration adjustments needed to embed the engine into the target platform rather than altering core algorithms, the honest framing here is integrate-and-extend, not build-from-scratch.

Outcome / Impact

The evaluation validated Gorse as a viable, self-hosted recommendation backbone: it proved out the import-train-serve loop and the operational model (training on a single node, scaling out prediction) for our use case, giving the client a clear build-vs-adopt answer backed by working code rather than a slide deck.

Capabilities Demonstrated

  • Evaluating open-source ML infrastructure against real product requirements
  • Extending and operating a Go-based recommendation engine end to end
  • Working fluently across collaborative filtering, AutoML model search, and ranking
  • Wiring ML services to SQL + Redis storage and serving recommendations via REST
More work See all →