Versión 1.0 · Vigente desde: 30 de agosto de 2026
Responsable del tratamiento: grAppe, Colombia — grappestudio@gmail.com Contacto: grappestudio@gmail.com
Pulso es una aplicación gratuita que muestra información pública de lluvia, nivel de ríos, calidad del aire, clima y movilidad para el Valle de Aburrá. Esta política explica qué datos trata la aplicación, con qué finalidad, y qué opciones tiene usted.
Escrita en español (Colombia), que es la versión que prevalece en caso de discrepancia con cualquier traducción.
Pulso no tiene cuentas ni registro. Hay una sola función en la que usted puede enviarnos información, y siempre es usted quien la inicia.
Desde Ajustes → Enviar sugerencia o reportar un fallo (también disponible en la pestaña Información) usted puede escribirnos. Antes de enviar, la app le muestra exactamente lo que se va a enviar, con los valores reales, en un bloque desplegable llamado «Qué se envía».
Se envía:
No se envía, y esto es deliberado:
Como no se envía ningún identificador, no podemos saber qué reportes son suyos, ni relacionarlos con usted ni entre ellos. Eso es intencional, y tiene una consecuencia que conviene decir claramente: tampoco podemos recuperar ni borrar un reporte concreto a petición suya (véase la sección 8).
Para evitar abusos, nuestro servidor procesa momentáneamente la dirección IP desde la que llega el reporte, únicamente para limitar cuántos mensajes puede enviar un mismo origen. Esa dirección no se guarda junto al reporte; se convierte en un valor cifrado de un solo sentido que cambia cada día y se descarta a las pocas horas.
Los reportes se conservan como máximo 400 días (véase la sección 7).
Si usted nos escribe voluntariamente a grappestudio@gmail.com, trataremos su correo y el contenido de su mensaje únicamente para responderle.
Pulso utiliza servicios de Firebase, de Google LLC, que actúa como encargado del tratamiento. Estos servicios recogen lo siguiente:
Cuando la aplicación se cierra inesperadamente o registra un error, se envía un informe que incluye la traza del fallo, el modelo del dispositivo, la versión del sistema operativo, la versión de la aplicación, el estado de memoria y disco, y un identificador de instalación generado por Firebase.
Adjuntamos además tres claves propias para poder reproducir el fallo: la capa del mapa que estaba activa (layer), la versión de la aplicación (app_version) y el idioma del dispositivo (locale).
Finalidad: corregir errores. Base legal: interés legítimo en mantener la aplicación funcionando.
Duración del arranque, del renderizado de pantallas y de las peticiones de red, junto con datos técnicos del dispositivo y la red — todo ello recogido automáticamente por el SDK.
Pulso añade dos trazas propias, que miden únicamente duraciones:
| Traza | Qué mide |
|---|---|
layer_time_to_data | cuánto tardó una capa del mapa en mostrar sus datos, con la capa y si los datos vinieron de la red, de la caché del dispositivo, de un archivo incluido en la app, o ya estaban cargados |
siata_refresh | cuánto tardó una actualización completa de datos |
Ninguna contiene texto escrito por usted ni su ubicación.
Se rige por el mismo interruptor que la analítica de uso: Ajustes → Privacidad → «Compartir estadísticas de uso» desactiva también la recolección de rendimiento, incluida la parte automática descrita arriba.
Finalidad: detectar lentitud y peticiones que fallan.
Pulso registra 47 eventos propios. Ninguno contiene texto escrito por usted, ni su ubicación ni nada derivado de ella.
| Qué mide | Eventos |
|---|---|
| Qué capa o pantalla está viendo, y por cuánto tiempo | layer_switch, layer_dwell, slot5_swap, bar_expand, screen_view, settings_open, info_open, alerts_open, splash_complete |
| Qué toca en el mapa | callout_open, map_sample, radar_play, radar_scrub, radar_jump_live, radar_expand, forecast_slot_change, air_submetric_change, bike_intent_change, bus_route_select, metro_line_reveal, transit_list_toggle |
| Si los datos realmente cargaron, para distinguir «todo despejado» de «no teníamos datos» | refresh, data_outcome, overlay_empty, notice_shown, layer_hidden_remote, rc_unknown_layer_key |
| Cuánto tardaron las cosas | request_timing, layer_time_to_data |
| Si las alertas le llegan y le sirven | alert_banner_shown, alert_navigate, alert_dismiss, alert_pref_change, push_open, push_suppressed, push_permission |
| Permisos y preferencias | location_primer_shown, location_result, home_zone_set, setting_change |
| Salud de la app y bloqueo por versión | info_link_tap, diagnostics_open, feedback_open, feedback_submit, update_required_shown, update_required_tap, review_prompt_requested |
Dos merecen decirse en detalle, porque son los que con razón le preocuparían:
home_zone_set registra únicamente cómo se eligió un municipio: por una lectura de ubicación o desde la lista. No registra cuál municipio. Nada derivado de su ubicación se adjunta jamás a un evento de analítica.feedback_submit registra únicamente que se envió un mensaje y si tuvo éxito. Nunca contiene el mensaje.request_timing registra cuánto tardó una petición a una fuente de datos pública. La dirección se reduce antes a un patrón — se descarta cualquier parámetro de consulta y los dígitos se sustituyen — de modo que identifica el punto de acceso, nunca una petición concreta, y no puede transportar ningún token.También asociamos unas pocas propiedades de usuario a esta instalación para poder leer las cifras por segmento: sus preferencias de apariencia, temperatura y unidades, si los permisos de notificación y ubicación están concedidos, si hay un municipio de referencia guardado (un sí/no, nunca cuál) y qué capa del mapa usa más esta instalación.
Puede desactivar todo esto. Ajustes → Privacidad → «Compartir estadísticas de uso». Viene activado, y al desactivarlo Firebase Analytics deja de recoger absolutamente nada de esta instalación, incluidos los eventos automáticos descritos en el párrafo siguiente. Los informes de fallos (§3.1) son aparte y siguen activos, para poder corregir el error que usted encuentre.
Debe saber además que el propio SDK de Firebase Analytics recoge, por su cuenta y de forma estándar, eventos automáticos (primera apertura, sesiones, actualización de la aplicación), características del dispositivo, y una ubicación aproximada de nivel país o región derivada de la dirección IP — no del GPS. Esa deducción la hace Google, no Pulso, y no le da a Pulso su ubicación.
Los eventos se asocian a un identificador de instancia de aplicación creado por Firebase. Ese identificador no está vinculado a su nombre, su correo ni su cuenta, y se restablece si usted desinstala y vuelve a instalar la aplicación.
Finalidad: entender qué partes de la aplicación se usan, para decidir qué mejorar.
La aplicación consulta periódicamente una configuración en el servidor (qué capas mostrar, si hay un aviso de mantenimiento, si las alertas están habilitadas). La consulta transmite el identificador de instalación y datos técnicos del dispositivo. No se envía nada sobre su uso.
Las alertas de Pulso son difusiones a un tema: el dispositivo se suscribe y el servidor publica un mensaje para todos los suscriptores.
Esto tiene una consecuencia deliberada y favorable para usted: Pulso no almacena, no transmite y no lleva ningún registro del identificador de su dispositivo. No existe una base de datos de dispositivos, porque el envío por temas no la necesita.
El nombre del tema depende de lo que usted elija en la pantalla Alertas:
alerts_v1_river, según lo que haya activado;alerts_v1_river_envigado.⚠️ Conviene que sepa lo que esto implica. Pulso no recibe esa información, pero la suscripción se hace ante Firebase Cloud Messaging (Google), de modo que Google puede saber que este dispositivo escucha los avisos de crecientes de un municipio determinado. Es el precio de que su teléfono no suene por avisos de la otra punta del valle. Si prefiere evitarlo, no guarde lugares: sin lugares guardados el dispositivo se suscribe únicamente al tema general del valle, que no dice nada sobre dónde está usted.
El sistema operativo genera un token de notificación (FCM en Android, APNs en iOS) que permanece en el dispositivo. Solo aparece en las versiones internas de desarrollo, en la pantalla Información, para poder enviar una notificación de prueba a mano; copiarlo es una acción suya, nunca automática. Las versiones publicadas no lo muestran en ninguna pantalla.
En las versiones publicadas, iOS utiliza App Attest de Apple para certificar ante nuestro servidor que la petición viene de una copia auténtica de Pulso y no de un script. Es una comprobación criptográfica del dispositivo; no identifica a la persona.
Esta sección describe la única forma en que Pulso puede usar su ubicación.
Qué ocurre. La aplicación puede pedir permiso para tomar una lectura de su posición. En iOS esto ocurre al tocar «Usar mi ubicación» en la pantalla de Alertas, y al abrir la aplicación en el pronóstico si ya tenía el permiso concedido. En Android ocurre la primera vez que se abre el pronóstico, si usted lo permite. Si lo concede, la aplicación solicita una lectura de posición, la compara con los límites municipales que vienen incluidos en la aplicación, obtiene el nombre de la zona —por ejemplo envigado— y descarta la coordenada inmediatamente.
Por qué iOS la repite al abrir. Porque el municipio guardado envejece: quien se mudó, o quien tocó una vez otro municipio en el mapa por curiosidad, seguía viendo ese pronóstico para siempre aunque el permiso de ubicación estuviera concedido. Cada lectura sustituye a la anterior — no se acumulan, no se guardan, y ninguna sale del teléfono. Lo que usted elija a mano en el selector o tocando el mapa manda durante esa sesión: la ubicación no le lleva la contraria.
Si no concede el permiso, no se elige ningún municipio. La aplicación no adivina uno, y tampoco conserva el que dedujo de una lectura anterior: el pronóstico aparece sin municipio, con el texto «Selecciona un municipio primero», hasta que usted elija uno. El que usted haya elegido a mano sí se conserva, porque no es una suposición.
Qué se guarda: el nombre de la zona, en el dispositivo. Qué no se guarda ni se transmite jamás: la coordenada, la altitud, la precisión, la velocidad, la hora del posicionamiento, ni ningún historial. No se adjunta a ningún evento de analítica, ni a un reporte de fallo, ni a una sugerencia.
No hay seguimiento continuo. La aplicación no usa localización en segundo plano, ni geocercas, ni región monitorizada, ni actualizaciones significativas de ubicación. Pide una lectura, la convierte en un nombre y termina.
Puede prescindir de ella por completo. La misma pantalla permite elegir los lugares de una lista de trece zonas, sin conceder ningún permiso. Funciona exactamente igual de bien en ambas plataformas.
En la declaración de privacidad de Apple esto se declara como Precise Location, no como Coarse Location, aunque la aplicación pida una precisión de cien metros: esa cifra es una indicación para el sistema, no un límite, y Apple exige declarar el dato más granular que el código podría recibir. En Android la aplicación solicita ACCESS_COARSE_LOCATION (solo aproximada), por lo que el formulario de Play declara Approximate location.
Nunca se envían a ningún servidor y desaparecen al desinstalar la aplicación:
envigado,bello—, nunca como coordenadas. Puede elegirlos de una lista; en ambas plataformas también puede usar su ubicación una vez para rellenar uno, y en ese caso solo se guarda la zona resultante (véase el punto 3.7). ⚠️ La lista en sí no sale del dispositivo, pero determina a qué temas de notificación se suscribe: véase la advertencia del punto 3.5.En Android, las copias de seguridad están desactivadas (allowBackup="false"), de modo que nada de lo anterior se sube a Google Drive.
Pulso obtiene los datos directamente de las fuentes públicas. Cuando lo hace, esos servidores reciben, como en cualquier petición de internet, la dirección IP de su dispositivo y la información técnica de la conexión. Pulso no les envía nada más.
| Servidor | Para qué | Responsable |
|---|---|---|
siata.gov.co, geoportal.siata.gov.co | lluvia, radar, nivel de ríos, calidad del aire, clima | SIATA / Área Metropolitana del Valle de Aburrá |
www.metrodemedellin.gov.co | estaciones y líneas del Metro | Metro de Medellín |
www.datos.gov.co | conjuntos de datos abiertos | Gobierno de Colombia |
api.citybik.es | estaciones y bicicletas de EnCicla | CityBikes (proveedor privado) |
| Servicios de Google/Firebase | analítica, fallos, configuración, notificaciones | Google LLC |
| SDK de Google Maps (solo Android) | el mapa base | Google LLC |
| MapKit (solo iOS) | el mapa base | Apple Inc. |
Estos terceros tratan esos datos bajo sus propias políticas, que no controlamos:
Pulso no tiene relación oficial con SIATA, el Área Metropolitana del Valle de Aburrá, el Metro de Medellín ni EnCicla. Utiliza sus datos públicos con atribución.
Los servicios de Firebase procesan y almacenan los datos descritos en la sección 3 en servidores de Google fuera de Colombia, principalmente en Estados Unidos. Google se acoge a las cláusulas contractuales tipo y a los marcos de transferencia aplicables. Al usar Pulso, usted acepta esta transferencia, que es imprescindible para el funcionamiento de los servicios de fallos y analítica.
Conforme a la Ley 1581 de 2012 y al Decreto 1377 de 2013 de Colombia, usted tiene derecho a conocer, actualizar, rectificar y suprimir sus datos personales, a solicitar prueba de la autorización otorgada, a ser informado sobre el uso que se les ha dado, a presentar quejas ante la Superintendencia de Industria y Comercio y a revocar la autorización.
Si usted se encuentra en el Espacio Económico Europeo o el Reino Unido, dispone además de los derechos de acceso, rectificación, supresión, limitación, portabilidad y oposición previstos en el RGPD.
Una advertencia honesta sobre cómo ejercerlos: Pulso no guarda ningún dato que le identifique, de modo que en la práctica no podemos localizar "sus" datos dentro de la analítica ni de los informes de fallos, ni siquiera si usted nos lo pide. Son anónimos respecto de usted por diseño. Lo que sí puede hacer, con efecto inmediato:
Para cualquier solicitud o consulta: grappestudio@gmail.com. Responderemos en un plazo máximo de quince (15) días hábiles, conforme a la Ley 1581.
Pulso no está dirigida a menores de 13 años y no recoge conscientemente datos de menores. No hay contenido generado por usuarios, ni mensajería, ni compras dentro de la aplicación.
Todas las conexiones de la aplicación usan HTTPS. La aplicación no almacena credenciales. El acceso administrativo al proyecto de Firebase está restringido y protegido con autenticación de dos factores; las reglas de la base de datos permiten únicamente la lectura pública de un documento de estado del servicio, y deniegan toda escritura desde los clientes.
Ningún sistema es infalible: no podemos garantizar la seguridad absoluta de una transmisión por internet.
Si esta política cambia de forma sustancial, publicaremos la nueva versión en https://grappe-studio.netlify.app/pulso/es/privacy.html con una fecha de vigencia actualizada, y — cuando el cambio lo amerite — lo anunciaremos dentro de la aplicación. El uso continuado tras la fecha de vigencia implica la aceptación de la versión revisada.
grAppe Colombia grappestudio@gmail.com