Problema
SFE Perú vende un sistema de facturación electrónica y gestión comercial. El objetivo del sitio es uno y se puede medir: convertir visitantes en conversaciones de WhatsApp calificadas. No suscripciones a un newsletter, no descargas de un PDF. Una conversación con alguien que ya entendió qué compra.
Lo interesante del proyecto no fue el diseño. Fue la restricción.
Contexto
El mercado peruano de facturación electrónica está lleno de landings que prometen lo que no pueden sostener: el logotipo de SUNAT puesto como si fuera un sello de aprobación, «aprobación garantizada», «cero rechazos», testimonios sin apellido, cifras de clientes que nadie puede comprobar y la palabra «ilimitado» sobre planes que tienen tope.
Decidí construir esta landing con la regla contraria, escrita en la memoria del proyecto como condición no negociable: cero cifras fabricadas. Prohibido inventar número de clientes, documentos emitidos, años de experiencia, porcentaje de uptime o testimonios. Si un componente los pedía y el dato no existía, el componente no se construía.
La sección de testimonios está, literalmente, bloqueada en las instrucciones del repositorio hasta que haya testimonios reales y autorizados.
Arquitectura
app/
(marketing)/ la home comercial
(legal)/ privacidad · términos · Libro de Reclamaciones
panel/ revisión interna de reclamos, con sesión en cookie
api/ alta del reclamo y respuesta desde el panel
| Capa | Elección |
|---|
| Framework | Next.js 14 con App Router y TypeScript en modo estricto |
| Estilos | Tailwind, con tokens propios en CSS |
| Animación | CSS más IntersectionObserver. Sin framer-motion ni GSAP |
| Tipografía | Figtree para titulares y DM Sans para cuerpo, por next/font |
| Imágenes | next/image con sharp, servidas en WebP |
| Datos | PostgreSQL, y solo para el Libro de Reclamaciones |
| Correo | Resend, para la copia de cada reclamo |
| Despliegue | VPS propio con Docker detrás de un proxy |
La lista de librerías prohibidas es parte del proyecto: nada de bibliotecas de componentes, jQuery, Bootstrap, carruseles pesados ni motores de animación. Una landing comercial que carga 300 KB de JavaScript para mover una tarjeta al hacer scroll está pagando con la métrica que importa para ganar algo que nadie mide.
El Libro de Reclamaciones
Es la única parte del sitio con base de datos, y existe porque en Perú no es opcional: todo proveedor que vende a consumidores finales debe tener un Libro de Reclamaciones a disposición, con constancia de cada queja y una respuesta por escrito.
El flujo completo:
- El consumidor llena el formulario en la ruta legal.
- El reclamo se guarda en PostgreSQL y recibe un código de identificación con el formato
SFE-{año}-{correlativo}, asignado en la misma operación.
- Resend manda la copia al consumidor con ese código, y un aviso interno para que nadie se entere tarde.
- El panel interno —sesión en cookie, protegido por middleware— lista los reclamos y permite escribir la respuesta sobre el mismo registro.
Nada de esto es técnicamente difícil. Es la clase de pieza que se posterga porque no vende, y que convierte una multa en una tarde de trabajo.
Decisiones clave
- Sin logotipo de SUNAT y sin frases de respaldo institucional. Se describe lo que el sistema hace, no un aval que nadie dio. SUNAT valida; el proveedor cumple.
- Del certificado digital se promete el trámite, nunca el costo. Lo tramitamos nosotros y lo paga el cliente, en cualquier plan. Es el matiz que, mal escrito, se convierte en un reclamo legítimo.
- «Ilimitado» solo donde es verdad. Usuarios y productos, sí. Comprobantes en un plan con tope, nunca. Los límites se muestran, no se esconden.
- Los precios publicados incluyen IGV, y se dice explícitamente. En un mercado donde la mitad de los competidores publica el precio sin IGV, decirlo es una ventaja y no un detalle.
- El posicionamiento no es el precio, es la respuesta. Frente a los facturadores baratos: ellos emiten comprobantes, este es el sistema con el que se maneja el negocio. Frente a los grandes SaaS nacionales: ellos dan un chat, aquí contesta un número de WhatsApp y en Cajamarca se va al local.
Lo que más cuesta de una landing honesta no es escribirla: es sostenerla cuando el copy queda más flojo que el de la competencia. Una página sin cifras llamativas, sin testimonios y sin sellos parece más pobre al lado de una que los inventa. La apuesta es que el visitante que llega por una búsqueda con intención de compra no se convence con un número redondo, sino con que le digan qué incluye el plan y qué no.
Qué queda por delante
Crear las redes sociales de la marca, validar las métricas de conversión con datos de varios meses y abrir una campaña de tráfico. La landing está en producción desde septiembre de 2026; lo que falta no es construcción, es tracción.
Aprendizajes
Una restricción escrita como regla del repositorio se cumple; una buena intención, no. La lista de prohibiciones —sin cifras inventadas, sin «ilimitado», sin logotipo de SUNAT, testimonios bloqueados— vive en el archivo de memoria del proyecto y se lee en cada sesión. Es la diferencia entre una decisión que se toma una vez y una que se vuelve a tomar en cada párrafo nuevo, siempre con un poco menos de disciplina que la anterior.
Y una de producto: las páginas legales son parte del embudo, no un anexo. El visitante que busca el Libro de Reclamaciones antes de comprar está evaluando si la empresa va a estar ahí cuando algo salga mal. Que esa página funcione, responda y entregue un código dice más sobre el proveedor que la sección de beneficios.