pIA
phoneIA.es
CRM con IA
Novedades

Lo que publicamos, el día que se publica

Todo lo que ha entrado en producción desde el primer día: módulos nuevos, mejoras y correcciones, con su fecha y con el motivo por el que se hicieron.

674
Publicaciones desde el lanzamiento
249
En los últimos 30 días
52
Días con publicación

Última actualización: 8 de septiembre de 2026 · Suscríbete por RSS

septiembre de 2026

8
sept · martes
CorregidoPromociones

"de serie" no es lo mismo que no costar nada

En la ficha, «Roble ceniza» salía como «de serie» solo porque no suma al precio. No lo es: la de serie es la de la memoria de calidades, y es la que se aplica al que no elige.

Ahora se lee la propiedad, no el precio, y una opción sin sobrecoste que tampoco es la de serie dice «sin coste».

NuevoPromociones

Acabados y mejoras, con su fecha y su factura

Fase 2. Es el segundo dolor de la lista y el que se lleva dinero: hoy el comprador elige el suelo por WhatsApp, la elección vive en el móvil de un comercial y la mejora que se cobra aparte se acuerda de palabra.

TRES TABLAS, y la del medio es la que suele faltar: la decisión ("Suelo del salón") con su fecha de corte, las opciones entre las que se elige —una de serie, el resto suman— y lo que eligió cada vivienda.

NuevoPromociones

La demo trae la promoción y la landing lleva a tocarla

El botón de la landing decía «ver una demo» y llevaba a un formulario. Ahora la demo existe: /demo/ siembra Los Almendros con sus 40 viviendas y el módulo activado, igual que el showcase persistente.

Además, desde la ficha se copia el enlace privado del comprador. Un año de vigencia y no noventa días como el resto: quien compra sobre plano espera dos o tres, y renovarle el enlace cada trimestre es una gestión que no va a hacer nadie.

NuevoPromociones

El módulo de promotoras, de la reserva a las llaves

La landing prometía y no había nada detrás. Ahora hay motor.

MODELO. Cuatro tablas: promociones, unidades, unidad_pagos y unidad_avales. La cuarta no es un extra: cobrar antes de entregar obliga a garantizar cada cantidad (Ley 38/1999), y hoy eso vive en una carpeta. Aquí vive pegado al cobro que cubre, y la vista canta lo que está cobrado sin cubrir.

CorregidoWeb y marca

Los seis módulos, en color

El ERP en gris casi negro parecía una esquela justo en la tarjeta que habla de dinero. Y poner los seis en cálido los volvía un bloque monótono: se distinguían por el texto, no por el color.

Paleta viva y variada, como las piezas de abajo, con azules y verdes: violeta el CRM, azul Comercia, esmeralda Atiende, celeste Cita, ámbar el portal del cliente y verde el ERP. El ámbar va al portal a propósito: es lo que nos diferencia y conviene que salte a la vista.

NuevoWeb y marca

Seis módulos, en cálido, y la promesa de que se adapta

Tres cosas del mismo repaso.

SON SEIS, Y EL PRIMERO ES EL CRM. No era "la base" dibujada aparte encima de los demás: es el módulo 1, y viene ya con el vocabulario de la actividad. No es lo mismo un paciente que un comprador, ni una sesión que una visita, ni un bono que una fase.

NuevoWeb y marca

Cinco módulos y las dos capas, con su cuenta

No son tres módulos: son cinco. Faltaban el portal del cliente —que es lo que separa esto de una agenda— y nuestro ERP, que estaba dibujado como "tu ERP", como si fuera de otro.

El diagrama va de la base al oficio: CRM, cinco módulos encima, y las dos capas de sector con cuántos oficios trae cada una. Los números salen de las listas, no escritos a mano, para que no se queden viejos al añadir un sector. Salud son 13 contando ClínicasIA, que ya estaba en el menú y no aparecía en la portada.

NuevoWeb y marca

La portada cuenta lo que somos ahora

Decía "11 módulos" cuando ya son catorce, y de los catorce oficios con landing propia no mencionaba ninguno: quien entraba buscando si esto sirve para su clínica no encontraba la respuesta en la portada.

Lo que cambia:

NuevoWeb y marca

Anual a 9 mensualidades, una sola alta y WhatsApp partido

Tres decisiones tomadas, y las tres estaban costando dinero o credibilidad.

ANUAL = 9 MENSUALIDADES. Convivían dos reglas: la web decía 8 y la línea de sectores iba a 9. Se unifica en 9 (tres meses gratis, no cuatro), en el checkout y en las cuatro landings que lo publican.

