Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Job Offer Analyzer

Proyecto de portafolio en Python para registrar ofertas laborales, extraer habilidades desde sus descripciones y generar reportes exportables que sirvan como insumo para análisis manual de CV, LinkedIn y portafolio.

Resuelve el problema que se presenta cuando se revisan muchas ofertas laborales, las habilidades solicitadas quedan dispersas en textos largos y se vuelven difíciles de comparar. Este proyecto centraliza las ofertas, detecta habilidades técnicas y blandas mediante un diccionario configurable, calcula estadísticas y genera reportes en formatos simples para análisis posterior. El sistema está pensado como una herramienta de apoyo: no evalúa automáticamente al candidato ni reemplaza el análisis manual.

Características Principales

  • API backend con FastAPI.
  • Persistencia inicial con SQLite y SQLAlchemy.
  • Registro, listado, consulta y eliminación de ofertas.
  • Importación masiva desde CSV.
  • Extracción de habilidades con diccionario configurable.
  • Estadísticas de habilidades detectadas.
  • Exportación de reportes en Markdown y CSV.
  • Reporte Markdown orientado a análisis manual con ChatGPT.
  • Frontend mínimo con Streamlit para demo del MVP.
  • Pruebas automatizadas con pytest.

Lo que No Hace

  • No hace scraping.
  • No usa IA integrada dentro de la aplicación.
  • No calcula match automático del candidato.
  • No compara perfiles personales contra ofertas.
  • No incluye autenticación.
  • No incluye dashboard avanzado.

Stack Tecnológico

  • Python 3.11+
  • FastAPI
  • SQLite
  • SQLAlchemy
  • Pydantic
  • Streamlit
  • httpx
  • pytest

Arquitectura

app/
  main.py
  database.py
  models.py
  schemas.py
  crud.py
  routers/
    offers.py
    statistics.py
    exports.py
  services/
    skill_extractor.py
    statistics_service.py
    export_service.py
    skill_dictionary.json
frontend/
  streamlit_app.py
tests/
docs/
sample_data/
README.md
requirements.txt

Instalación

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Si tu sistema expone Python 3 como python, también puedes usar:

python -m venv .venv

Ejecutar Backend

source .venv/bin/activate
uvicorn app.main:app --reload

La API queda disponible en:

http://127.0.0.1:8000

Documentación interactiva:

http://127.0.0.1:8000/docs

Ejecutar Frontend Streamlit

En otra terminal:

source .venv/bin/activate
streamlit run frontend/streamlit_app.py

Streamlit normalmente queda disponible en:

http://localhost:8501

El frontend consume el backend usando API_BASE_URL. Si no se define, usa http://127.0.0.1:8000.

API_BASE_URL=http://127.0.0.1:8000 streamlit run frontend/streamlit_app.py

Demo Rápida

El proyecto incluye un CSV de ejemplo:

sample_data/offers_sample.csv

Flujo recomendado:

  1. Levanta el backend.
  2. Levanta el frontend Streamlit.
  3. Importa sample_data/offers_sample.csv.
  4. Revisa la lista de ofertas y estadísticas.
  5. Exporta el reporte para ChatGPT.

Guía completa:

docs/demo.md

Uso por API

Crear una oferta:

curl -X POST http://127.0.0.1:8000/offers \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Backend Developer",
    "company": "Acme",
    "location": "Remote",
    "modality": "Remote",
    "source": "LinkedIn",
    "url": "https://example.com/job",
    "target_area": "Backend",
    "raw_description": "We need Python, FastAPI, PostgreSQL, Docker and strong communication."
  }'

Importar ofertas desde CSV:

curl -X POST http://127.0.0.1:8000/offers/import-csv \
  -F "file=@sample_data/offers_sample.csv"

Consultar estadísticas:

curl http://127.0.0.1:8000/statistics/skills

Exportar reportes:

curl http://127.0.0.1:8000/exports/markdown
curl http://127.0.0.1:8000/exports/csv
curl http://127.0.0.1:8000/exports/chatgpt-report

Formato CSV

Columnas soportadas:

title,company,location,modality,source,url,target_area,raw_description

Campos obligatorios:

  • title
  • company
  • raw_description

Las filas con campos obligatorios vacíos se omiten y se reportan en la respuesta del importador.

Diccionario de Habilidades

El diccionario configurable está en:

app/services/skill_dictionary.json

Categorías iniciales:

  • languages
  • backend
  • databases
  • devops
  • testing
  • soft_skills

Pruebas

python3 -m pytest

Roadmap

  • Añadir filtros por área objetivo, modalidad y fuente.
  • Añadir endpoints para consultar habilidades detectadas por oferta.
  • Mejorar normalización de sinónimos y variantes de habilidades.
  • Añadir migraciones con Alembic.
  • Evaluar Docker en una fase posterior.

About

Proyecto de software para el registro de ofertas laborales, la extracción de habilidades desde sus descripciones y la generación de reportes exportables que sirvan como insumo para análisis manual de CV, LinkedIn y portafolio.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages