← Todas las revisiones

Emblem

Revisión de lanzamiento a 30 días de tostador de café. 18 hallazgos en 6 capas del marco del estudio.

Vertical
Tostador de café
Enviado
2025-06
Revisado
15 de julio de 2025
Capas
Revisión de seis capas
Autor
Alfonso Barreiro
Hallazgos
18

Capa 1 de 6

Estratégica

  1. S1

    El credencial de tostador vive ocho secciones abajo

    Severidad: MediaEsfuerzo: BajoArchivado para después

    El hero describe a Emblem como 'tostador de café de una sola tienda en Portland' y le entrega al lector una foto de la fachada. La afirmación de que Emblem realmente tuesta en sitio, en lugar de revender granos de otro, sólo aparece dentro de la historia de origen cerca del final de la página. Un lector de primera visita que rebota antes de llegar hasta ahí se va sin el diferenciador.

    Arriba del pliegue el copy podría aplicarse a cualquier cafetería con un interior bonito. El tostado es la razón por la que la tienda existe y la razón por la que una bolsa cuesta $22 en lugar de $14, y el sitio lo trata como un detalle a mitad de página.

    Arreglo: Mueve una frase de la historia de origen al subtítulo del hero. Algo como 'Tostamos los miércoles y viernes detrás de la barra. Todo lo que servimos estaba en un saco de yute hace siete días.' Concreto y con fecha. Le gana a 'tostador artesanal' por dos dimensiones.

  2. S2

    Las preguntas de la primera visita viven en el pie de página

    Severidad: MediaEsfuerzo: BajoRecomendación

    Un cliente que llega al sitio de una cafetería normalmente responde tres preguntas en los primeros diez segundos: ¿están abiertos ahora?, ¿dónde están?, ¿puedo conseguir mesa? Emblem responde la segunda (dirección en el hero), entierra la primera (horario en el pie) y omite la tercera por completo.

    El horario en el pie significa que el usuario tiene que hacer scroll por toda la página para saber si la tienda está abierta a las 4pm un martes. La mitad no lo hará.

    Arreglo: Pon el horario en el hero junto a la dirección. Si el esfuerzo de build lo permite, calcula un indicador 'Abierto ahora' o 'Cerrado, abrimos a las 7am' desde la tabla de horarios. Notas de aforo ('sólo walk-ins', 'seis mesas y una banca') pueden ir a un lado. El resto de la página puede entonces hacer su trabajo editorial.

  3. S3

    El precio de la bolsa se esconde dentro de la prosa

    Severidad: MediaEsfuerzo: MedioRecomendación

    La carta muestra los precios de espresso y pour-over con claridad. El precio de la bolsa al menudeo, que es el producto de mayor margen en el sitio, aparece sólo dentro de la historia de origen como una línea de paso: 'El Yirgacheffe lavado sale en $22 la bolsa.' No hay ficha de producto, no hay agregar al carrito, no hay una sección Granos en la navegación.

    Arreglo: Agrega una sección Granos entre la carta y la historia de origen. Tres o cuatro ofertas activas con fecha de tostado, gramaje y precio en cada tarjeta. Si Emblem no envía en línea, escribe 'disponible en tienda' en cada tarjeta. Repite el precio en la historia de origen para que ambas superficies concuerden.

Capa 2 de 6

UX

  1. UX3

    No hay acción secundaria para clientes recurrentes

    Severidad: AltaEsfuerzo: BajoArchivado para después

    El único CTA es 'Visítanos', que ancla a la dirección. No hay 'Llama con anticipación', no hay 'Reserva una bolsa', no hay una acción clara para un cliente recurrente que ya sabe dónde está la tienda. El sitio es un folleto con un mapa.

    Si Emblem no toma pedidos en línea, está bien, pero el sitio debe decirlo y ofrecer un teléfono como alternativa. Ahora mismo la única opción de un cliente recurrente es teclear el número del pie en su propio marcador.

    Arreglo: Agrega un enlace tel: junto a la dirección en el hero, etiquetado 'Llama antes: (503) xxx-xxxx'. Si Emblem toma pre-órdenes de bolsas al menudeo, agrega un enlace 'Reserva una bolsa' que abra un formulario corto o un mailto:. En cualquier caso, una acción clara más allá de 'ven a vernos'.

  2. UX1

    La carta es un scroll único sin anclas internas

    Severidad: MediaEsfuerzo: BajoArreglado al enviar

    La navegación superior tiene Carta, Origen, Visita, Contacto. Carta hace scroll a la sección del menú, lo cual funciona. Pero la carta es una lista larga sin anclas internas. Un visitante que sólo quiere ver los precios de pour-over pasa antes por espresso y drip.

    Arreglo: Agrega una tira horizontal de pestañas al inicio de la carta: Espresso, Pour-over, Drip, Granos. Cada una ancla a su sub-sección. Botones de texto sin borde. Las pestañas se mantienen en el orden del DOM para que el usuario de teclado las alcance en orden de lectura.

  3. UX2

    El pour-over se lee como par del espresso, no como especialidad

    Severidad: MediaEsfuerzo: MedioRecomendación

    Espresso y pour-over aparecen como dos columnas lado a lado en desktop. Mismo peso visual, misma escala tipográfica, sin señal de que uno es la especialidad de la casa. La historia de origen de Emblem es una historia de pour-over de especialidad; el tratamiento de la carta no lo refleja.

    En móvil las columnas se apilan y el pour-over queda debajo del espresso, lo cual refuerza la lectura de menor énfasis.

    Arreglo: Dale al pour-over la columna más ancha en desktop (dos tercios contra un tercio). En móvil, pour-over primero. Si el pour-over es la especialidad, la carta debe decirlo con peso de layout, no sólo con un párrafo dentro de la historia de origen.

  4. UX4

    El botón de cerrar del menú móvil compite con la marca

    Severidad: BajaEsfuerzo: BajoArchivado para después

    El hamburguesa en móvil abre una capa a pantalla completa. El botón de cerrar es una × terracota pequeña en la esquina superior derecha, con el mismo peso que los ítems del menú. En la primera apertura, dos usuarios de prueba tocaron la marca en la esquina superior izquierda en lugar de la × porque la marca se lee como el objetivo más prominente.

    Arreglo: Sube la × a un objetivo de 44×44 con un borde circular sutil para que se lea como control. La marca dentro de la capa puede bajar a un tamaño menor o a color plano para que deje de competir.

