# Landing de Producto — Checklist para Conversión desde Ads

> Última actualización: 2026-04-24

## Objetivo

Cada producto de BewPro tiene una landing page en `/products-catalogue/{slug}` que debe convertir por sí sola: usuario llega desde un ad → entiende el valor → compra (trial 15 días). Este documento define el estándar validado con law-firm-digital y se replica a los 8 productos market-ready.

---

## Arquitectura de la Landing

### Template
`resources/views/modules/products/frontend/demos/demo-digital-agency-2/show.blade.php`

### Controller
`app/Modules/Products/Controllers/Frontend/ProductController.php` → `show($slug)`

### Secciones (orden en la página)

| # | Sección | Fuente de datos | Condicional |
|---|---------|----------------|-------------|
| 1 | **Hero** — H1 + tagline + demo link + trial badge | `name`, `tagline`, `demo_url` (core JSON), `hasStripePrice()` | Siempre |
| 2 | **Pitch** �� Headline + subheadline + persona + CTA | `description` (split por `\n\n`), `target_persona`, `price`, `cta_primary` | Siempre |
| 3 | **Pain Points** — "¿Te identificas con esto?" | `pain_points` (pipe-delimited, 4 items) | Si tiene pain_points |
| 4 | **Módulos Incluidos** — Cards con nombre comercial | `resolveProductModules()` → core JSON + alias-matrix | Si core_slug existe |
| 5 | **Value Props** — "Lo que vas a lograr" | `value_props` (pipe-delimited, 4 items) | Si tiene value_props |
| 6 | **Cómo Funciona** — 3 pasos | Hardcoded en template | Siempre |
| 7 | **Productos Relacionados** — Misma categoría | Query: same category_id, limit 4 | Si hay relacionados |
| 8 | **FAQs** — Accordion por categoría | Todas las FAQs del proyecto (genéricas BewPro) | Si hay FAQs |
| 9 | **CTA Final** — "¿Listo para lanzar?" | `name`, `cta_primary`, `hasStripePrice()` | Siempre |

### Flujo de datos del módulo de industria

```
product.core_slug → database/seeders/products/core/{core}.json
  → modules: ["services", "team", "blog", ...]
  → CORE_TO_INDUSTRY map → industry (ej: "law-corporate")
  → alias-matrix.json[module][industry] → commercial_name + value_pitch

Ejemplo law-firm-digital:
  services → "Áreas de Práctica" (en vez de "Servicios")
  team → "Nuestros Abogados" (en vez de "Equipo")
  blog → "Doctrina y Jurisprudencia" (en vez de "Blog")
```

---

## Checklist por Producto

### A. Datos del producto (tabla `products`)

| Campo | Descripción | Ejemplo law-firm |
|-------|-------------|------------------|
| `name` | Nombre descriptivo del nicho | "Sitio Web para Estudios Jurídicos" |
| `tagline` | 1 línea con beneficio principal | "La presencia digital que tu estudio necesita para captar más clientes" |
| `description` | 2 párrafos separados por `\n\n`. P1=headline (beneficio), P2=subheadline (qué incluye) | "Tu estudio jurídico online...\n\nIncluye 5 módulos..." |
| `cta_primary` | Texto del botón principal | "Probar 15 días gratis" |
| `pain_points` | 4 items pipe-delimited, primera persona, emocionales | "No tengo sitio web y pierdo clientes...\|Mi página actual no transmite..." |
| `value_props` | 4 items pipe-delimited, orientados a resultado | "Presencia profesional que genera confianza...\|Cada área de práctica..." |
| `target_persona` | 1 oración: para quién es | "Para estudios jurídicos, abogados independientes y notarías..." |
| `keywords` | 8-12 long-tail pipe-delimited | "sitio web para abogados\|página web estudio jurídico\|..." |
| `price` | Precio mensual en USD | 35.00 |
| `stripe_price_id` | ID de Stripe Price (recurrente) | price_1T9Rid... |
| `core_slug` | Slug del core preset | law-firm-digital |
| `is_active` | Debe ser 1 | 1 |

### B. Imagen del producto (tabla `product_images`)

- Al menos 1 imagen por producto
- Formato: Cloudinary URL (subida via admin o seed)
- Usada en: landing (pitch section), cat��logo, OG image, schema.org

### C. Core Preset JSON (`database/seeders/products/core/{core}.json`)

