Guided, plain-language FAIR data-maturity self-assessment — built as a reusable standard-to-plain-language engine (ACE Uganda)
fair-maturity-copilot
A guided, plain-language tool that helps research organizations assess how
"FAIR" their data is — Findable, Accessible, Interoperable, and Reusable —
without needing a data librarian on staff. You answer plain-language questions
about your dataset, get a score, and the tool turns every weak spot into a
specific, actionable next step.
## What it does
**For a single dataset** — 12 plain-language questions based on the RDA FAIR
Data Maturity Model. You answer each one (with worked examples shown
alongside), get a score out of 100, and a plain-language report explaining
what's working and what to fix — with concrete steps for each gap. It also
generates an ordered action plan and offers a chat-based mentor to coach you
through fixing things one step at a time.
**For multiple sites in one initiative** (e.g. a multi-center consortium) —
6 questions about whether your sites describe their data consistently enough
to combine and compare: shared field names, a common data dictionary,
standardized categories, a way to link records across sites. A "we haven't
started this yet" answer is a real option here — it doesn't count against
your score, because being early is normal, not a failure.
See the in-app `/about` page (or `docs/WHY-THIS-TOOL.md`)
for how this tool fits alongside other FAIR resources like F-UJI, the FAIR
Cookbook, and FAIR-DSM.
## Quick start
You'll need **Python 3.12+**, **Node.js 18+**, and an **LLM provider** (see
below). The app runs as two servers: a Python backend and a Next.js frontend.
### 1. Set up the backend
```bash
cd backend
python -m venv .venv
./.venv/Scripts/python.exe -m pip install -e ".[dev]" # Windows; on macOS/Linux use .venv/bin/python
cp .env.example .env
```
Now edit `backend/.env` and fill in two things:
- **`DATABASE_URL`** — a Postgres connection string. The easiest option is a
free Neon database (takes 2 minutes to set up). For
quick local testing you can also use `sqlite:///./dev.db`.
- …