NuevoPromociones

Landing del vertical de promotoras

Una promotora no es una inmobiliaria: no cobra una comisión al final, cobra el 100% a plazos durante tres años contra certificación de obra, y cada euro anticipado tiene que ir avalado.

Secciones por el orden en que le duele: mosaico de disponibilidad (con recreación de la pantalla), embudo comercial, contratos y firma, calendario de cobros, avales y seguro de cantidades, elecciones de calidades y mejoras, zona privada del comprador, entrega y postventa con los plazos de la LOE, escaparate, comercializadoras y cuadro de mandos.

7
sept · lunes
NuevoComercia 24

La introducción se escribe con formato y viaja al correo

La introducción se guardaba y se pintaba como un bloque plano: los saltos de línea y los párrafos se perdían en la propuesta y en el PDF, así que un texto escrito en cuatro párrafos llegaba al cliente como un ladrillo.

Ahora hay barra de formato —negrita, cursiva, listas, enlaces— con Ctrl/Cmd+B y +I, y un «Ver cómo queda» que enseña el mismo HTML que se manda. Se sigue guardando texto plano: lo ya escrito vale igual, y el formato se compone en cada destino, que es lo que hace que se vea igual en la web, en el PDF y en el correo, donde media etiqueta no sobrevive.

CorregidoCRM

Un reenvío no es un lead nuevo

Al enviar el formulario dos veces —corrigiendo un email mal escrito, que es lo que pasó con Construcciones Martin— el contacto no se duplicaba (se resuelve por teléfono) pero la oportunidad sí.

Ahora, si el contacto ya tiene una oportunidad abierta de ese mismo formulario en los últimos 30 días, se reutiliza y se le actualiza el mensaje. Cerrada (ganada o perdida) sí abre una nueva, y el aviso al equipo sigue saliendo igual.

CorregidoComercia 24

La introducción llega al correo aunque la escribas después

Sí viajaba, pero solo la primera vez que se abría el envío: el mensaje se guardaba en memoria y de ahí no se movía.

Ahora se rehace cada vez que se abre, salvo que hayas escrito tú el mensaje: en cuanto lo tocas, deja de pisarse. Un mensaje guardado en el presupuesto es siempre tuyo —el automático no se persiste—, así que al abrir uno viejo tampoco se toca.

NuevoWeb y marca

La aplicación de cada sector, y la zona del cliente

Las doce landings contaban qué resuelve la aplicación pero no la enseñaban, y ninguna vendía Mi zona, que es de lo más vendible que hay: el cliente entra y ve sus citas, sus bonos o las vacunas de su perro.

Cada sector tiene ahora SU pantalla, distinta de las demás: planes de tratamiento en dental, bonos en estética, mascotas en veterinaria, "qué toca llamar" en óptica.

NuevoPlataforma

Gráfico de peso, acompañante e informe de evolución

Las tres piezas pequeñas que quedaban de las landings.

GRÁFICO DE PESO (nutrición). Ya calculaba la diferencia, pero en nutrición el paciente quiere ver la línea, no leer una resta. Se dibuja en SVG a mano: para seis puntos, traer una librería de gráficos serían 40 kB por nada.

NuevoVoz IA

Consulta en línea con enlace de vídeo

Lo prometían psicología y nutrición. La máquina de videollamadas ya existía, pero creaba salas sueltas desde la ficha del contacto: lo que faltaba es que la CITA fuera en línea y que el paciente recibiera su enlace.

Desde la agenda, "Convertir en consulta en línea" crea la sala y la ata a la cita. El paciente la ve en Mi zona, junto a la hora, sin que nadie le mande nada.

NuevoPlataforma

Financiación en plazos también en el cobro de una sola vez

Klarna solo se ofrecía en el pago anual, que es el importe grande de una propuesta con cuotas. Pero una clínica no tiene ciclo: un tratamiento de medicina estética, un injerto capilar o un audífono son un único importe a…

Ahora se ofrece también sin ciclo a partir de 150 €. Por debajo no: en un cobro de treinta euros, un plan de plazos es ruido en la pantalla de pago.

NuevoPlataforma

Fotos por visita, en privado

"Evolutivo con foto por visita." Lo pedían podología e injerto capilar, y sirve igual en veterinaria: un pie, un cuero cabelludo o una herida dicen en una imagen lo que no cabe en tres líneas, y sobre todo permiten compa…

