About
I’m a software engineer at the AI Lab of Folha de S.Paulo, Brazil’s largest newspaper, and a journalist by training. I build the AI systems the newsroom and its readers use every day: a news monitoring pipeline whose architecture I designed, a public essay grader built on a model I fine-tuned (more than 30,000 users), a declarative video engine, features across the newsroom’s AI platform and the portal journalists use it from, and a reader tool on European citizenship published in 2025. Outside the paper I maintain dolly, an open-source tool that captures how a project is organized as a portable pattern and applies it anywhere, and I’m under contract building an audience-intelligence system for a TV network: a chat grounded only in the station’s own reports, with the page cited.
I came to engineering through journalism. I studied it, then did a master’s in digital communications, and somewhere in there I stopped writing stories and started writing the software that helps other people write them: election data at The Atlanta Journal-Constitution in 2024, then the scraping and formatting pipelines behind two published interactives at Estadão, another of Brazil’s major newspapers. Before that, the LAPD scraping plan for CLEAN, an open-source police-records scraper built at Big Local News, Stanford’s data-journalism program.
The journalism half isn’t decoration. Most of what makes these tools usable is knowing how a newsroom actually runs, and what an editor will or won’t trust. The problems I like sit at the seam between what a model outputs and what a person has to rely on. I work mostly in Python and TypeScript, end to end: the data model and the pipeline, the API, and the page a person actually uses.
Background
- 2019–2023
BA Journalism
University of Southern California
- 2023–2024
MA Digital Communications
Stanford · Big Local News
At Stanford I worked with Big Local News on CLEAN, where I designed and implemented the scraping plan for the LAPD data.
- Jun 2024 – Sep 2024
Data Journalism Intern
The Atlanta Journal-Constitution
Helped collect and format 2024 US election data, and implemented automated newsgathering pipelines.
- Dec 2024 – Apr 2025
Data journalist
Estadão
Built the scraping and data-formatting pipelines behind the published Radar da Criminalidade and Radar do Litoral interactives.
- 2025–
Software engineer
AI Lab · Folha de S.Paulo
I ship full-stack AI features used daily by the newsroom of Brazil’s largest newspaper.
Earlier public work
-
CLEAN
Stanford Big Local News · 2024
An open-source Python scraper library and CLI that harvests police accountability records from California law-enforcement agencies, surfaced publicly through a Los Angeles Times collaboration. During my MA I designed and implemented the scraping plan for the LAPD data.
-
Radar da Criminalidade
Estadão
A published interactive piece from Estadão, another of Brazil’s major newspapers, that maps robberies by street and neighbourhood in São Paulo from public-security data. I built the scraping and data formatting behind it.
-
Radar do Litoral
Estadão
The coastal edition, mapping crime around São Paulo’s beach towns. Same role: scraping and data formatting.
Skills
- Languages
-
- Python
- TypeScript
- JavaScript
- SQL
- AI engineering
-
- LLM pipelines (OpenAI, Anthropic, Gemini via LiteLLM)
- LLM fine-tuning (OpenAI)
- RAG systems
- Structured output (Instructor, Pydantic, Zod)
- Agents with tools (PydanticAI)
- Prompt-injection defence & moderation gates
- Embeddings + pgvector
- Clustering (DBSCAN)
- Evals with precision and cost gates (pydantic-evals)
- Transcription and TTS pipelines
- Spec-driven development with coding agents (plans, review gates, evals)
- Backend
-
- FastAPI
- Celery
- Temporal
- SQLAlchemy/Alembic
- Redis
- PostgreSQL
- Nitro/Hapi
- Frontend
-
- Vue 3 / Nuxt 3
- SvelteKit
- Tauri (desktop shell)
- Client-side document generation (DOCX/PDF)
- Media
-
- OpenTimelineIO
- PyAV/ffmpeg
- MoviePy
- Ops
-
- Docker
- Kubernetes (Kustomize/ArgoCD)
- GitLab CI / GitHub Actions
- OpenTelemetry
- Playwright (end-to-end)
- uv / just / pnpm / Bun