Capa 3 de 6

Visual

  1. V2

    Dos acentos compiten en el mismo pliegue

    Severidad: MediaEsfuerzo: BajoArreglado al enviar

    El acento del sitio es un terracota cálido (#C25E44) que se usa en CTAs y en encabezados destacados. Un secundario verde oliva (#7A8659) aparece en el badge 'Tostado esta semana' y en la cita destacada de la historia de origen. Dos acentos sobre un fondo crema cálido significa que el ojo tiene que decidir cuál color señala la acción primaria.

    Terracota y oliva se llevan bien juntos, y compiten por la atención en la zona hero-y-primer-pliegue.

    Arreglo: Baja el oliva a un neutro: crema cálido un tono más oscuro para el badge, color tinta para la cita destacada. Deja el terracota como único acento. Si un acento secundario es verdaderamente necesario para el sistema de fechas de tostado, úsalo sólo dentro de la sección Granos, nunca en el hero.

  2. V3

    El padding de contenedor cambia sección a sección

    Severidad: MediaEsfuerzo: BajoArchivado para después

    El padding de sección es inconsistente: el hero usa px-8, la carta usa px-6, la historia de origen usa px-10, la sección de visita usa px-8. El max-width interno también varía (max-w-5xl en unos lados, max-w-6xl en otros, sin max en la historia de origen).

    En desktop el efecto es sutil. En móvil el padding horizontal variable produce un pequeño bamboleo lateral mientras el usuario hace scroll.

    Arreglo: Estandariza en px-6 md:px-10 externo, max-w-6xl interno, aplicado vía un componente <Container> compartido o un grupo de clases de Tailwind. Retrofit a las cuatro secciones inconsistentes. Pase mecánico, probablemente una tarde.

  3. V1

    El clamp del h1 del hero toca fondo en pantallas angostas

    Severidad: BajaEsfuerzo: BajoRecomendación

    El h1 del hero usa clamp(32px, 6vw, 72px). A 375px de ancho el brazo 6vw resuelve a 22.5px, por debajo del mínimo, así que el clamp se queda en 32px. El body del mismo pliegue es de 20px. La razón 32:20 aplana la jerarquía, y a 320px el h1 se lee más como pie de foto.

    Arreglo: Sube el mínimo del clamp a 40px. En 375px el h1 cae en 40px, el body se queda en 18–20px y la razón cercana a 2:1 se lee como encabezado. Vuelve a probar en 320px (SE) para que el h1 siga envolviendo en dos líneas y no tres.

Capa 4 de 6

Técnica

  1. T1

    La imagen del hero pesa 1.9MB en JPEG, sin AVIF

    Severidad: AltaEsfuerzo: MedioArchivado para después

    La imagen de la fachada en el hero pesa 1.9MB en JPEG a 2400px de ancho. next/image no está en uso; la imagen es un <img> plano. En una prueba con 3G limitada la imagen bloquea el LCP a 3.4 segundos.

    AVIF con calidad visual equivalente aterriza cerca de 240KB. WebP como fallback cerca de 380KB. Aun sin un pipeline de conversión en build, un pase manual con sips o squoosh ayuda.

    Arreglo: Convierte el hero y las seis imágenes de sub-sección a AVIF (sips -s format avif, o squoosh en calidad 60). Envuélvelas en <picture> con fallbacks AVIF/WebP/JPEG, o migra el sitio a next/image y deja que el framework negocie. Fija width y height explícitos para que el layout no se corra.

  2. T2

    Metadata por ruta faltante en /origen y /visita

    Severidad: MediaEsfuerzo: BajoRecomendación

    La home tiene title y meta description. Las rutas /origen y /visita heredan el mismo title ('Emblem: tostador de café en Portland'). Las etiquetas Open Graph sólo están en la home. Un enlace a /origen compartido en un mensaje de texto se previsualiza sin marca.

    Arreglo: Agrega <title> y <meta description> por ruta a /origen y /visita. Agrega og:image y og:description por ruta. Si las imágenes del hero de cada página pueden reutilizarse como tarjetas OG, hazlo; si no, encarga un set pequeño (1200x630).

  3. T3

    El lastmod del sitemap estampa todo con hora de build

    Severidad: BajaEsfuerzo: BajoRecomendación

    sitemap.xml lista tres URLs (/, /origen, /visita) con la fecha de hoy como lastmod en cada entrada. Esa señal tiene casi nulo valor de rastreo porque el crawler no puede distinguir qué página realmente cambió. Sitio chico, y la señal de prioridad de rastreo no cuesta nada enviarla bien.

    Arreglo: Genera el lastmod por ruta desde el mtime del archivo de contenido, o codifica las fechas de última edición por página. Para el caso de tres rutas una constante manual por entrada está bien.

Capa 5 de 6

Accesibilidad

  1. A11y3

    Los encabezados de la carta se marcan como divs estilizados

    Severidad: AltaEsfuerzo: BajoArchivado para después

    Los encabezados de la carta ('Espresso', 'Pour-over', 'Drip', 'Granos') están marcados como <div class='menu-title'>. Lo mismo con los títulos de capítulo de la historia de origen. Un usuario de lector de pantalla recibe un párrafo largo sin landmarks, sin saltar a sección, sin manera de escanear.

    Arreglo: Cambia los encabezados de la carta a <h3> bajo el <h2> de sección. Los títulos de capítulo de la historia de origen a <h3> o <h4> según anidamiento. El marcado con div es estilo extra invisible; las etiquetas de heading llevan el mismo visual y encima ganan la accesibilidad.

  2. A11y1

    El texto sobre la foto de granos cae por debajo de 4.5:1

    Severidad: MediaEsfuerzo: BajoArreglado al enviar

    La sección 'Tostado esta semana' pone body color crema sobre una foto de granos tostados oscuros. El texto llega a cerca de 3.9:1 de contraste en el tercio medio de la imagen, donde los granos aclaran. WCAG AA exige 4.5:1 para body.

    El párrafo se lee de reojo y empieza a suavizarse bajo luz ambiente fuerte en un teléfono.

    Arreglo: Agrega una capa oscura semi-opaca (bg-black/40) entre la imagen y el texto, o mueve el texto a una tarjeta crema sólida encima de la imagen con 24px de padding. Cualquiera de las dos restaura el contraste a cerca de 8:1.

  3. A11y2

    Los estados de foco dependen del default del navegador

    Severidad: BajaEsfuerzo: BajoRecomendación

    Los enlaces de nav, el botón CTA y las anclas de la carta dependen del anillo de foco por defecto del navegador. En Safari 17 el anillo por defecto es un azul de bajo contraste que sobre el crema cálido se lee como bug del navegador. Un usuario de teclado puede navegar, y el indicador de foco actual es inconsistente entre navegadores.

    Arreglo: Agrega un estilo global :focus-visible: outline de 2px terracota, offset de 2px, radio igual al del elemento. Una línea en globals.css: *:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }. Prueba Safari, Chrome y Firefox antes de subir.