BUCKET PRIVADO, NO COMO EL DE LOS INMUEBLES. Una foto de una casa se enseña en un portal; una de un pie es un dato de salud. Va en un bucket cerrado y se ve con enlaces firmados que caducan a la media hora, nunca desde una dirección pública. Comprobado: con la clave pública no se puede ni listar.

NuevoPlataforma

Una zona privada para el cliente, en los doce sectores

Había enlaces sueltos —el presupuesto, el consentimiento, la cancelación de una cita— y cada uno abría UNA cosa.

UNA PÁGINA PARA LOS DOCE. Enseña lo que ese contacto tenga: sin bonos no sale el bloque de bonos. Por eso no hay doce zonas privadas.

NuevoPlataforma

Graduaciones, ventas con garantía y la revisión que trae la recompra

La tercera forma y la última que quedaba: el que se lleva algo puesto. Su diferencia con las otras dos no es la agenda ni el bono, es que la venta no acaba al salir por la puerta. "Se gradúa cada dos años.

Por eso la pantalla no lista clientes ni productos: lista lo que hay que llamar —revisiones que tocan y reposiciones que vencen—, y cada mañana un cron avisa con un mes de antelación. Es la recompra más barata que existe y la que más se deja caer.

NuevoComercia 24

Repartir las líneas en fases desde el editor

Cierra el plan de tratamiento: las fases ya se podían seguir, pero había que crearlas desde fuera. Ahora se añaden en el propio presupuesto y cada línea dice a cuál pertenece.

NO ESTORBA A QUIEN NO LAS USA, que era el riesgo. El bloque de fases solo aparece en un presupuesto ya guardado —una fase cuelga de él, sin id no hay de qué colgarla— y el selector de cada línea solo se pinta si hay fases creadas. Un presupuesto normal se ve exactamente igual que ayer. Comprobado: las 116 líneas que ya existían siguen intactas y sin fase.

NuevoComercia 24

Planes de tratamiento por fases

"Acepta la primera fase, se va, y nadie vuelve a llamarle." Es el dolor de dental, medicina estética y capilar, y no es un lead que se enfría: es dinero ya vendido que no se cobra y un hueco de agenda que tampoco se llen…

Las fases son una CAPA OPCIONAL sobre el presupuesto: uno sin fases se comporta exactamente igual que hoy y no hay nada que migrar. Ya existía la columna `section` para agrupar líneas; lo que faltaba es el ESTADO, y ahí está el producto: sin él esto sería agrupar, con él se puede decir qué tratamientos están parados a medias y desde cuándo.

NuevoPlataforma

La pantalla del panel, con sellado en Custodia

Preparas el consentimiento, le copias el enlace al paciente y él lo firma desde su móvil. La lista se ordena por lo que hay que perseguir —primero los que llevan más días sin firmar— porque un tratamiento que empieza sin…

Dos plantillas de arranque, odontológica y de medicina estética, escritas con lo que la ley pide decir: en qué consiste, qué alternativas hay incluida la de no tratarse, riesgos frecuentes y graves, y que se puede revocar. Son un punto de partida editable y así se dice en la pantalla: cada clínica tiene el suyo.

NuevoPlataforma

El paciente lee y firma desde su móvil

Obligatorio antes de cualquier tratamiento en dental, medicina estética y capilar: los tres sectores que quedaban de la forma "el presupuesto que dura meses".

SE GUARDA EL TEXTO ENTERO, no una referencia a la plantilla. Dentro de dos años la pregunta no será si firmó, será QUÉ decía exactamente lo que firmó. Guardando solo "plantilla de implantes v3", si esa plantilla se editó después no hay forma de demostrarlo.

NuevoPlataforma

Historia clínica por contacto y registro de accesos

Una pieza, cinco sectores. Fisioterapia, psicología, podología, nutrición y logopedia ya heredaban bonos, reservas, recordatorios y facturación: lo único que les faltaba era dónde apuntar qué pasó en la sesión.

EL PESO VA POR SESIÓN, no en la ficha. Un campo "peso" responde a "cuánto pesa" y se olvida de la pregunta de la consulta: "cuánto ha bajado desde marzo". Guardado así la evolución sale sola, y se enseña la diferencia desde la primera —probado: 84 → 80,5 → 77,8, o sea −6,2 kg—. En nutrición eso no es un detalle, es el producto.

MejoraComercia 24

La introducción, al doble de alto

Son cuatro líneas en vez de dos. Ese texto es el cuerpo del correo que recibe el cliente —si se rellena, sustituye al mensaje por defecto—, así que se escribe entero ahí.

