Bowen Chen
Web developer
I'm a first-year DAW student in Madrid, previously working in systems administration — Linux, Windows Server, virtualisation, scripting. That taught me to care about how things run, not just how they look. I'm currently building Prism, a dashboard that makes CDC and WHO epidemiological data queryable in plain language.
Work
A dashboard that makes CDC and WHO epidemiological data queryable in plain language.
- Problem
- CDC and WHO publish authoritative epidemiological data across dozens of endpoints, in formats built for specialists. Answering something as simple as how flu activity in Spain compares to last year means knowing which endpoint holds it and how to parse it.
- Approach
- A FastAPI backend that ingests CDC and WHO data, chunks and embeds it into a pgvector store, and answers natural-language queries by retrieving relevant context and passing it to the Claude API. The backend runs; retrieval, ingestion and the dashboard are in progress.
- Decision
- Retrieval over fine-tuning
Epidemiological data changes weekly, so a fine-tuned model goes stale between updates and costs a retraining cycle to correct. Retrieval keeps the model fixed and the data live, and every answer can cite the dataset and fetch timestamp it came from.
- Stack
- Python
- FastAPI
- PostgreSQL + pgvector
- Claude API
- Next.js
- Docker
This site — a work register built from scratch.
- Problem
- My previous portfolio was an unmodified Bootstrap template with placeholder text and no real projects. It communicated nothing about how I work.
- Approach
- Rebuilt as a statically generated Next.js site with a single typed content file as the source of truth, so publishing a new project is one commit and the layout can never drift out of sync with the data.
- Decision
- A register layout instead of a card grid
A card grid advertises how much work you have; with three projects it reads as empty space. A dated register reads as a complete record at any length, so the layout stays honest as the site grows.
- Stack
- Next.js 16
- TypeScript
- Tailwind CSS v4
- Vercel