# Catálogo Tracking — Airtable Products

> Sprint Q2 · Frente Catálogo. Source of truth comercial para los productos publicados + pipeline.
>
> Última actualización: 2026-05-12

---

## Estado actual

### Los 9 productos publicados (marketplace público bewpro.com)

Todos en `Ready / Published / Tier asignado` en Airtable ✅:

| Slug | Tier | Reseller_Ready | Dev_Status | Catalog_Status |
|------|------|----------------|------------|----------------|
| foundations-ong | Standard | Ready | Ready | Published |
| creative-video-editor | Pro | Ready | Ready | Published |
| corporative | Standard | Ready | Ready | Published |
| construction | Pro | Ready | Ready | Published |
| art-design | Pro | Ready | Ready | Published |
| law-firm-digital | Pro | Ready | Ready | Published |
| real-estate | Premium | Ready | Ready | Published |
| restaurant-bar | Standard | Ready | Ready | Published |
| personal-brand | Pro | Ready | Ready | Published |

Todos validados también por `bewpro:certify-product --all` → **9/9 a 100/100 market-ready**.

### Pipeline en Airtable

Hay **30 records totales** en la tabla `Products` → **21 productos en pipeline** esperando publicarse (o requieren decisión).

---

## La tabla `Products` (Airtable BewPro 2.0)

**ID**: `tbleVlExtIu9ONsQd` · **42 campos** actuales · base `appRxvpzqCmNsw2JN`

### Campos existentes agrupados por bloque

**Identidad & relacional**:
- `Name`, `Slug`, `Tier` (Pro/Premium/Standard/Starter), `Price_USD`
- `Industry`, `Modules`, `Module_Bundle`, `Template` (links)
- `Projects`, `Shop Products 2` (links)

**Status global**:
- `Catalog_Status` (Published / Review / Draft)
- `Dev_Status` (Not Started / In Progress / Needs Update / Ready)
- `Env_Status` (Not Started / In Progress / Active)
- `Reseller_Ready` (Ready / Preview / Coming Soon / Paused)
- `Launch_Ready` (formula calculada) · `Launch_Date`

**Template tracking** (Bloque 1 del estándar):
- `Template_Level` (A / A- / B+ / B / C+ / C / N/A)
- `Header_Status`, `Footer_Status`, `CdBase_Status` (Standard / Needs Fix / Broken)
- `CdBase_Views`, `Dynamic_Headers`, `Demo_Assets_Complete` (checkboxes)

**Provisión & seeds** (Bloque 2 del estándar):
- `Core_JSON_Valid`, `Provisioning_Tested`, `Demo_Tested`, `Dryrun_Tested`
- `Seeds_FAQs`, `Seeds_Services`, `Seeds_Blog`, `Seeds_Notes`

**Otros**: `Demo_URL`, `Demo_Password`, `Repository`, `Cpanel_User`, `Reference_Project`, `Implementation_Time`, `Last_Dev_Update`, 3× `Archivos adjuntos`

---

## Gap analysis — qué falta para tracking real-time

El comando `bewpro:certify-product` checkea **8 piezas** y devuelve **score /100**. Hoy esa info NO se refleja en Airtable, queda en CLI. Resultado: el equipo (Maxi, Leandro, Ezequiel) no ve el score actualizado del producto sin correr el comando local.

### Lo que falta agregar a `Products`

| Campo nuevo | Tipo | Para qué |
|-------------|------|----------|
| `Certify_Score` | Number (0-100) | Score consolidado de `bewpro:certify-product` |
| `Last_Certify_Run` | Date | Cuándo se midió por última vez |
| `Schema_Parity` | Checkbox | Vista ↔ Schema OK (auto-check) |
| `Admin_Parity` | Checkbox | Schema ↔ Admin OK (auto-check) |
| `Template_Coverage` | Number (0-100) | % del schema cubierto por JSON template |
| `Seeds_Uniqueness` | Checkbox | Slugs únicos en todos los módulos |