NuevoPlataforma

Historial clínico y qué animal viene a cada cita

Las dos que faltaban para cerrar el sector.

QUÉ ANIMAL VIENE. La columna estaba en la base pero la agenda no dejaba elegirlo: un dueño con tres perros reservaba y no sabías cuál venía. Ahora, si tiene varios, la cita pregunta; si tiene uno, se ata solo sin preguntar nada; y si no tiene ninguno —el resto de sectores— ni aparece.

NuevoPlataforma

El aviso de la vacuna va al dueño, no al centro

La primera versión avisaba al móvil DEL CENTRO: "a Luna le toca la vacuna, llama a jairo". Útil, pero deja el trabajo donde estaba: el centro sigue teniendo que coger el teléfono, que es lo que ya hacía sin nosotros.

Ahora se le escribe por WhatsApp y, si el mensaje no sale, se le llama. La llamada es la red de seguridad del WhatsApp y no un segundo aviso: muchos dueños mayores no leen WhatsApp y a ellos hay que llamarles.

6
sept · domingo
NuevoPlataforma

Mascotas y calendario de vacunas

El paciente no es el que paga. Es la diferencia de este sector con los otros once y lo que obliga a una tabla propia: en una estética quien viene y quien paga son la misma persona y basta con contacts; aquí un dueño tien…

Por eso mascotas cuelga de contacts en vez de sustituirlo: los bonos, las facturas y los avisos siguen yendo al dueño, y lo único que se reparte por animal es lo clínico.

CorregidoAtiende 24

Un boletín ya no abre ticket

Cada correo abría ticket, boletines incluidos. Y un ticket arranca el reloj del SLA, que a las cuatro horas dispara su aviso: 3.069 sin leer y subiendo unos 70 al día, de Revolut, GitHub, Udemy y del propio CRM.

La señal fiable NO es la dirección. Lo intenté con una lista de remitentes automáticos y se queda corta siempre: "información@thebigschool.com", "suscriptor@elespanol.com" y "eric@updates.firecrawl.dev" son boletines y no lo parecen. Ampliar la lista es una carrera que no se gana.

NuevoPlataforma

Facturar desde la cita y desde el bono

Facturar solo se podía desde crm_operaciones, que es una tabla inmobiliaria: property_id, comision_pct, es_vivienda_habitual. Una estética no factura una comisión sobre una venta.

EN ESTÉTICA SE FACTURA EL BONO, NO LA SESIÓN. El cliente paga diez sesiones el día que compra; las nueve visitas siguientes no son diez ventas. Por eso una cita pagada con bono se rechaza al facturar, con ese motivo escrito: ya se cobró, y volver a facturarla sería cobrarle dos veces. En la pantalla ni se ofrece el botón.

NuevoReservas

Recordatorio por WhatsApp y por voz, y la reserva deja de pisar contactos

TRES COSAS.

1. La reserva pública machacaba el contacto. El upsert por teléfono sobrescribía nombre y correo con lo que pusiera el formulario: un cliente que reservaba escribiendo "Carlos" en vez de "Carlos OBIRE Rehabilitació", o dejando el correo vacío, borraba la ficha buena. Lo descubrí probando: me borró el correo de un contacto real.

NuevoPlataforma

La reserva en línea sabe que va con cargo al bono

Quien reserva desde la web y tiene sesiones sin gastar ya no llega a la agenda como una cita suelta: nace atada a su bono, y al abrirla pone "Reservó con cargo a su bono" con ese bono ya elegido.

Previsto no es gastado. La sesión se descuenta cuando la visita ocurre, no cuando se reserva: si el cliente no aparece, no puede haber pagado una sesión por no venir. Por eso va en una columna aparte y no en bono_consumos.

NuevoPlataforma

Avisar al móvil del bono parado

El cliente que se descuelga no deja de venir de golpe: deja de venir poco a poco. Cuando alguien se da cuenta han pasado seis meses y ya no vuelve.

Cada mañana a las nueve, un cron busca los bonos con sesiones sin gastar que llevan 45 días quietos y avisa al móvil con nombre y saldo: «Marta tiene 6 sesiones sin gastar, lleva 52 días sin venir». Un aviso que dijera «un cliente» no serviría de nada.

NuevoPlataforma

Gastar la sesión al cerrar la cita

Marcar la cita como completada y descontar la sesión son el mismo gesto en el mostrador. Separados, el saldo del bono se queda sin actualizar la mitad de las veces y acaba habiendo una discusión con el cliente.

