Universidad Nacional del Altiplano — Puno, Perú
Eleven research codebases, nearly all of them written and maintained single-handedly, across four fields. Each one ships the analysis that produced a paper's numbers: fixed seeds, pinned versions, checksummed inputs, and pipelines that stop rather than guess. Several also ship the mistakes I caught along the way — because a wrong result that looks right is the most expensive thing in empirical work, and the only defence is showing your hand.
11 codebases · 4 fields · 65,528-case benchmark · 866 textiles · 18 countries · 160 annotated abstracts
|
**Which GIS bugs produce results that look perfectly plausible?**
A line-of-sight engine you can inject defects into, a benchmark audited by mutation analysis, and a synthetic landscape where ground truth is true by construction. NumPy only — no black boxes. |
**Not whether an LLM annotates well — whether its disagreement is distinguishable from
a second human's.**
160 Spanish thesis abstracts, two independent human annotators, three open-weight models × three runs, per-variable Δκ with paired bootstrap. |
|
**Peru certifies and ranks its researchers. Does the ranking survive contact with
OpenAlex?**
Three packages: a rung-by-rung audit of the ladder, field-level coverage, and a map of the certified and uncertified AI workforce.
|
**Every record-linkage tool built for "First Last" quietly fails on "Mamani-Calisaya".**
A three-tier protocol and a 65,528-case synthetic benchmark to prove it, and to measure what it costs. |
Science studies & research evaluation
| Repository | Hook |
|---|---|
| renacyt-certification-ladder | Does each rung of Peru's researcher ladder mean what it claims? |
| renacyt-field-coverage | Which fields does the national registry actually see? |
| renacyt-openalex-ai-peru | Peru's AI researchers — the certified ones and the invisible ones |
| hispanic-name-linkage | Record linkage that does not break on two surnames |
| human-llm-abstract-quality | Human vs. model disagreement, measured against human vs. human |
Computational archaeology
| Repository | Hook |
|---|---|
| silent-failures-viewshed | Visibility bugs that pass every eye test and every reviewer |
| intervisibilidad-chucuito | Sightlines between Chucuito sites vs. three null models — with the counterexamples that exposed three artefacts |
| simetria-textil-andina | Symmetry groups across 866 Andean textiles from open museum collections |
Public policy & political economy
| Repository | Hook |
|---|---|
| bunching-umbral-peru | Contracts pile up just under Peru's tender threshold — and move when it moves |
| automation-repression-latam | Automation and repression across 18 Latin American countries |
Applied machine learning
| Repository | Hook |
|---|---|
| sleep-staging-temporal-context | Compact sleep stagers on Sleep-EDF-78, scored subject-disjoint with published folds |
Teaching
| Repository | Course |
|---|---|
| ic-2muestras-shiny | Biostatistics — MSc Public Health, EPG-UNAP |
| SOFTII | Software Engineering II — FastAPI, PostgreSQL, JWT, React |
Fail loudly, never impute. A missing or malformed input stops the pipeline. No silent default, no carrying on with a hole in the data.
Every byte accounted for. A manifest records the SHA-256 of each raw input, so you can prove you are analysing what I analysed.
Decisions are configuration, not folklore. Every debatable methodological choice lives in a config file with its default documented and its alternative named.
Tested against the literature. Estimators are checked against established implementations and worked examples from published papers — not against themselves.
Licensed honestly. Code and data carry separate licences, and material I do not hold rights to is never redistributed: persistent identifiers point to the source instead.