| Campo | Requerido | Descripción |
|-------|-----------|-------------|
| `demo` | Sí | Slug del demo template |
| `modules` | Sí | Array de módulos incluidos |
| `demo_url` | Sí | URL de proyecto real de referencia |
| `brand_defaults` | Sí | Colores y fuentes por defecto |
| `schema_type` | Recomendado | Tipo schema.org (ej: LegalService, Restaurant) |

### D. SEO (generado automáticamente por el template)

| Meta | Formato | Ejemplo |
|------|---------|---------|
| `<title>` | `{name} \| Desde ${price}/mes \| {siteName}` | "Sitio Web para Estudios Jurídicos \| Desde $35/mes \| BewPro" |
| `<meta description>` | `{tagline} Desde ${price}/mes con 15 días gratis.` | Auto-generado |
| `<meta keywords>` | `{keywords}` convertidos de pipe a comma | Auto-generado |
| OG title | Igual que title | Auto-generado |
| OG image | Primera imagen del producto | Auto-generado |
| Canonical | URL de la landing | Auto-generado |
| Schema.org | Product + Offer + FAQs JSON-LD | Auto-generado |

### E. Elementos de conversión (en el template)

- [x] Trial badge verde en hero: "15 días gratis"
- [x] Subtexto bajo CTA: "15 días gratis. Cancelá cuando quieras."
- [x] Precio visible en botón: "Probar 15 días gratis — $35/mes"
- [x] Demo link a proyecto real
- [x] "Tengo una pregunta" → contacto con modelo pre-cargado

### F. T��cnico

- [x] Checkout Stripe funcional con trial 15 días
- [x] GA tracking: G-X565WS9CVY (producción)
- [x] Mobile responsive
- [x] Schema.org Product + FAQs renderizando

---

## Demo URLs — Proyectos de Referencia

| Core | Demo URL | Proyecto |
|------|----------|----------|
| law-firm-digital | dpolegal.com | DPO Legal |
| construction | constructoragama.com.ar | Constructora Gama |
| real-estate | aybarpropiedades.com | Aybar Propiedades |
| corporative | distritotucuman.com | Distrito Tucuman |
| art-design | ofinita.com | Ofinita |
| restaurant-bar | getmuma.com | Muma Empanadas |
| personal-brand | cokecolombres.com | Coke Colombres |
| foundations-ong | fundacionchaka.org | Fundación Chaka |

---

## Modelo de Negocio: Cores + Variantes

### Concepto
- **Core**: Preset técnico (demo + módulos + config). 8 market-ready.
- **Variante**: Presentación del mismo core enfocada en un target específico. 150 en catálogo.
- **Mismo producto, diferente copy**: Un "Attorney" y un "Notary" usan el core `law-firm-digital` pero con landing copy diferente.

### Catálogo (`database/seeders/products/catalog.json`)

| Core | Variantes | Precio |
|------|-----------|--------|
| law-firm-digital | 5 (Attorney, Law Firm, Legal Services, Notary) | $35 |
| construction | 3 | $35 |
| real-estate | 8 (Luxury RE, RE Agent, RE Developer, Vacation Rentals...) | $40 |
| personal-brand | 7 (Author, Speaker, Coach, Portfolio...) | $30 |
| corporative | 3 | $30 |
| art-design | 15 (Tattoo Artist, Interior Designer, Graphic Designer...) | $35 |
| restaurant-bar | 7 (Restaurant, Café, Bakery, Bar, Catering...) | $30 |
| foundations-ong | 7 (NGO, Charity, Cultural Foundation...) | $30 |

### Estrategia Ads
- 1 campaña por core
- 1 ad group por variante activa
- Keywords específicos del nicho por variante
- Landing URL: `/products-catalogue/{variant-slug}`
- Todas las variantes de un core comparten el mismo `stripe_price_id`

---

## Archivos clave

| Archivo | Función |
|---------|---------|
| `show.blade.php` | Template landing producto |
| `ProductController.php` | Controller con resolveProductModules() |
| `catalog.json` | Mapeo slug → core (150 variantes) |
| `alias-matrix.json` | Nombres comerciales por industria |
| `core/*.json` | Presets técnicos (módulos, demo URL, brand) |
| `bewpro-modules.php` | Config de módulos (iconos, tipos, colores) |
