Asistente personal de proyectos con memoria persistente, búsqueda semántica y sincronización con Google Calendar. El núcleo es gestión de proyectos; la búsqueda de empleo vive como módulo opcional dentro del mismo sistema.
Autor: Victor — Full Stack (MERN) · Inglés C2 · Remoto US/global
Estado: Fase 1 — base técnica y documentación (mayo 2026)
Estas reglas mandan sobre cualquier decisión de stack o UI.
El producto debe poder usarse y escalarse sin quemar dinero en APIs. Objetivo: margen alto si se vende.
| Uso | Proveedor recomendado | Coste |
|---|---|---|
| Desarrollo / uso personal | Ollama (local) | $0 |
| Chat en la nube (opcional) | Groq (tier gratis) | $0–bajo |
| Calidad puntual (demo) | Anthropic | Solo si hace falta |
| Embeddings | Local (Ollama) o OpenAI con cache | Preferir local |
| Base de datos | Postgres self-hosted o Neon free | $0 al inicio |
| Hosting web | Vercel free / VPS propio | $0–bajo |
BYOK (Bring Your Own Key): en una versión vendible, el cliente pone sus keys o corre todo en su servidor. Tú no pagas sus tokens.
Nada obligatorio de pago para el flujo core: proyectos, tareas, notas, chat con modelo local.
La web (Next.js) es el primer cliente, no el único cerebro. Toda la lógica de negocio vive detrás de API JSON estable para poder envolverla después.
| Plataforma | Enfoque | Cuándo |
|---|---|---|
| Web / PWA | Next.js actual | Ahora |
| Windows / Linux / macOS | Tauri o PWA instalable | Fase 5 |
| Android / iOS | Capacitor o Expo consumiendo la misma API | Fase 5 |
| ESP32 | Periférico (botón, sensor, webhook), no motor del LLM | Opcional |
No duplicar lógica en cada app: un backend, N clientes.
El usuario es dueño de sus datos. Desde el inicio, planear:
- Export JSON completo (proyectos, tareas, notas, chat).
- Export CSV para tareas y módulo empleo.
- Import del mismo formato (recuperación o migración).
Sin lock-in: si dejan de pagar, se llevan todo.
- Self-hosted: Docker + Postgres + Ollama en el servidor del cliente.
- SaaS barato: multi-tenant en un VPS, BYOK para IA.
- Freemium: core gratis (local), sync/nube de pago.
Registra en qué vas en cada proyecto, qué sigue, qué te bloquea y cuándo toca retomar algo. El chat usa contexto guardado en base de datos; las notas se indexan con embeddings para búsqueda por significado, no solo por palabra exacta.
No sustituye Notion ni LinkedIn. Complementa tu flujo: un producto propio que usas a diario y que puedes mostrar en portafolio y entrevistas.
Clientes (presente y futuro)
├── Web / PWA → Next.js (ahora)
├── Desktop → Tauri → misma API (futuro)
├── Mobile → Capacitor / Expo → misma API (futuro)
└── ESP32 → webhook → API (opcional, sin LLM en chip)
API REST (Next.js Route Handlers)
├── /api/projects
├── /api/tasks
├── /api/chat
├── /api/search
├── /api/export → JSON / CSV (planificado)
└── /api/calendar → Fase 3
Datos
└── PostgreSQL + pgvector
IA (siempre intercambiable por env)
├── LLM → ollama (default) | groq | anthropic
├── Embeddings → ollama | openai
└── Búsqueda → pgvector
Auth
└── Google OAuth (Calendar solo en Fase 3)
Regla: ningún componente de UI importa Prisma ni llama al LLM directo; solo habla con /api/*.
| Fase | Alcance | Tiempo orientativo |
|---|---|---|
| 1 — Core | Auth Google, CRUD proyectos/tareas, chat con contexto, notas + embeddings | 2–3 semanas |
| 2 — Inteligencia | Búsqueda semántica en historial, sugerencias de próximos pasos, alertas por inactividad | 1–2 semanas |
| 3 — Calendario | Crear eventos desde chat (“recuérdame el viernes 10:00”) | 1 semana |
| 4 — Portafolio | Deploy (Vercel + Neon), README público, demo en video ~2 min | 1 semana |
| 5 — Multiplataforma | PWA instalable, Tauri (Win/Linux/mac), export/import, doc self-host | según demanda |
Fase actual: 1b. UI con shadcn, rutas /login, /, /projects, /tasks, /chat, chat con streaming (AI SDK + Ollama).
Secundario respecto al core. Mismo stack; campos y vistas orientados a vacantes, follow-ups y rutina diaria.
| Prioridad | Canal |
|---|---|
| Alta | LinkedIn Jobs, Arc.dev, RemotoJOB, Talently, GetManfred |
| Media | Computrabajo, OCC, Glassdoor (salarios y research) |
| Extra | Workana (freelance → proyectos reales en portafolio) |
Arc.dev: un filtro técnico; si pasas, empresas US/EU contactan por tu stack. Encaja con MERN + inglés C2.
| Bloque | Tiempo | Acción |
|---|---|---|
| A — Aplicaciones | 30–45 min | 5 LinkedIn, 2 Arc, 2 RemotoJOB, 1 OCC/Computrabajo |
| B — Networking | 20 min | Mensajes a recruiters, 1 comentario técnico, 1 post/semana |
| C — Portafolio | 30–60 min | Mejorar proyecto, feature con IA, documentar |
| D — Producto | 20 min | Avanzar MindTrack o integrar una API de IA |
Mínimo en día corto: 3 aplicaciones (Bloque A) + 1 commit o feature en MindTrack (Bloque D).
saved → applied → screening → interview → offer → rejected → ghosted
Campos: empresa, rol, URL, plataforma, salario, remoto, recruiter, followUpAt, notas.
Actualiza el CV dentro de 48 h de cada sprint con algo demostrable. No esperes a tener la app terminada.
- Aplicaciones full stack con React, Node, Express y MongoDB/PostgreSQL
- Integración de APIs de IA en flujos de desarrollo
- Features end-to-end con foco en rendimiento y mantenibilidad
- Inglés C2
- “Primera oportunidad”, “sin experiencia”, “proyectos escolares”
MindTrack — Gestión de proyectos con memoria persistente, chat contextual y búsqueda semántica (Next.js, PostgreSQL/pgvector, APIs LLM).
- ¿Hay URL de demo o repo público?
- ¿El README explica el problema y el stack?
- ¿El CV menciona una métrica o resultado concreto?
- ¿LinkedIn refleja el mismo mensaje que el CV?
| Capa | Tecnología |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript, Tailwind 4 |
| Backend | API Routes (App Router) |
| ORM | Prisma |
| DB | PostgreSQL + extensión vector (pgvector) |
| Auth | NextAuth.js + Google |
| LLM | Ollama (default) / Groq / Anthropic vía LLM_PROVIDER |
| Embeddings | Ollama local o OpenAI (EMBEDDING_PROVIDER) |
| Clientes futuros | Tauri, Capacitor/Expo (misma API) |
Ver prisma/schema.prisma.
- User — cuenta Google
- Project — nombre, descripción, estado,
type(general|job_hunt) - Task — título, estado, prioridad,
dueAt, bloqueos - Note — texto libre, ligado a proyecto o tarea
- Embedding — vector + referencia a nota/tarea
- ChatMessage — historial por proyecto
- JobApplication — extensión Fase 1 módulo empleo (empresa, rol, URL, plataforma, estado, follow-up)
mindtrack-ai/
├── README.md
├── .env.example
├── prisma/schema.prisma
├── src/
│ ├── app/
│ │ ├── (auth)/login/
│ │ ├── (dashboard)/ # /, /projects, /tasks, /chat
│ │ └── api/
│ ├── components/ # shadcn + sidebar, chat, forms
│ └── lib/
└── package.json
Copia .env.example a .env.local y completa los valores.
| Variable | Uso |
|---|---|
DATABASE_URL |
PostgreSQL (Neon local o cloud) |
AUTH_SECRET |
Secreto NextAuth (openssl rand -base64 32) |
AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET |
OAuth Google |
LLM_PROVIDER |
ollama (default) | groq | anthropic |
OLLAMA_BASE_URL |
Ej. http://localhost:11434 |
OLLAMA_MODEL |
Ej. llama3.2 |
GROQ_API_KEY |
Opcional |
ANTHROPIC_API_KEY |
Opcional |
EMBEDDING_PROVIDER |
ollama | openai |
OPENAI_API_KEY |
Solo si embeddings = openai |
GOOGLE_CALENDAR_* |
Fase 3 |
npm install
npx prisma generate
npx prisma db push # primera vez / cambios de schema
npm run dev # http://localhost:3000
npm run build
npm run lintEn PostgreSQL habilita la extensión antes de db push:
CREATE EXTENSION IF NOT EXISTS vector;- Costo primero: antes de añadir un SaaS de pago, comprobar si Ollama/local o BYOK lo resuelve.
- API primero: lógica en
src/lib/+ rutas; la UI solo consume JSON. - Revisa la fase actual; no adelantar Calendar o apps nativas sin cerrar el core web.
- Cada sprint grande: actualizar CV si hay demo o métrica nueva.
- Export JSON/CSV antes de features “bonitas” si compite con portabilidad.
Uso personal. Código público opcional para portafolio.