Al abrir una cita de alguien con bono aparece cuál y cuánto le queda, y el botón principal pasa a ser "Completada y gastar sesión". Si tiene varios, se elige. Si la cita ya descontó, lo dice y ofrece devolver la sesión: apuntar de más pasa, y sin forma de deshacerlo la única salida era tocar la base de datos.

NuevoPlataforma

Sesiones compradas por adelantado

"Compró diez sesiones, vino a cuatro." Es lo que más dinero pierde un centro de estética. Y no es solo suyo: un fisio, un logopeda, una nutricionista y un podólogo tienen el mismo problema. Seis de los doce sectores.

El motor de reservas ya estaba entero —servicios, profesionales, disponibilidad, recordatorios por correo y por voz—, así que faltaba justo esto.

CorregidoPlataforma

El menú del móvil, gobernable

Al reorganizar en cuatro zonas, el móvil recibía las treinta entradas aplanadas en una sola lista. Y el panel no tenía desplazamiento propio, así que la mitad quedaban por debajo del borde de la pantalla sin forma de lle…

Ahora son cuatro renglones plegados —Módulos, Sectores, Demos, Novedades— y se abre solo el que interesa. Con <details>, así que pliega y despliega el propio navegador: sin estado que sincronizar y con el teclado funcionando gratis.

MejoraPlataforma

Iconos dibujados, cada uno de un color sólido

Los emojis los pinta el sistema operativo: cambian de forma entre un Mac, un Windows y un Android, traen su propia paleta y no se pueden teñir.

Ahora son SVG con el mismo trazo que el resto de la aplicación, cada uno de un color plano y distinto. Se dibujan catorce nuevos —diente, gafas, oreja, huella, pie, cerebro, jeringa, flor, manzana, bocadillo, brote, edificio y llave— con la misma fábrica que ya usaban los demás.

MejoraPlataforma

Un icono para cada oficio

En el desplegable, "Todos los sectores", Inmobiliarias y ClínicasIA llevaban icono y los doce oficios no, así que la lista salía descuadrada: unas filas con cuadradito y otras empezando en el texto.

Ahora cada sector tiene el suyo, del mismo tipo que los que ya había —emoji sobre un cuadradito con degradado— y ninguno se repite. El icono vive junto al resto de los datos del sector, así que se usa también en el distintivo de su portada y en las tarjetas del índice, sin declararlo tres veces.

CorregidoPlataforma

El formulario propio, no el de planosIA

Las doce landings de oficio heredaron el formulario de planosIA, que ya tiene siete envíos de su propia landing.

Ahora usan /f/phoneiacontacto, que estaba creado, activo y sin estrenar.

MejoraPlataforma

Módulos, Sectores, Demos y Novedades

El menú estaba revuelto: Comercia 24, Atiende 24 y Cita 24 sueltos en la barra, y bajo "Sectores" convivían Custodia, PYMES, Demuestra 24, Secretaria IA y la demo en directo, que no son sectores.

Ahora hay cuatro zonas y la separación es comercial: MÓDULOS es lo que vendes por piezas, SECTORES es la misma máquina hablando el idioma de cada oficio, y DEMOS es lo que alguien puede tocar sin hablar con nadie.

NuevoPlataforma

Una landing por oficio, desde una sola plantilla

Doce landings escritas a mano serían doce páginas casi iguales: imposibles de mantener y, para Google, contenido clon que se penaliza.

Doce sectores: dental, estética, medicina estética, óptica, centros auditivos, psicología, fisioterapia, podología, nutrición, logopedia, veterinaria y clínicas capilares.

2
sept · miércoles
NuevoPlataforma

Iniciales de color en las tarjetas

Una columna con catorce tarjetas era una lista de texto gris: para encontrar una había que leerlas todas. Ahora cada oportunidad lleva delante sus dos iniciales en blanco sobre un círculo de color.

El color se ata al id, no a la posición, así que la tarjeta se queda con el suyo al arrastrarla o al cambiar de etapa; uno que bailara con cada movimiento no serviría para reconocer nada. Y se reparte sobre el tablero entero, no por columna: por columna, la primera tarjeta de cada una saldría siempre azul.

NuevoAtiende 24

Heredar el tipo de un contacto ya catalogado

El correo de ayer de Carlos entró sin tipo, aunque a Carlos le habías puesto tipo cuatro veces. Un correo sin tipo no se puede filtrar ni enrutar, y no tiene sentido que el quinto entre en blanco porque la IA no supo enc…

