Python Data Science Program
📓 Abrir notebook en GitHub

Clase 232 — Portafolio público en GitHub Pages y presentación

Parte: 8 — Capstones · Fuentes: Chip Huyen, How to build a data science portfolio + Eugene Yan, What I learned from looking at 200 ML portfolios + Mitchell et al., Model Cards for Model Reporting (FAT 2019). ⏱️ Duración estimada: 150 min*.

🎯 Objetivo

Empaquetar los tres capstones (229, 230, 231) en un portafolio público que un reclutador entienda en 30 segundos: sitio en GitHub Pages, demos hosted, blog técnico, deck de presentación y CV. La regla es calidad > cantidad: 3 proyectos terminados con métricas honestas valen más que 10 a medias.

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Componentes del portafolio

# Componente Para qué sirve
1 README pulido por proyecto Es la primera impresión. Badge de CI, hero image, quick start, métricas, limitaciones.
2 Demos hosted (Streamlit/HF Spaces) El reclutador clickea y prueba en 10 seg. Sin demo = invisible.
3 Blog técnico (1 post por capstone) Demuestra que sabés comunicar además de codear. Más diferenciador que el código.
4 Presentación (deck 10-15 slides) Para entrevistas técnicas y meetups. Reusable como guion de video.
5 Video demo (2-3 min) Loom o screencast. Único formato consumible para un reclutador no técnico.
6 CV técnico (1 página) Verbo de impacto + número medible. Linkea a portafolio, no al revés.

📖 Definiciones y características

📂 Recursos

🧪 Ejercicios

  1. MkDocs Material setup: pip install mkdocs-material, mkdocs new portfolio, editar mkdocs.yml con tema material y deployar a gh-pages con mkdocs gh-deploy. Verificar que el sitio carga en https://<user>.github.io/portfolio.
  2. README de capstone: tomar el capstone 229 (NLP) y reescribir el README con hero image, badges (CI, license, Python version), quick start de 30 seg, sección "decisiones técnicas" (3 bullets) y "limitaciones" (3 bullets).
  3. Demo hosted: subir el capstone 230 (CV) a HuggingFace Spaces con Gradio. URL pública compartible.
  4. Blog post técnico: escribir 1 post de 800-1500 palabras sobre el capstone 231 (tabular) siguiendo el outline problema → datos → approach → resultado con un plot → trade-offs → próximos pasos.
  5. Deck: armar 10-15 slides (Google Slides, Marp o reveal.js) presentando los 3 capstones con la regla de "1 idea por slide".

📝 Homework verificable

Sitio en GitHub Pages con:

  1. Index con foto, bio de 3 líneas, links a 3 proyectos, link a blog, link a CV PDF, link a LinkedIn/GitHub.
  2. Una página por proyecto (3 capstones) con README + Model Card + link a demo + link a blog post + link a repo.
  3. Blog con al menos 1 post técnico publicado.
  4. CV PDF de 1 página linkeado desde el index.
  5. Demos: al menos 1 de los 3 proyectos con demo hosted funcionando (Streamlit Cloud o HF Spaces).

Criterio de aceptación: un reclutador no técnico abre el sitio, en 30 segundos sabe (a) tu nombre, (b) qué hacés, (c) ve un proyecto con métricas, (d) puede clickear una demo que funciona. Si falla algún paso → el portafolio no aprueba.

⚠️ Errores comunes

Síntoma Causa y cómo arreglar
README dice "implementé un modelo de ML para clasificar" sin número Cero métricas, cero credibilidad. Fix: poner accuracy/F1/AUC con baseline y mejora absoluta.
10 proyectos en el portafolio, todos a 30% Cantidad sin profundidad. Fix: borrar 7, dejar 3 con README pulido, demo y blog.
Demo rota (link a Streamlit que duerme y nunca despierta) Streamlit free duerme tras 7 días sin uso, tarda 30s en revivir. Fix: añadir nota "primera carga ~30s" o mover a HF Spaces.
Hero image inexistente — README es solo texto Sin imagen no scrollean. Fix: GIF de 5 seg del output, o screenshot del dashboard/plot.
requirements.txt con pandas sin versión Imposible reproducir. Fix: lock file (uv.lock/poetry.lock) committeado.
CV de 3 páginas con responsabilidades genéricas Nadie lee la pág 2. Fix: 1 página, verbos de impacto + números (redujo latencia de inferencia 40% migrando a ONNX).

❓ Preguntas frecuentes

❓ ¿MkDocs Material o Quarto?

MkDocs Material si el sitio es documentación + landing. Quarto si el sitio tiene mucho notebook ejecutable y math (papers, posts técnicos largos con BibTeX). Ambos deployan a GitHub Pages igual.

❓ ¿Necesito dominio propio?

No para empezar. username.github.io funciona perfecto. Comprá dominio (tunombre.dev, ~12 USD/año) cuando el portafolio esté en versión estable y quieras una URL más memorable.

❓ ¿Y si no tengo experiencia laboral todavía?

El portafolio reemplaza la falta de experiencia laboral. 3 capstones con métricas, demo y blog post pesan más en una entrevista junior que "tomé 5 cursos en Coursera".

❓ ¿Subo el código del homework de las clases?

No al portafolio principal. Mantenelos en un repo aparte (python-data-science-program-homework). El portafolio es solo para proyectos pulidos.

❓ ¿Cuánto tiempo dedicar al portafolio antes de aplicar a trabajos?

Regla práctica: 1 semana de pulido full-time tras terminar el capstone 231. Pasada esa semana, aplicás aunque no sea perfecto — el portafolio se itera con feedback real de entrevistas.

🔗 Referencias

🎓 Cierre del programa

Llegaste a la clase 232 de 232. Empezaste con print("hola mundo") y terminás con un portafolio público, tres capstones con métricas honestas, demos hosted y un blog que explica cómo pensás. El programa termina acá; tu trabajo como practicante de data science recién arranca. Lo que sigue no es otro curso — es elegir una vertical (research, applied science, MLE, product DS), buscar a la gente que está haciendo el trabajo que querés hacer, y empezar a contribuir: issues en open source, posts en tu blog, charlas en meetups, un proyecto nuevo cada trimestre. La ventaja competitiva no es saber más algoritmos: es enviar cosas terminadas, medibles y reproducibles. Eso ya lo sabés hacer.

Gracias por llegar hasta acá. Ahora andá a romperla.

⬅️ Volver al índice general · 📚 Índice de Parte 8

📥 Material descargable