### Lo que falta agregar como Seeds checkbox (módulos no cubiertos)

Hoy `Seeds_FAQs`, `Seeds_Services`, `Seeds_Blog`. Faltan los módulos restantes:

- `Seeds_Gallery` (10 cores lo usan)
- `Seeds_Projects` (7 cores lo usan)
- `Seeds_Team` (3 cores: law-firm, financial, agency)
- `Seeds_References` (3 cores: law-firm, financial, agency)
- `Seeds_Menu` (1 core: restaurant-bar)
- `Seeds_Testimonials` (módulo cross-core)

---

## Plan de cierre del frente

### Fase 1 — Setup en Airtable (15 min, requiere acceso tuyo a UI Airtable)

Agregar los 6 campos nuevos + 6 checkboxes de seeds a la tabla `Products`. Se puede hacer:
- **Manualmente vía UI Airtable** (más rápido si ya estás logueado) → recomendado.
- O vía script si querés que automatice (puedo hacerlo con Airtable Meta API).

### Fase 2 — Comando de sync (1h, lo hago yo)

Crear `app/Console/Commands/ProductsSyncTracking.php`:

```bash
php artisan bewpro:products:sync-tracking [--core=slug | --all]
```

Lo que hace:
1. Corre `bewpro:certify-product` para los slugs target.
2. Captura score + detalle por pieza (Schema parity, Admin parity, JSON template coverage, Seeds uniqueness).
3. Upsert en Airtable Products (match por Slug):
   - `Certify_Score`, `Last_Certify_Run`, `Schema_Parity`, `Admin_Parity`, `Template_Coverage`, `Seeds_Uniqueness`
4. Loggea cambios (logs/products-sync-{date}.log).

### Fase 3 — Workflow operativo (5 min documentar)

**Cuándo corre cada quién**:
- **Tras commit a `cd-system`** que toca un producto: CI corre `bewpro:products:sync-tracking --all`.
- **Daily cron** en VPS1: `bewpro:products:sync-tracking --all` a las 03:00 ART.
- **Manual** desde local cuando se está armando un producto nuevo: `--core=slug` para iterar rápido.

**Cómo lo lee el equipo**:
- Vista Airtable filtrada `Catalog_Status = Draft AND Certify_Score < 100` → Maxi sabe qué piezas faltan.
- Vista `Reseller_Ready = Coming Soon AND Certify_Score = 100` → candidatos a publicar al marketplace.
- Vista `Last_Certify_Run < 7 days ago` → productos sin medir, sospechar drift.

---

## Decisiones que necesito de vos

### A. ¿Quién agrega los fields en Airtable?

- **Opción 1**: Lo hacés vos manualmente en UI Airtable (recomendado, 15 min). Te paso la lista exacta de fields + tipos.
- **Opción 2**: Lo automatizo con script vía Meta API (requiere PAT con permiso `schema.bases:write` — el que tenemos lo tiene).

### B. ¿Sumamos los 6 Seeds de módulos faltantes ahora?

- **Sí**: visibilidad completa por producto, pero son 6 checkboxes más que mantener.
- **No, sólo agregamos los 6 fields de tracking**: más conciso, suficiente para empezar.

### C. ¿Cron diario o manual?

- **Cron diario** en VPS1: tabla siempre fresca, el equipo confía en ella.
- **Manual**: el equipo corre el comando cuando le hace falta. Menos infra.

---

## Referencias

- Comando que captura las piezas: `app/Console/Commands/CertifyProduct.php`
- Doc de los 4 bloques canónicos: `docs/bewpro2.0/product-readiness/componentes.md`
- Estado por producto (matriz): `docs/bewpro2.0/product-readiness/estado-productos.md`
- Tabla clean comercial: `catalogo-clean.md`
- Airtable base BewPro 2.0: `appRxvpzqCmNsw2JN`
