Ir al contenido
📐 Ficha de arquitectura técnica

La arquitectura de TranscribIA, descrita para sus equipos técnicos.

El documento de referencia más solicitado en la fase preventa. TranscribIA es una plataforma de transcripción de audio diseñada para organizaciones que necesitan comprender, auditar y controlar la cadena de procesamiento de sus grabaciones. Esta ficha describe los componentes, el flujo de datos, el aislamiento entre organizaciones, las medidas de seguridad integradas, los dos modelos de despliegue y la cadena de subcontratación, de forma objetiva y sin exagerar las garantías.

Ficha técnica v1.0 — 30 de junio de 2026. Editor: AMBASSADIA SARL (Mónaco). Contacto: contact@transcribia.eu.

Componentes

Una arquitectura de servicios dedicados

Cada responsabilidad corresponde a un servicio distinto, orquestado mediante Docker Compose (8 servicios). Ningún dato pasa por un componente cuyo cometido no lo requiera.

# Esquema general de componentes

┌─────────────────────────────────────────────────────────────┐
│  Utilisateurs — Frontend React 19 / TypeScript / Vite       │
└──────────────────────────┬──────────────────────────────────┘
                           ▼   HTTPS · TLS 1.2+
┌─────────────────────────────────────────────────────────────┐
│  Nginx — reverse proxy + termination TLS                    │
└─┬──────────────────────┬──────────────────────┬────────────┘
  ▼                      ▼                      ▼
┌──────────────┐   ┌──────────────────┐   ┌────────────────────┐
│  API Laravel │   │  Laravel Reverb  │   │  ClamAV            │
│  12 / PHP 8.3│   │  (WebSocket)     │   │  antivirus uploads │
│  + Sanctum   │   │  progression RT  │   │                    │
└──┬───────┬───┘   └──────────────────┘   └────────────────────┘
   │       │
   ▼       ▼
┌──────────────┐   ┌──────────────────────────────────────────┐
│  PostgreSQL  │   │  Redis 7 — cache · queues · sessions     │
│  16          │   └──────────────────────────────────────────┘
│  1 schéma /  │   ┌──────────────────────────────────────────┐
│  organisa-   │   │  Workers transcription (consommateurs)    │
│  tion        │   └─────────────────┬────────────────────────┘
└──────────────┘                     ▼
                          ┌────────────────────────────────────┐
                          │  Serveur GPU — WhisperX / pyannote │
                          │  transcription + diarisation       │
                          └─────────────────┬──────────────────┘
                                            ▼
                          ┌────────────────────────────────────┐
                          │  IA — OpenRouter (Anthropic/OpenAI)│
                          │  post-traitement · no-train        │
                          └────────────────────────────────────┘

  Sauvegardes : age (chiffrement) + rclone → Backblaze B2 / Scaleway (UE)
🖥️

Frontend

React 19 · TypeScript · Vite

  • SPA compilada estáticamente y servida por Nginx
  • Progreso en tiempo real mediante Reverb (WebSocket)
  • Sin lógica de negocio en el navegador
⚙️

API Laravel

Laravel 12 · PHP 8.3 · Sanctum

  • Lógica de negocio, REST y orquestación de tareas
  • Autenticación Sanctum + 2FA TOTP
  • RBAC de 5 niveles y mínimo privilegio
🐘

PostgreSQL

PostgreSQL 16 · multiinquilino

  • Un esquema dedicado por organización
  • Cifrado en reposo (disco + base de datos)
  • Sin consultas entre organizaciones
⚡

Redis

Redis 7 · caché · colas

  • Caché de la aplicación y sesiones
  • Colas de transcripción
  • Coordinación de workers
📡

Laravel Reverb

WebSocket en tiempo real

  • Progreso de transcripción en directo
  • Notificaciones y estados de tareas
  • Canal aislado por organización
🔧

Workers de transcripción

Consumidores de colas

  • Orquestan ClamAV → GPU → IA
  • Procesamiento asíncrono y reproducible
  • Aislamiento por tarea y organización
🎮

Servidor GPU

