Alumbra: Detección de abuso psicológico en conversaciones personales Alumbra es una plataforma innovadora que analiza conversaciones escritas para detectar señales de abuso psicológico en relaciones personales. A través de técnicas avanzadas de inteligencia artificial y procesamiento de lenguaje natural, identifica patrones sutiles de manipulación emocional, control, desvalorización, gaslighting, amenazas y otros indicios de violencia emocional que muchas veces pasan desapercibidos.
¿Cómo funciona? El proceso es simple. El usuario completa un breve cuestionario inicial que da contexto, proporciona un contacto de emergencia (que no se almacena), y luego copia una conversación reciente. En segundos, Alumbra entrega un análisis privado con 4 elementos: un puntaje de riesgo de 0 a 100, la clasificación del tipo de abuso si lo hay, ejemplos específicos de los mensajes que lo evidencian,, y recomendaciones claras y personalizadas. Si se detecta un nivel alto de riesgo, el sistema activa una alerta automática que se envía por correo al contacto de emergencia con sugerencias básicas de apoyo.
¿Para quién es? Personas que tienen dudas sobre la salud emocional de una relación. Profesionales de la psicología, trabajo social, legal o educativo. Organizaciones que trabajan en prevención de la violencia y el cuidado emocional.
¿Qué ofrece? Análisis automatizado y confidencial de conversaciones. Identificación de categorías de abuso emocional y manipulación. Recomendaciones personalizadas basadas en los resultados. Detección de riesgo inminente de daño físico o suicidio. Recursos educativos y de apoyo.
Enlace a la plataforma https://alumbraia.netlify.app
Ejemplo de implementación técnica (analyze-conversation.ts) "import {ai} from '@/ai/ai-instance'; // Correctly imports the Genkit instance using googleAI plugin import {z} from 'genkit'; import type { AnalysisResult } from '@/services/shadai'; // Keep type import // Import the actual email sending function import { sendEmergencyEmail } from '@/services/email';
const AnalyzeConversationInputSchema = z.object({ text: z.string().describe('El texto de la conversación a analizar.'), generoUsuario: z.enum(["hombre", "mujer", "prefiero_no_decirlo"]).describe('El género del usuario que proporciona la conversación.'), tipoRelacion: z.enum(["pareja", "amistad", "familiar", "laboral", "grupo"]).describe('El tipo de relación entre las personas en la conversación.'), userData: z.object({ nombre: z.string(), apellido: z.string(), edad: z.number(), emailEmergencia: z.string().email().optional().or(z.literal('')), }).describe('Datos del usuario que proporciona la conversación.'), }); export type AnalyzeConversationInput = z.infer;
const AnalyzeConversationOutputSchema = z.object({
analysisResult: z.object({
nivel_riesgo: z
.number()
.describe('El nivel de riesgo general estimado de abuso, manipulación o peligro inminente (incluyendo suicidio o daño físico), en una escala de 0 (muy bajo) a 100 (muy alto).')
.min(0)
.max(100),
riesgo_inminente: z.boolean().describe('Indica si se detecta un riesgo alto e inminente de daño físico o suicidio.'),
resumen_riesgo: z.string().describe('Un breve resumen (1-2 frases) explicando la naturaleza del riesgo detectado, especialmente si riesgo_inminente es true. Menciona si el comportamiento parece influenciado por fuentes externas si es relevante.'),
categorias_detectadas: z
.array(z.string())
.describe('Categorías específicas de abuso emocional, manipulación o indicadores de riesgo detectados (ej. gaslighting, culpabilización, aislamiento, minimización, ideacion_suicida, amenaza_directa, etc.). Si no se detecta nada, devolver un array vacío.'),
ejemplos: z
.array(z.string())
.describe('Frases textuales exactas de la conversación que ejemplifican las categorías detectadas. Si no hay ejemplos claros, devolver un array vacío.'),
recomendaciones: z
.array(z.string())
.describe('Recomendaciones específicas, detalladas y accionables para la persona que experimenta la conversación, basadas directamente en las categorías y ejemplos detectados. Deben ser elaboradas y explicar el por qué de la recomendación en relación al análisis, considerando el contexto de género, la posibilidad de que el usuario sea el agresor, quién es la persona afectada y la presencia de riesgo inminente. Evitar consejos genéricos. Menciona si el comportamiento parece influenciado por fuentes externas si es relevante.'),
posible_agresor: z
.enum(["usuario", "interlocutor", "ambiguo", "ninguno", "externo"])
.describe('Identificación de quién o qué parece ser el principal origen del comportamiento problemático según el análisis. "usuario" si parece ser la persona que envió el texto, "interlocutor" si parece ser la otra persona, "ambiguo" si no está claro o ambos participan, "ninguno" si no se detecta abuso significativo, "externo" si el comportamiento parece imitado o influenciado por fuentes externas (medios, ideologías, etc.).'),
persona_afectada: z
.enum(["usuario", "interlocutor", "ambos", "grupo", "ninguno"])
.describe('Identificación de quién parece ser la principal persona afectada negativamente por el comportamiento problemático detectado. "usuario" si es la persona que envió el texto, "interlocutor" si es la otra persona (o principal interlocutor), "ambos" si ambas partes se ven afectadas negativamente, "grupo" si el impacto negativo es en varias personas de un grupo, "ninguno" si no se detecta un impacto negativo claro en nadie.'),
}).describe('El resultado detallado del análisis de la conversación.')
});
export type AnalyzeConversationOutput = z.infer;"
Log in or sign up for Devpost to join the conversation.