Contribute
The catalog is only as complete as the people who fill it.
MADRASA currently holds 51 research structures but only 5 education programs. Morocco has far more of both. Every addition is reviewed in public, against an official source.
Share what is missing
Send a proposal to the MAIR team without a GitHub account, or contribute through the project’s GitHub workflow.
Suggest an entry
Easiest · takes two minutes
Fill in a short GitHub issue template with the name, host institution and official link. A maintainer turns it into a catalog entry.
Open a submission issueOpen a pull request
For contributors comfortable with Git
Edit the JSON directly, run the validator locally, and submit. Your entry lands in the dataset exactly as you wrote it.
Read CONTRIBUTING.mdInclusion rules
What gets accepted
Taken directly from the project’s contributing guide · these are the rules maintainers actually apply at review.
Include
- Offered by a Moroccan university, school, faculty, research center or recognised training institution.
- Clearly related to AI, machine learning, data science, big data, robotics, computer vision, NLP, bioinformatics, AI-adjacent cybersecurity, digital health or smart systems.
- A Moroccan research structure with visible AI-related teaching, supervision, projects or publications.
- A doctoral structure, lab, center or team that supervises AI-related research · even if its official name is broader than AI.
Leave out
- Generic computer science programs with no visible AI, data or research component.
- Private training offers without a reliable source.
- Expired calls, unless marked as nonactive.
- Entries without at least one URL.
- Personal opinions, rankings or unverified claims.
Adding an entry, step by step
Check it is not already listed
Search the catalog first · entries are deduplicated by name, city and host institution.
Find an official source
A university, school, lab or ministry page. Official PDFs on an institution domain count. Secondary sources only when nothing official exists.
Add one JSON object
Programs go in catalog/education_programs.json, labs and centers in catalog/research_structures.json. Keep list fields as lists.
Set last_checked to today
Every entry records the date a human last confirmed the source, in YYYY-MM-DD form.
Run the validator
python scripts/validate_catalog.py must pass, and python scripts/build_stats.py regenerates the counts if they changed.
Open a pull request
CI re-runs validation on every pull request. A maintainer reviews the source before merging.
Run the checks locally
# validate every record against the schema
python scripts/validate_catalog.py
# regenerate api/stats.json and the badges
python scripts/build_stats.py
# confirm the generated files are in sync
python scripts/build_stats.py --check
# preview this site locally
python scripts/serve.pyThe same validator runs in CI on every pull request, so a failing check locally means a failing check there too.
Five of Morocco’s twelve regions have no entry at all yet. Southern and eastern institutions are the biggest known gap.