WhisperX · pyannote

  • Transcripción de audio de alta precisión
  • Diarización (identificación de hablantes)
  • Servidor dedicado, externo a la API
🤖

IA (posprocesamiento)

OpenRouter · Anthropic / OpenAI

  • Formato y posprocesamiento del texto
  • Cláusula de no entrenamiento (no-train)
  • Datos efímeros, no conservados

El recorrido de una grabación

Del archivo de audio al documento cifrado

Esta cadena ilustra el recorrido habitual de una grabación. Las medidas aplicables y el comportamiento cuando un componente no está disponible dependen del modo de despliegue y del ámbito contractual; la política de seguridad describe en particular el comportamiento del antivirus.

1

Carga cifrada

El archivo de audio viaja por HTTPS (TLS 1.2+) hasta Nginx y después a la API Laravel.

2

Antivirus (ClamAV)

Análisis sistemático de cada archivo antes de procesarlo. Se rechaza cualquier archivo sospechoso.

3

Puesta en cola (Redis)

La tarea de transcripción se coloca en la cola Redis, aislada por organización.

4

Transcripción GPU

Un worker envía el audio al servidor GPU: WhisperX (transcripción) + pyannote (diarización).

5

Posprocesamiento con IA

Llamada mediante OpenRouter (Anthropic / OpenAI) para dar formato. Cláusula de no entrenamiento, datos efímeros.

6

Almacenamiento cifrado en reposo

La transcripción y los metadatos se escriben en el esquema PostgreSQL dedicado a la organización (cifrado en reposo).

7

Exportación

El usuario exporta el resultado (texto, subtítulos); el progreso se muestra en tiempo real mediante Reverb.

Aislamiento

Una organización, un esquema PostgreSQL dedicado

El aislamiento de datos no se consigue mediante un simple filtro de la aplicación: cada organización dispone de su propio esquema en la base de datos.

TranscribIA aplica un modelo schema-per-organisation en PostgreSQL 16: los datos de un cliente nunca se almacenan en la misma estructura que los de otro. El aislamiento es estructural, en la base de datos, y no solo lógico en la aplicación.

En la práctica, esto significa que ninguna consulta puede, por diseño, cruzar datos de dos organizaciones: el esquema de destino se determina al abrir la sesión de la organización. Este enfoque también facilita la exportación completa, la supresión (derecho al olvido) y una posible extracción para instalar localmente el entorno de una organización.

Los registros de actividad (activity_logs) también se mantienen por organización, y los registros de plataforma (audit_logs) recogen las acciones sensibles sin exponer el contenido de las transcripciones.

Garantías de aislamiento

  • Esquema dedicado. Un esquema PostgreSQL distinto por organización, determinado por la sesión.
  • Sin consultas entre organizaciones. El diseño impide cruzar los datos de dos clientes.
  • Colas aisladas. Las tareas de transcripción están aisladas por organización en Redis.
  • Canal privado en tiempo real. Los eventos de Reverb (progreso) están aislados por organización.
  • Supresión por organización. Exportación ZIP completa y supresión selectiva de una organización sin afectar a las demás.

Seguridad desde el diseño

Controles integrados en la plataforma

Las siguientes medidas son nativas y verificables. Se presentan como controles técnicos, sin prejuzgar el marco de cumplimiento propio de su organización.

🔐

Cifrado (en tránsito y en reposo)

  • TLS 1.2+ obligatorio, HTTPS en todas las conexiones (en tránsito)
  • Cifrado en reposo: disco y base PostgreSQL
  • Copias de seguridad cifradas con age (X25519 + ChaCha20-Poly1305)
  • Secretos de la aplicación protegidos (AES-256-CBC)
🔑

Autenticación reforzada

  • Autenticación Laravel Sanctum
  • 2FA TOTP conforme a RFC 6238, activación según el rol
  • Confirmación de contraseña para acciones destructivas
  • Limitación de solicitudes, CORS estricto y política CSP
👥

Control de acceso (RBAC)

  • RBAC de 5 niveles: super_admin, agent, manager, team_lead, user
  • Principio de mínimo privilegio
  • Permisos por rol y organización
  • Sin privilegios implícitos fuera del entorno de la organización
📋

