# Arquitectura IA — JobsWorld

## Cómo lo dejo (recomendación)

| Pieza | Dónde | Motivo |
|-------|--------|--------|
| **Runtime JobsWorld** | EQUIPITELLO `:8010` (tray) | Scrapers, sesión, PWA y Tailscale locales |
| **Ollama (LLM)** | Lab `192.168.1.16:11434` | GPU/modelos centralizados |
| **Cursor Bridge** | EQUIPITELLO `:8095` | Solo CV premium bajo demanda (`LLM_PROVIDER=cursor`) |
| **Supervisor multiagente** | Lab `:8787` | No es dependencia crítica del día a día de JobsWorld |

No hace falta migrar JobsWorld al `.16` si la IA ya está en el lab.

## Arranque Windows

- Clave `HKCU\...\Run\JobsWorldTray` → `scripts\tray\jobsworld_start.ps1` → `jobsworld_tray.js`
- El tray arranca **un** uvicorn (`0.0.0.0:8010`) y sirve API + `frontend/dist`
- Menú: Abrir / Health / Arrancar / Reiniciar / Detener

## Flujo de IA

```
UI (React) → API FastAPI :8010 → ai_cv._chat()
                                    ├─ LLM_PROVIDER=ollama (por defecto)
                                    │     → OpenAI-compat → http://192.168.1.16:11434/v1
                                    │     → modelo qwen2.5:7b
                                    └─ LLM_PROVIDER=cursor
                                          → bridge :8095 → fallback Ollama
```

## Qué ayuda la IA en JobsWorld

| Función | Endpoint / UI | Uso del lab |
|---------|---------------|-------------|
| Mejorar CV | `POST /api/cvs/improve` | Reescribe Markdown ATS sin inventar datos |
| Adaptar CV a oferta | `POST /api/cvs/adapt` | Keywords + carta |
| Prep entrevista | `/api/intelligence/.../interview` | Preguntas por oferta |
| Simulador entrevista | `interview-sim` | Scoring de respuestas |
| War Room / digest / career / negotiate | `/api/intelligence/*` | Mezcla reglas + LLM puntual |
| Health | `/api/health`, Admin Health | `ollama_ok`, modelos listados |

## Variables clave (`.env`)

```env
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://192.168.1.16:11434/v1
OLLAMA_MODEL=qwen2.5:3b
CURSOR_API_ENABLED=true   # disponible, no se usa primero
```

**Nota modelos lab:** `qwen2.5:7b` en el lab ha respondido texto corrupto (tokens basura). JobsWorld usa **`qwen2.5:3b`** (estable). Si quieres 7b de nuevo: en el lab `ollama pull qwen2.5:7b` y cambiar `OLLAMA_MODEL`.

**Importante:** con `LLM_PROVIDER=auto` + Cursor activo, antes se esperaba al bridge (~180s) y las mejoras de CV “parecían rotas”. Ahora el default es `ollama` (lab directo).

## Comprobación rápida

```powershell
Invoke-RestMethod http://127.0.0.1:8010/api/health
# ai.ollama_ok = true, provider = ollama, base = 192.168.1.16:11434
```