Ahora, si el correo se queda sin tipo, se coge el último que usaste para ese contacto. Por contacto y no por dirección, porque la misma persona escribe desde varias; se cae a la dirección solo si aún no hay contacto.

CorregidoCRM

Las mismas trampas en todos los formularios públicos

Quedaban tres sin cebo ni reloj, solo con el tope por IP: "Me interesa" y "Quiero vender" del portal inmobiliario, y la captación del final de la demo.

Las dos trampas salen a src/components/AntiBot.tsx en vez de copiarse cuatro veces: si mañana hace falta una tercera, se pone en un sitio y la llevan todos.

CorregidoCRM

Cerrar la puerta a los bots

El formulario público no tenía ninguna defensa. Ayer un bot mandó cuatro envíos en dos minutos y medio desde la misma IP, con el nombre aporreado, dos gmail inventados y teléfonos de Kenia, Ucrania e Israel que no cuadra…

Tres filtros, ninguno molesta a quien rellena de verdad: - un campo cebo, fuera de pantalla y sin tabulación, que solo rellena un bot - un mínimo de 2,5 s: leer y escribir lleva más que eso - un tope de 5 envíos por hora y por IP; el bot mandó cuatro en 150 segundos

NuevoAtiende 24

Redactar un correo desde cualquier pestaña, y a la hora que quieras

Redactar existía pero escondido en "Correos enviados", así que desde la bandeja de entrada no había forma de escribirle a nadie. Ahora el botón está en la cabecera, visible en todas las pestañas.

Y se puede diferir. Escribir a un cliente a las once de la noche y que le llegue a esa hora no es lo mismo que le llegue a las nueve; hasta ahora la única salida era acordarse. Si eliges día y hora se guarda en attend_outbox y sale solo.

CorregidoMovilidad

Un salto de línea en el secreto tumbaba todas las notificaciones

Apple respondía {"reason":"BadJwtToken"} y el subject en uso era "mailto:soporte@phoneia.es\n". El salto de línea se coló al pegar el valor en el panel de Supabase, viaja dentro del token firmado y lo invalida.

Costó encontrarlo porque no se ve y porque todo lo demás estaba bien: las claves eran pareja, los tamaños correctos y la suscripción válida. El 403 no dice qué parte del token falla.

1
sept · martes
CorregidoMovilidad

La campanita decía "Activadas" sin estarlo

El botón se fiaba solo del navegador. El iPhone conserva su suscripción por su cuenta, así que ponía "🔔 Activadas" aunque el servidor no tuviera ninguna fila, y encima escondía el botón de activar: no había forma de arr…

Pasaba por dos motivos a la vez: la fila del servidor se había borrado, y la suscripción del móvil era de la clave VAPID anterior, con la que el servidor ya no firma.

CorregidoMovilidad

Clave VAPID pública nueva, con privada que sí existe

La prueba de la campanita decía "falta configurar VAPID_PRIVATE_KEY". La pública que llevaba el código no tenía pareja guardada en ningún sitio: ni en Supabase, ni en .env, ni en el repositorio.

Par nuevo generado y comprobado: la pública se deriva de la privada y la firma sale de 64 bytes. Aquí va solo la pública, que no es secreta. La privada se configura como secreto en Supabase.

NuevoAtiende 24

Avisar al móvil cuando te escribe un contacto

El correo de Carlos confirmando qué módulos contrataba no generó ningún aviso. El único que había estaba dentro del bloque que abre oportunidad, y ese bloque empieza con "si el contacto NO tiene ya una abierta".

Ahora avisa siempre que escriba alguien de tus Contactos, con la misma regla que la pestaña: sin archivar y sin marcar como sistema. Un boletín no llega a ser contacto, así que no avisa.

CorregidoAtiende 24

Una sola regla, estar en tus Contactos

Había montado dos filtros donde basta uno. La pestaña ya preguntaba "¿está en tus Contactos?", que es la regla correcta; lo que fallaba es que el robot crm@iacontac.es SÍ estaba en Contactos, y ahí seguía saliendo como u…

De 26 contactos, 25 son personas o empresas reales y ese era el único intruso. Así que "No es un cliente" ahora archiva el contacto, que es lo que ya significa "no está en mi lista", en vez de esconderlo solo de esta pestaña.

NuevoAtiende 24

Fuera los avisos del sistema de "De contactos"

Cruzar con Contactos no bastaba. Un boletín nunca llega a crear contacto, pero los avisos de nuestros propios productos (crm@iacontac.es) sí acabaron dados de alta, y sus 443 correos tapaban a las personas de verdad, que…

