Multilingual Grant & Tender Matcher for African entrepreneurs — ranks relevant grants/tenders by business profile and generates plain-language summaries in English and French. Built for AIMS KTT Fellowship Hackathon 2026 · Day 2 · Challenge T2.2
# aims-ktt-day2-g2-t2-2-grant-matcher
# 🚀 Multilingual Grant & Tender Matcher (AIMS T2.2)
## 📌 Overview
This project builds a lightweight system that matches businesses and cooperatives with relevant funding opportunities (grants and tenders).
It is designed for real-world deployment in low-resource environments, supporting:
- 🌍 Multilingual documents (English & French)
- ⚡ Fast retrieval using BM25 + TF-IDF
- 🧠 Profile-based matching
- 📊 Measurable performance (MRR@5, Recall@5)
---
## 🎯 Problem
Small businesses and cooperatives face major challenges:
- Difficulty finding relevant tenders
- Language barriers (English/French documents)
- Information overload from unstructured sources
---
## 💡 Solution
We built a system that:
1. Parses tender documents (PDF, HTML, TXT)
2. Extracts structured information (sector, region, budget, deadline)
3. Matches tenders to business profiles
4. Ranks the most relevant opportunities
5. Generates short summaries
---
## 🧠 System Pipeline
Parse → Extract → Index → Match → Rank → Summarize
### Matching Logic
- BM25 ranking (primary retrieval)
- TF-IDF scoring (support)
- Sector and region boosting
- Cross-lingual normalization (FR → EN)
---
## 📊 Results
| Metric | Score |
|----------|--------|
| MRR@5 | 0.7167 |
| Recall@5 | 0.5667 |
👉 Significantly above random baseline
---
## 🧪 Evaluation
Run locally:
```bash
python evaluate.py
```
Or explore:
- eval.ipynb for reproducible evaluation
---
## 🖥️ Live Demo
👉 Hugging Face Space
huggingface.co
Features:
- Select business profile
- View ranked tenders
- Interactive UI
---
## 🧑💼 Product Design (Village Agent)
Designed for real-world deployment:
- 📱 WhatsApp audio delivery
- 🌍 Multilingual support
- 📡 Low-bandwidth environments
- 👥 Cooperative-focused access
See: village_agent.md
---
## 📁 Project Structure
.
├── matcher.py
├── evaluate.py
├── data_generator.py
├── eval.ipynb
├── dataset/
├── summaries/ …