Capa 6 de 6

Rendimiento

  1. P1

    El elemento LCP no tiene preload ni pista de prioridad

    Severidad: AltaEsfuerzo: BajoArchivado para después

    La imagen del hero es el elemento LCP de la home. Se renderiza como un <img> plano sin pista de preload y sin fetchpriority. En desktop-cable el LCP mide 1.8s. En móvil-3G mide 3.4s y es el principal contribuidor a una calificación 'Necesita mejora' en Core Web Vitals.

    Arreglo: Agrega <link rel='preload' as='image' href='/hero.avif' fetchpriority='high'> al <head>. Si migras a next/image, usa la prop priority. Combinado con la conversión a AVIF de T1, el LCP móvil debería bajar de 2.5s.

  2. P2

    Google Fonts bloquea el primer pintado en móvil

    Severidad: MediaEsfuerzo: BajoRecomendación

    Las fuentes se cargan vía <link rel='stylesheet'> desde fonts.googleapis.com en el head. Eso bloquea el primer pintado en 200 a 400ms en móvil. Se cargan dos familias (serif para encabezados, sans para body) y cada una envía dos pesos.

    Para un sitio de este tamaño, fuentes auto-hospedadas con font-display: swap eliminan el ida y vuelta que bloquea el render.

    Arreglo: Descarga los .woff2 de las cuatro variantes, hospédalos bajo /public/fonts/, define @font-face en globals.css con font-display: swap, y elimina el link a Google Fonts. Mismo resultado visual, 200 a 400ms más rápido el primer pintado en móvil.