The general-purpose language for data, scripting and backends.
Workhorse language: ETL, scraping, models and automation. Present in 8 projects.
Where it was used 09
- Metal Globe
The scraper and pipeline that turn Encyclopaedia Metallum into the JSON the globe consumes.
- Radar de Precios
A modular pipeline with one adapter per chain and YAML-driven configuration.
- Monitor de Commodities
Daily collection of futures prices and exchange rates.
- Predictor de Ingresos e Informalidad
The whole pipeline, from microdata to deployed model.
- Atlas Botánico del Perú
The whole pipeline, from the DOI-backed download to the eight marts.
- OpenMetadata Warehouse
Connector and lifecycle scripts, kept as code instead of manual runbooks.
- Open Data Repository
The collection and cleaning tools behind each dataset.
- Records Search
Indexes and normalises records for search.
- Signal Agent
The collectors, the schema migrations and the validator that rejects a malformed judgement before it reaches the database.
Web & product
Metal Globe
I put 195,679 metal bands on a 3D globe, filterable by country, genre and decade.
three.js · 4,408 → 496 lines, split into data.js · lazy-loaded flags · static
Markets & comparators
Radar de Precios
I match 296 medicines across Peruvian pharmacy chains by reading their own undocumented APIs.
Python adapters · Algolia/SFCC APIs · three-layer matcher · static comparison table
- Python
- SC Scraping
- EN Entity matching
- BE BeautifulSoup & selectolax
- JavaScript
Markets & comparators
Monitor de Commodities
I track the sugar-crude spread against a timeline of 6 dated events that explain the jumps.
Live · Usable Machine learning & AI
Predictor de Ingresos e Informalidad
I compared 9 model specifications to predict labor income and informality risk in Peru, from the ENAHO household survey.
scikit-learn · nine-model tournament · statsmodels intervals · Streamlit
- scikit-learn
- pandas
- Streamlit
- ST statsmodels
- Python
Science & bioinformatics
Atlas Botánico del Perú
I turned raw GBIF data into a tree of Peru's 21,585 accepted plant species that opens in the browser.
DuckDB · 1.28M GBIF records · ten-stage ETL · static marts, no backend
- DuckDB
- ET ETL
- Astro
- Apache ECharts
- Python
- +2
Infrastructure & servers
OpenMetadata Warehouse
I connected Claude Code to an OpenMetadata service running over an Oracle and SQL Server warehouse, so ingestion, lineage and server lifecycle are managed as code.
OpenMetadata · Oracle · SQL Server · Python · Docker
- OP OpenMetadata
- OR Oracle
- SQ SQL Server
- Python
- Docker
Data & public sector
Open Data Repository
I'm turning a folder of scraping and cleaning scripts into a static catalogue anyone can search, preview and use offline.
Python · SQLite · static site, no server
Data & public sector
Records Search
A search tool over service records, built so the right one turns up by content instead of a manual folder hunt.
Python · SQLite · search index
Agents & AI automation
Signal Agent
A market monitor where the model has to write a falsifiable prediction before it can be scored — 3 open, 0 resolved, the first ones due January 2027.
Python · GitHub Actions · SQLite
- Python
- GitHub Actions
- SQLite
- SC Scraping
- LL LLMs & agents
Same category