No hay manera de que el programa lo adivine: se miró si servía la categoría de la IA y no sirve, porque clasifica igual de "soporte" el aviso del robot que el correo de Eva Osuna, que es una clienta. Tampoco vale el dominio: iacontac.es no es uno de los buzones de la organización.

NuevoAtiende 24

Pestaña con los correos de contactos

Los correos de personas se perdían entre los boletines: de 2.624 recibidos, solo 465 vienen de alguien de la lista de Contactos. El de Carlos confirmando qué módulos contrataba estaba entre medias y pasó sin verse.

"De contactos" es la misma vista de Correos recibidos, cruzada con Contactos para quedarse solo con los que no están archivados. Ese es el filtro que separa a una persona de un boletín: los remitentes masivos nunca llegan a crear contacto, y los que entraron antes de esa regla quedaron archivados.

MejoraPlataforma

Decir la base y el IVA en el bloque de contratar

Las cifras del bloque "Como prefieres contratarlo" llevan el IVA dentro —134,31 son 111,00 más el 21%— pero era el único sitio del documento que no lo decía: el PDF pone "IVA inc." y la tabla de detalle tiene su pie con…

Para una empresa esto no es un detalle: se deduce el IVA, así que lo primero que busca es la base. Si lee 134,31 y da por hecho que es sin IVA, espera una factura de 162,52 y la reclamacion llega sola.

CorregidoComercia 24

No se podía reenviar uno que el cliente ya había visto

enviar() guardaba antes de mandar, y save() se niega en cuanto el cliente ha abierto la propuesta. El resultado era que el botón "Enviar por email" seguía ahi, dejabas escrito el destinatario, le dabas a enviar y salía u…

El bloqueo protege el CONTENIDO del documento, no el acto de mandarlo. Reenviar manda el mismo documento tal cual, así que ahora no se guarda nada: se usa el que ya esta. Sirve para insistirle al mismo cliente o para mandarselo a otra persona de la empresa.

MejoraPlataforma

Legible de un vistazo

El historial se leía mal justo cuando más falta hace, que es al abrir la oportunidad para decidir que hacer con ella:

- Una respuesta de la IA de quince líneas empujaba todo lo demas fuera de la pantalla; para ver tres mensajes había que bajar cuatro veces. Ahora los textos largos se pliegan a cuatro líneas con "Ver más". - Cada línea repetía la fecha completa ("1/9/26, 12:32"). El día pasa a un separador —"Hoy", "Ayer", "lunes, 1 de septiembre"— y en la línea queda solo la hora.

CorregidoCRM

El historial no enseñaba lo apuntado a mano

La línea de tiempo del contacto leía las llamadas de voz, los mensajes, los correos y los presupuestos enviados, pero no la tabla events.

Ahora salen en la misma línea de tiempo, en verde si se hablo con la persona y en gris si no se la pudo localizar, que es lo que se busca al repasarlo.

NuevoCRM

Registrar lo ya hecho desde la propia oportunidad

El panel de eventos de la oportunidad solo sabía programar lo que falta por hacer: el formulario venia con mañana a las 10:00 y dejaba el evento en "scheduled".

Ahora hay dos botones, porque son dos cosas distintas: "+ Nuevo evento" para lo que falta y "Registrar lo ya hecho" para lo ocurrido, con su lista de resultados. La lista de eventos muestra el resultado cuando lo hay.

NuevoCRM

Registrar una actividad que ya ha pasado

Para anotar "le he llamado y no me ha contestado" había que ir a la agenda y rellenar el formulario de planificar: título, ubicacion, oportunidad e inmueble.

Ahora, en el menu de cada contacto, "Registrar actividad" pregunta solo lo que hace falta —tipo, resultado, fecha y hora, con la fecha y la hora ya puestas— y compone el título solo. Se avisa si la fecha es futura: esto es para lo ya ocurrido, no para planificar.

CorregidoComercia 24

La columna de acciones quedaba recortada

La tabla es más ancha que la pantalla y su contenedor lleva overflow-hidden para redondear las esquinas, así que además de redondear recortaba: la última columna —la del menu con Editar, Ver la propuesta, Duplicar y A la…

Ahora la tabla va dentro de un envoltorio con desplazamiento horizontal, y la columna de acciones queda anclada a la derecha para no depender de que nadie se acuerde de arrastrar. El menu se dibuja con createPortal y position fixed, fuera de la tabla, así que el contenedor nuevo no lo recorta.

