Content-based niche-first recommender that surfaces Made-in-Rwanda artisan products over global brands. Multilingual TF-IDF (EN/FR/Kinyarwanda) + local-boost + fairness cap. <5 ms per query on CPU. Includes a low-tech weekly lead workflow for offline artisans.
# S2.T1.3 — 'Made in Rwanda' Content Recommender
**AIMS KTT Hackathon · Tier 1 · RetailTech · Recommender Systems · Low-Tech Distribution**
> A content-based 'niche-first' recommender that nudges buyers toward local Rwandan
> artisan products — with multilingual query support (English, French, Kinyarwanda)
> and a low-tech weekly lead delivery workflow for offline artisans.
---
## The Problem
Generic e-commerce recommenders rank by global popularity, polished marketing copy,
and SEO authority. On a typical search engine, a query for "leather boots" returns
Timberland and Dr Martens — not the leatherworker in Nyamirambo who has no website,
no smartphone, and writes product descriptions on a notebook in Kinyarwanda.
This recommender flips the priority. It treats the catalog of Made-in-Rwanda artisan
products as the primary inventory, mixes in a realistic competitive set of
international brands (Pandora, Coach, Timberland, IKEA, …) so the local-boost is
actually doing real work, and then enforces three rules:
1. A Made-in-Rwanda product **always** appears at rank 1.
2. No single artisan dominates more than 15% of the top-10 (fairness cap).
3. Multilingual queries — including French and Kinyarwanda code-switching — work
without a translation API.
The output of the search engine is then converted into weekly lead packets that can
be **delivered via SMS or a field-agent voice call** to artisans without internet
access. See `dispatcher.md` for the full distribution design.
---
## Quick Start
**Two commands — works on Google Colab (free CPU) or any Python 3.10+ environment:**
```bash
pip install -r requirements.txt
python recommender.py --q "leather boots"
```
No model downloads. No GPU. Cold start under 1 second.
### Example queries
```bash
# English
python recommender.py --q "leather boots"
# French (FR→EN dictionary normalisation built-in)
python recommender.py --q "cadeau en cuir pour femme"
# Code-switched (Kinyarwanda + English + French)
python recomm …