Registro y auditoría

  • activity_logs por organización + audit_logs de plataforma
  • Trazabilidad de todas las acciones sensibles
  • Exportaciones CSV/JSON para sus auditorías
  • Registros depurados: sin contenido de las transcripciones
🛡️

Antimalware y refuerzo de seguridad

  • ClamAV en todas las cargas, antes del procesamiento
  • Análisis que rechaza archivos sospechosos
  • Componentes y firmas actualizados
  • Servicios aislados (Docker, un cometido por servicio)
♻️

Resiliencia y copias de seguridad

  • Copias de seguridad diarias cifradas en otra ubicación de la UE
  • rclone hacia Backblaze B2 / Scaleway (UE)
  • Instantáneas antes de restaurar (protección frente a sobrescritura)
  • Restauración granular por organización

Dos modelos de despliegue

SaaS soberano en Francia o instalación local

Ambos modos comparten exactamente el mismo producto. La diferencia radica en quién opera los controles de seguridad y dónde residen los datos.

☁️

SaaS soberano (Francia)

Servicio gestionado, alojado en Francia y rápidamente operativo.

Ámbito operado por el editor (AMBASSADIA SARL)

  • Alojamiento Hostinger, centro de datos de Estrasburgo (Francia)
  • El editor supervisa TLS, copias, actualizaciones, ClamAV y refuerzo de seguridad
  • Infraestructura completa gestionada (8 servicios Docker Compose)
  • Copias de seguridad en otra ubicación de la UE (Backblaze B2 / Scaleway)
  • DPA y documentación de cumplimiento listos para utilizar
🏢

Instalación local (su infraestructura)

Despliegue autónomo en su entorno, sin salida de datos.

Ámbito operado por su organización

  • Docker Compose autónomo (8 servicios), en su infraestructura
  • Su responsable de seguridad dirige el refuerzo, los registros, las copias y la supervisión
  • Servidor GPU e IA configurables (posibilidad de modelos locales)
  • Control total del inventario y los controles
  • Adecuado para entornos clasificados o con fuertes exigencias de seguridad

En SaaS soberano, el editor opera y documenta los controles para sus auditorías. En instalación local, su organización asume la responsabilidad operativa de las medidas (refuerzo, supervisión, copias y actualizaciones). Los 8 servicios Docker Compose son idénticos en ambos casos.

Cadena de suministro

Subencargados y flujos externos

TranscribIA recurre a un número limitado de subencargados, todos situados en la Unión Europea. No hay transferencias fuera de la UE por defecto.

🏗️

Hostinger

Alojamiento SaaS (cómputo + almacenamiento principal)

Ubicación
Estrasburgo, Francia
Datos
Archivos de audio, metadatos y base PostgreSQL (cifrados en reposo)
🗄️

Backblaze B2 + Scaleway

Copias cifradas en otra ubicación (age + rclone)

Ubicación
Unión Europea (B2 UE / Scaleway Francia)
Datos
Únicamente copias cifradas: ningún dato en claro
🤖

OpenRouter (Anthropic / OpenAI)

Enrutamiento de IA para el posprocesamiento del texto

Ubicación
Tránsito por API, cláusula de no entrenamiento
Datos
Transcripciones / instrucciones efímeras: sin conservación ni entrenamiento
🎮

Servidor GPU (WhisperX / pyannote)

Transcripción de audio + diarización de hablantes

Ubicación
Infraestructura dedicada, Unión Europea
Datos
Archivos de audio temporales, procesados y después eliminados

La lista completa de subencargados, sus garantías contractuales y la política de conservación se detallan en el expediente público de cumplimiento.

Documentación y contacto

Para responsables de TI, seguridad y compras

El expediente completo de cumplimiento — registro de actividades de tratamiento, modelo de DPA, medidas de seguridad, política de conservación, subencargados y esquemas de arquitectura — se puede consultar públicamente sin crear una cuenta. Nuestro equipo le acompaña en el análisis técnico de su organización.

Editor: AMBASSADIA SARL (Mónaco). Contacto: contact@transcribia.eu. Ficha técnica v1.0 — 30 de junio de 2026.