Traditional medicine in the Andes has been practiced for thousands of years. But when I tried to find a simple tool that could tell you "what is this plant used for?" with actual scientific backing — nothing existed. So I built one.
The Problem
There are over 28,000 species of vascular plants in the tropical Andes, and indigenous communities have documented uses for thousands of them. But this knowledge lives in three disconnected worlds:
- Ethnobotanical databases (scattered across academic papers)
- Clinical trial registries (PubMed, ClinicalTrials.gov)
- Traditional healer knowledge (oral tradition, local pharmacopeias)
A pharmacist in Lima who wants to know about uña de gato (cat's claw) has to cross-reference multiple sources manually. A patient asking "can I take maca with my blood pressure medication?" gets no answer from Google.
What I Built
An identifier and reference tool covering 250+ Andean and South American medicinal plants. Each entry includes:
- Taxonomy: scientific name, family, common names in Spanish/Quechua/Aymara
- Traditional uses: documented ethnobotanical applications
- Evidence level: rated 1-5 based on available clinical evidence
- Drug interactions: known contraindications with pharmaceuticals
- Dosage ranges: from traditional preparation to standardized extracts
The whole thing runs as a static site — no backend, no database calls. All data is compiled at build time into a single JSON payload.
The Technical Approach
Data Collection
I started with three data sources:
- WHO monographs on medicinal plants — 150+ plants with formal assessments
-
PubMed abstracts — searched
"[plant name] AND (clinical trial OR systematic review)"for each plant - Regional pharmacopeias — Peru's DIGEMID list, Colombia's Vademecum de Plantas Medicinales
For drug interactions, I cross-referenced the Natural Medicines database interaction dataset I'd built previously (592 documented interactions).
Architecture
data/plants.json (250 entries)
→ build script (Node.js)
→ site/plantas/[slug]/index.html (one page per plant)
→ site/api/plants.json (searchable index)
→ site/herramientas/plantas/ (search UI)
Each plant page is pre-rendered HTML with JSON-LD structured data:
{
"@type": "MedicalEntity",
"name": "Uncaria tomentosa",
"alternateName": ["Uña de gato", "Cat's claw"],
"relevantSpecialty": "Phytotherapy",
"study": [
{
"@type": "MedicalStudy",
"description": "Anti-inflammatory activity in rheumatoid arthritis",
"studySubject": { "@type": "MedicalCondition", "name": "Arthritis" }
}
]
}
Search
Client-side fuzzy search using a simple trigram index. No external dependencies.
function search(query) {
const trigrams = getTrigrams(query.toLowerCase());
return plants
.map(p => ({
plant: p,
score: trigrams.reduce((s, t) =>
s + (p.searchIndex.includes(t) ? 1 : 0), 0) / trigrams.length
}))
.filter(r => r.score > 0.3)
.sort((a, b) => b.score - a.score);
}
Users can search by common name (in Spanish, Quechua, or English), scientific name, or health condition.
What Surprised Me
1. Evidence quality varies wildly
Maca (Lepidium meyenii) has 12 systematic reviews. Chiric sanango (Brunfelsia grandiflora) has exactly zero clinical trials but centuries of documented traditional use. How do you rate evidence for a plant that's been used since the Inca empire but never studied in a double-blind trial?
I ended up with a 5-tier system:
- Level 5: Multiple systematic reviews/meta-analyses
- Level 4: At least 1 RCT with >100 participants
- Level 3: Small clinical trials or strong animal studies
- Level 2: Case reports or pharmacological analysis only
- Level 1: Traditional use documented, no clinical research
Most Andean plants sit at Level 1-2. That doesn't mean they don't work — it means they haven't been studied yet.
2. Drug interaction data is critically incomplete
Of the 250 plants in the database, only 47 have documented drug interactions. That doesn't mean the other 203 are safe — it means nobody checked. This is especially dangerous for plants like ayahuasca (contains MAOIs) or sangre de drago (potent anti-inflammatory).
3. Naming is chaos
One plant can have 15+ common names depending on the region. "Muña" in Peru is Minthostachys mollis, but in some areas of Bolivia it refers to a completely different species. Scientific names are the only reliable identifier — but patients don't use scientific names.
I solved this with an alias system that maps all known common names to the canonical scientific name, with region tags.
Performance
The entire site weighs 180KB gzipped (including all 250 plant entries). First Contentful Paint under 1 second. No JavaScript frameworks — just vanilla JS for the search.
Lighthouse scores: Performance 98, Accessibility 96, Best Practices 100, SEO 100.
What's Next
I'm working on adding:
- Interaction cross-checker: "I take metformin and want to try berberine — is that safe?" (builds on the interaction database)
- Photo identification: upload a plant photo, get possible matches (this is hard and will probably be a separate project)
- Quechua language support: plant names and basic descriptions in Quechua
The tool is live at Botánica Andina if you want to try it. The plant data is open — you can grab the JSON and build on it.
If you work with ethnobotanical data or health APIs, I'd love to hear how you handle evidence grading for traditional medicines. It's a genuinely unsolved problem.
Top comments (0)