NuevoInmobiliarias

El formulario, arriba a la derecha

La landing pasa al patron de /custodia: el relato a la izquierda y el formulario en su tarjeta arriba a la derecha.

Se sirve como iframe de /f/planosia, igual que /custodia con el suyo: el formulario se edita en la aplicación y no hay que tocar la landing para cambiar un campo.

MejoraPlataforma

Icono también cuando la etiqueta es una expresion

Se me escapo una clase entera: los botones cuyo texto sale de una condicion, {saving ? "Guardando…" : "Guardar"}.

Los que usan el componente ya estaban bien: la condicion se evalua antes de llegar a el, así que ve una cadena.

MejoraPlataforma

Icono también en los botones sueltos

Quedaban fuera del criterio los <button> que no usan el componente. De 569, la mayoría ya son icono puro -las equis de cerrar, las flechas de reordenar- o llevan JSX propio; los candidatos reales de solo texto eran 65.

Hecho con un cambio mecanico sobre esos 65, en 38 ficheros, con la misma tabla que usa el componente. Regla estricta: si el className no era un texto que se pudiera tocar sin riesgo, el botón se saltaba -no se ha saltado ninguno-. Se anade inline-flex para que el icono no descoloque el texto.

MejoraPlataforma

Más verbos en la tabla de iconos

Segunda tanda: activar, asignar, calcular, restaurar, archivar, facturar, catálogo, numeración, spam, contrasena, llamar. Del 78% al 88% de las etiquetas.

Lo que sigue sin encajar se queda sin icono a proposito: un icono equivocado confunde más que la ausencia de uno.

NuevoWeb y marca

Cada botón con su icono, del color del texto

Criterio para toda la aplicación. Son 347 botones en 61 ficheros y solo 5 llevaban icono: ponerlo a mano uno a uno es inviable y, sobre todo, el criterio se perderia con el primer botón nuevo que alguien escriba.

El componente lo deduce del texto. El vocabulario es corto y muy repetido -Guardar, Cancelar, Borrar, Editar, Anadir- así que una tabla de trece reglas cubre practicamente todo, y lo que no encaja se queda sin icono en vez de con uno equivocado.

NuevoComercia 24

Se puede guardar un borrador sin líneas

Un presupuesto se empieza por el cliente y el asunto, y a veces se deja a medias para seguir luego o para esperar un precio. Exigir una línea para poder guardar obligaba a inventarse un concepto o a perder lo escrito.

Lo que sigue exigiendo líneas es lo que sale hacia el cliente -enviar por email, generar el impreso, crear el enlace de cobro-: ahi un documento sin conceptos no es un borrador a medias, es un error delante del cliente.

CorregidoPlataforma

ClockIcon estaba declarado dos veces

Anadi uno sin comprobar que ya existía más abajo en el mismo fichero, y la compilacion caia con 'Cannot redeclare block-scoped variable'. Solo hacia falta el sobre.

MejoraComercia 24

Reloj en Programar y sobre en Enviar

Iconos SVG y no emoji: los emoji traen su propio color y no se pueden pintar de blanco. Estos heredan currentColor, así que van del mismo blanco que el texto del botón.

MejoraComercia 24

Enviar en rojo y programar en verde

El correo sale al pulsar y no hay vuelta atras; el programado se puede cancelar hasta que salga. Los colores lo dicen antes de leer el botón.

Anade la variante 'success' al botón, que no existía: mejor eso que un parche de clases sueltas en un sitio.

NuevoCRM

Sitio web del contacto, pulsable

Antes acababa en Notas o en el buscador: se tenía delante el nombre de la empresa y había que ir a buscarla fuera para ver a que se dedica.

- Se escribe como se dice -"climaxthor.es"- y se completa el https al guardar: un href sin esquema lo interpreta el navegador como una ruta de la propia aplicación y lleva a una pagina que no existe. - El enlace va junto al campo y no dentro, porque un input no se puede pulsar para navegar. Abre en pestana nueva.

CorregidoPlataforma

Las tildes que se perdian en el asunto del commit

La cronología se genera de los asuntos de commit y varios se escribieron sin tildes, así que salían así a una pagina publica: "Papelera de 30 días", "La introducción del presupuesto".

La correccion vive en scripts/correcciones-novedades.json y se aplica al generar, de modo que sobrevive a volver a ejecutar el script -que es justamente lo que no hace parchear el JSON a mano-.

¿Echas algo en falta? Cuéntanoslo.