Inspiration

Traditional medicine in South Asia (Ayurveda, Unani, Siddha, Sowa-Rigpa) depends on plants harvested from the wild, and some of the best known, like jatamansi, kuth and kutki, are already threatened by overharvesting. When we checked how many of the region's medicinal plants have a usable IUCN Red List assessment, the answer was only 40%. An unassessed plant is invisible to Red List-based policy, CITES trade rules and conservation funding. Assessments take scarce expert time, so we asked: can open data tell assessors where to look first?

What it does

RedRoot screens all 1,319 medicinal plants with recorded uses in South Asia and produces:

  • a priority list: 103 unassessed species screened as likely threatened, each with an uncertainty band
  • a harvest watchlist: 51 heavily used species whose range looks safe but whose profile matches the plants range-based screening misses
  • a species explorer for every plant: IUCN status and where it came from, the model score with the four factors that drive it, a calibrated "share of similar species that are threatened", range figures, an occurrence map and a printable one-page assessor sheet

How we built it

  1. Species list: every plant with a South Asian record in Dr. Duke's Ethnobotanical Database (USDA, CC0), matched strictly to the GBIF Backbone Taxonomy: 1,560 names became 1,319 accepted species.
  2. Labels: IUCN categories via GBIF, plus a taxonomic reconciliation step (see Challenges).
  3. Occurrences: GBIF Maps API vector tiles (about 2.4 km grid), filtered to each species' native range from Kew's World Checklist of Vascular Plants.
  4. Features: 30 per species, covering range size (extent of occurrence, area of occupancy), geography, sampling effort and recency, life form and climate. Medicinal-use data is deliberately not a model input.
  5. Model: gradient-boosted trees (scikit-learn) trained on 1,619 IUCN-assessed plants native to the Indian subcontinent, compared with the standard IUCN criterion-B rule. A 25-model bootstrap ensemble gives uncertainty bands.
  6. Validation: 5-fold cross-validation grouped by plant family, repeated over 5 seeds, so every score comes from families the model never saw. The screening threshold maximises Youden's J on out-of-fold predictions:

$$t^* = \arg\max_t \big(\text{sensitivity}(t) + \text{specificity}(t) - 1\big) = 0.29$$

  1. Ranking: priority balances risk and how much people rely on the plant, through a weight \( w \) that users set on the website:

$$\text{priority} = P(\text{threatened}) \times \big((1-w) + w \cdot u\big)$$

where \( u \) is the species' use percentile.

  1. Explanations and calibration: exact TreeSHAP values give each species' score drivers, and an isotonic map, checked across held-out families, turns scores into observed shares of threatened species.
  2. Website: a static site (HTML, JavaScript, D3, Leaflet) on GitHub Pages, with no backend. The whole pipeline rebuilds from scratch in about an hour.

Results

  • ROC-AUC 0.912 ± 0.004 on unseen families, against 0.884 for the criterion-B rule. At the screening threshold, false alarms drop from 866 to 170 while 83% of threatened species are still caught.
  • Decision value: working down RedRoot's out-of-fold ranking, the top 100 species hold 97 threatened ones, against 84 for the range rule and about 27 at random. Finding half of all threatened species takes 243 assessments instead of 283 or 810.
  • Calibration error 0.016 for the reported share (0.052 for the raw score).

Challenges we ran into

  • Synonyms hide threatened plants. Kuth is Critically Endangered as Saussurea costus, but GBIF's accepted name, Dolomiaea costus, returns "Not Evaluated". We recovered 45 hidden assessments, 6 of them threatened. A naive "any synonym" rule was dangerous, though: it would have made ashwagandha Critically Endangered through a Cape Verde endemic. We transfer status only from homotypic synonyms (the same species placed in another genus), and logged and rejected 22 unsafe matches.
  • Cultivation inflates ranges. 99% of Madagascar periwinkle's records lie outside its native range. Without the native-range filter, cultivated plants look safe.
  • Too few labels. Only 43 assessed medicinal species are threatened, so we trained on the whole regional flora instead.
  • Leakage. Related species share traits, so random splits overstate accuracy. Grouping validation by family fixes that.
  • The blind spot. Range-based screening misses 22 of 43 threatened medicinal plants. These are widespread species declining from harvest (median 15.5 recorded uses against 4, p = 0.03). Adding use counts didn't fix it (AUC 0.55), so instead of hiding it we built the separate harvest watchlist.
  • Scale. Paging millions of GBIF records was too slow. Pulling gridded map tiles made it feasible.

Accomplishments that we're proud of

  • An honest validation that beats the standard rule where it matters: far fewer false alarms, and more threatened species found per assessment.
  • Turning a negative result (the blind spot) into a second, separate output instead of a hidden weakness.
  • Every number on the site is reproducible from open data and one metrics file.

What we learned

  • Taxonomy is the hardest data-cleaning problem in biodiversity data.
  • How you split for validation matters as much as which model you use.
  • A clearly reported limitation is more useful to decision-makers than an inflated score.

What's next

  • Add CITES trade and market-price data so the watchlist can detect decline directly.
  • Field-check the top priority species with regional botanists.
  • Add climate exposure for Himalayan species.
  • Extend to other regions (a new country list and region code, then retraining and validation).
  • Co-design the watchlist with harvesting communities, under the Nagoya Protocol and India's Biological Diversity Act.

Built With

Share this project:

Updates

Submission history