{
  "$schema_note": "Resumen legible por máquinas del sitio de Alvaro Dosio. Misma fuente de datos que la página.",
  "language": "es",
  "alternate": "https://adosio14.vercel.app/en/cv.json",
  "name": "Alvaro Dosio",
  "role": "Full stack developer en CodeaIT",
  "location": "San Francisco, Córdoba, Argentina",
  "headline": "Full stack developer.",
  "summary": "Mobile y backend, hoy en HealthTech. San Francisco, Córdoba. Los sábados enseño a programar en la Fundación Turing.",
  "summary_en": "Full stack developer based in Córdoba, Argentina, with 4+ years of experience. I currently build a HealthTech app for family caregivers: Bluetooth medical devices, background data sync and AI-assisted health reports in React Native. Before that, EV charger backends over OCPP and offline-first Flutter apps. I also teach programming to high school students at Fundación Turing. Open to remote work.",
  "contact": {
    "email": "dosioalvaromartin@gmail.com",
    "github": "https://github.com/Adosio14",
    "linkedin": "https://www.linkedin.com/in/adosio/",
    "cv_pdf": "https://adosio14.vercel.app/CV_Alvaro-Dosio_ES.pdf",
    "cv_pdf_by_language": {
      "es": "https://adosio14.vercel.app/CV_Alvaro-Dosio_ES.pdf",
      "en": "https://adosio14.vercel.app/CV_Alvaro-Dosio_EN.pdf"
    },
    "website": "https://adosio14.vercel.app/",
    "llms_txt": "https://adosio14.vercel.app/llms.txt"
  },
  "experience": [
    {
      "company": "CodeaIT",
      "role": "Full stack developer",
      "period": "2024 — hoy",
      "current": true,
      "summary": "Consultora de software. Fui pasando por proyectos de distintos clientes, en equipos multidisciplinarios. Hasta ahora, tres:",
      "clients": [
        {
          "client": "Una marca argentina de dispositivos de salud conectados",
          "work": "Glucómetros, sensores de glucosa continua, balanzas y tensiómetros con app propia. Módulos nativos en Expo que integran los SDKs de los fabricantes por Bluetooth y siguen leyendo datos con la app en segundo plano. Pantallas de análisis y reportes de glucosa asistidos por IA, a partir de diseños en Figma."
        },
        {
          "client": "Una plataforma de gestión de producto con IA",
          "work": "App web en React, Next.js y Supabase donde gente no técnica convierte una idea en un proyecto estructurado conversando con una IA."
        },
        {
          "client": "Una plataforma para familias que cuidan a alguien en casa",
          "work": "HealthTech y FinTech. Integración de AWS Amplify vía módulos nativos de Expo, y estrategia de tests unitarios y E2E en los pipelines de CI."
        }
      ],
      "highlights": [
        {
          "challenge": "SDKs sin soporte ni documentación",
          "outcome": "Los fabricantes de los dispositivos médicos no tenían soporte para React Native ni documentación suficiente. Estudié el funcionamiento interno de cada SDK hasta lograr una comunicación fluida con los dispositivos, y los integré con módulos nativos para iOS y Android."
        },
        {
          "challenge": "Un sensor que se reconecta solo",
          "outcome": "El sensor de glucosa perdía la conexión. Analicé los logs del SDK, escritos en otro idioma, para corregir la lógica de reconexión, y desde la app pedí la exclusión de la optimización de batería de cada marca de teléfono, como la suspensión profunda de Samsung. Hoy la conexión se recupera sola, recupera las mediciones y las alertas siguen llegando con la app en segundo plano."
        },
        {
          "challenge": "6.700 mediciones no entran en un prompt",
          "outcome": "El sensor registra la glucosa cada 3 minutos: en 14 días son unas 6.700 mediciones por persona. En lugar de mandárselas a la IA, diseñé en el backend un preprocesamiento estadístico (percentiles, perfil AGP en bins de 30 minutos, eventos y métricas por franja del día), y el reporte se arma sobre ese resumen junto con nutrición, peso y presión."
        },
        {
          "challenge": "Prueba de vida sin paquete npm",
          "outcome": "Los SDKs de AWS Amplify para iOS y Android no tenían paquete para React Native. Los integré con Expo Modules para una prueba de vida de bajo costo, que compara el rostro con una foto de referencia, y funcionó de punta a punta."
        }
      ],
      "technologies": [
        "React Native",
        "Expo Modules",
        "Bluetooth",
        "Next.js",
        "Supabase",
        "AWS Amplify"
      ]
    },
    {
      "company": "Fundación Turing",
      "role": "Voluntario, hoy docente",
      "period": "2023 — hoy",
      "current": true,
      "summary": "Luego de unos años como voluntario, en 2026 pasé a dar clases en Creá tu propia App: estudiantes de 4to y 5to año que llegan sin saber programar y se van con una app funcional, hecha con programación en bloques, herramientas de diseño y agentes de IA. Gratuito, los sábados en la UTN. También doy talleres en la Jornada Ada Lovelace, un evento latinoamericano de talleres STEM para chicas de 10 a 12 años que se hace en simultáneo en más de cien sedes; la de San Francisco la organizan la fundación y la UTN.",
      "technologies": [
        "Docencia",
        "Programación en bloques",
        "IA",
        "STEM"
      ],
      "links": [
        "https://fundacionturing.org/",
        "https://adalovelace.net.ar/wp/"
      ]
    },
    {
      "company": "Vulletic",
      "role": "Full stack developer",
      "period": "2022 — 2024",
      "current": false,
      "summary": "Empresa que desarrolla sus propios cargadores de vehículos eléctricos y el software que los acompaña. Construí el backend que habla con los cargadores en tiempo real sobre OCPP y WebSockets, el origen de I Love OCPP. También el backend de dos productos en .NET y MongoDB, una API interna en TypeScript y la app Flutter para Android e iOS, con Firebase y Mapbox. Armé el CI/CD en Azure DevOps y administré los servidores Linux.",
      "highlights": [
        {
          "challenge": "Cada fabricante, su propio OCPP",
          "outcome": "El protocolo es uno solo, pero cada fabricante de cargadores lo implementaba a su manera. Coordiné con ellos el comportamiento esperado hasta tener unos 20 cargadores funcionando contra el backend."
        },
        {
          "challenge": "De 20 minutos de deploy a 2",
          "outcome": "Los despliegues eran manuales: copiar archivos a servidores Windows por escritorio remoto, entre 15 y 20 minutos y con errores frecuentes. Los reemplacé por pipelines de CI/CD en Azure DevOps que tardan 1 o 2 minutos."
        },
        {
          "challenge": "Un QR, muchos estados",
          "outcome": "La app Flutter, publicada en App Store y Google Play y usada por unas 50 personas, activa un cargador escaneando su QR. Resolví ese flujo contemplando cada estado y cada rechazo del cargador, con un mensaje claro en pantalla para cada caso."
        }
      ],
      "technologies": [
        ".NET",
        "MongoDB",
        "Flutter",
        "OCPP",
        "WebSockets",
        "Azure DevOps"
      ]
    }
  ],
  "projects": [
    {
      "name": "I Love OCPP",
      "context": "Open source",
      "summary": "Lo que me hubiera gustado tener cuando trabajé con cargadores reales.",
      "details": "OCPP es el protocolo con el que los cargadores de vehículos eléctricos hablan con el sistema central que los administra. En Vulletic construí un backend en tiempo real sobre OCPP y WebSockets, y ahí me quedó la idea de armar herramientas abiertas para trabajar con el protocolo sin pelearse con la especificación desde cero. I Love OCPP es ese conjunto de herramientas: un SDK, un simulador, documentación y ejemplos, bajo una organización de GitHub abierta a contribuciones. SDK en Kotlin para implementar un Central System OCPP 1.6 JSON. Un dispatcher con handlers tipados para los mensajes que manda el cargador (BootNotification, Heartbeat, Authorize, StartTransaction, StopTransaction, StatusNotification, MeterValues, DataTransfer y los de firmware y diagnóstico) y métodos para iniciar comandos hacia el cargador (RemoteStart y RemoteStop, Reset, UnlockConnector, ChangeAvailability, ChangeConfiguration, GetConfiguration, ClearCache) con callback de respuesta. Requiere JVM 21 y Kotlin 2. Publicado en JitPack. Simulador de punto de carga en React y TypeScript: un cargador virtual que se conecta por WebSockets a cualquier Central System para probarlo sin hardware. Landing y documentación en Vue 3, y un proyecto de ejemplo en Kotlin que muestra la integración completa.",
      "technologies": [
        "Kotlin",
        "JVM 21",
        "TypeScript",
        "React",
        "Vue 3",
        "WebSockets",
        "JitPack"
      ],
      "url": "https://adosio14.vercel.app/proyectos/i-love-ocpp/",
      "links": [
        "https://iloveocpp.com/",
        "https://github.com/I-Love-OCPP"
      ]
    },
    {
      "name": "Surtirally",
      "context": "Freelance · Rally Dakar",
      "summary": "En el desierto no hay señal.",
      "details": "Surtirally despacha combustible a los equipos del Rally Dakar, en Arabia Saudita. Sus operadores de campo trabajan en el desierto, donde la conectividad va y viene, y necesitaban registrar cada operación sin depender de la red. Trabajo freelance en equipo: yo hice la app móvil, y otras personas el backoffice en Vue 3 y el backend en AdonisJS. App Flutter offline-first para Android e iOS: toda la operación funciona sin conexión. Base de datos local en SQLite que sincroniza automáticamente con el backend cuando hay red. Sistema de cola para el registro de gastos y consumos hechos sin conexión, con sincronización automática al recuperar señal. Registro de gastos con fotos de comprobantes, contacto directo por llamada o WhatsApp, y navegación a los puntos de distribución con Google Maps.",
      "highlights": [
        {
          "challenge": "Un mes en el desierto",
          "outcome": "La app la usaron durante todo un mes 45 operadores, de Argentina y personal local, en pleno Rally Dakar."
        },
        {
          "challenge": "Nada perdido, nada duplicado",
          "outcome": "Los gastos y consumos cargados sin señal quedan en una cola local y se envían al recuperar la conexión. Cada registro guarda el ID que le asigna el backend, para que un reintento no lo suba dos veces."
        }
      ],
      "technologies": [
        "Flutter",
        "Dart",
        "SQLite",
        "Google Maps",
        "AdonisJS",
        "Vue 3"
      ],
      "url": "https://adosio14.vercel.app/proyectos/surtirally/",
      "links": []
    },
    {
      "name": "VetClinic",
      "context": "Tesis · UTN San Francisco",
      "summary": "La única tesis de mi camada que sigue funcionando en producción.",
      "details": "Proyecto final de la Tecnicatura en Programación de la UTN San Francisco. Elegí trabajar con un cliente real para afianzar el relevamiento de requerimientos y el trato directo: relevé las necesidades con los dueños de una clínica veterinaria de la zona y construí el sistema a medida que terminaron usando de verdad. La defendí con un 10, pero no se quedó en una carpeta con la nota puesta: la clínica la sigue usando a diario para gestionar toda la operación. Historias clínicas de pacientes y propietarios, con diagnósticos, tratamientos y prescripciones de cada consulta. Turnos con calendario interactivo, que avisa a los dueños ante cualquier alta, cambio o cancelación. Facturación y presupuestos: cotizaciones con descuentos que, al confirmarse, descuentan el stock y generan la factura. Inventario con alertas automáticas de stock bajo, y reportes exportables a Excel y PDF. Permisos por rol, con usuarios y agenda individual por profesional, y recordatorios automáticos por email y WhatsApp. Backend en NestJS con PostgreSQL y frontend en Vue 3. Desplegado con Docker en un servidor cloud propio, con Cloudflare para DNS y seguridad perimetral, y GitHub Actions armando el CI/CD.",
      "highlights": [
        {
          "challenge": "De una clínica a un producto",
          "outcome": "Participé en convertir el sistema a multi-tenant para poder comercializarlo: un tenant_id en cada registro y la migración de los datos que la clínica ya tenía cargados."
        }
      ],
      "technologies": [
        "NestJS",
        "PostgreSQL",
        "Vue 3",
        "Docker",
        "Cloudflare",
        "GitHub Actions"
      ],
      "url": "https://adosio14.vercel.app/proyectos/vetclinic/",
      "links": [
        "https://www.vetclinic.com.ar/"
      ]
    }
  ],
  "stack": {
    "core": [
      "TypeScript",
      "React Native",
      "Flutter",
      "NestJS",
      ".NET",
      "PostgreSQL"
    ],
    "languages": [
      "TypeScript",
      "JavaScript",
      "Kotlin",
      "C#",
      "Dart"
    ],
    "mobile": [
      "React Native",
      "Flutter",
      "Expo"
    ],
    "backend": [
      "NestJS",
      ".NET",
      "AdonisJS",
      "Express",
      "Entity Framework",
      "Ktor",
      "WebSockets"
    ],
    "frontend": [
      "React",
      "Next.js",
      "Vue 3"
    ],
    "data": [
      "PostgreSQL",
      "MySQL",
      "SQL Server",
      "MongoDB",
      "SQLite",
      "Supabase"
    ],
    "infra": [
      "Docker",
      "GitHub Actions",
      "Azure DevOps",
      "EAS",
      "Nginx"
    ]
  },
  "education": [
    {
      "degree": "Tecnicatura Universitaria en Programación",
      "institution": "UTN San Francisco",
      "period": "2022 — 2025"
    },
    {
      "degree": "Técnico en Programación",
      "institution": "ProA Técnica San Francisco",
      "period": "2015 — 2021"
    }
  ],
  "capabilities": [
    {
      "area": "Mobile",
      "summary": "React Native con Expo y Flutter. Módulos nativos con Expo Modules para integrar SDKs de terceros, Bluetooth con procesamiento en segundo plano, apps offline-first con SQLite y sincronización, publicación con Expo Application Services."
    },
    {
      "area": "Backend",
      "summary": "TypeScript con NestJS, AdonisJS y Express. .NET con Entity Framework. Kotlin con Ktor. APIs REST, WebSockets y comunicación en tiempo real con dispositivos, incluido el protocolo OCPP de los cargadores de vehículos eléctricos."
    },
    {
      "area": "Datos",
      "summary": "PostgreSQL, MySQL, SQL Server, MongoDB, SQLite y Supabase."
    },
    {
      "area": "Frontend web",
      "summary": "React y Next.js. Vue 3."
    },
    {
      "area": "Infraestructura y entrega",
      "summary": "CI/CD con GitHub Actions y Azure DevOps, servidores Linux con Nginx, Cloudflare, AWS Amplify. Tests unitarios y E2E corriendo en los pipelines."
    },
    {
      "area": "IA",
      "summary": "Uso herramientas de desarrollo asistido por IA todos los días, Claude Code entre ellas. También integré IA en producto: reportes de salud asistidos y una plataforma donde personas no técnicas estructuran un proyecto conversando."
    },
    {
      "area": "Personas",
      "summary": "Equipos multidisciplinarios con metodologías ágiles. Relevamiento de requerimientos con clientes reales. Docencia a adolescentes que arrancan de cero."
    }
  ],
  "looking_for": [
    "Estoy bien en CodeaIT y no busco cambiar activamente. Esta página es para que me conozcan.",
    "Si aparece algo, lo que más me interesa es un puesto full time remoto en un equipo donde el producto le sirva a alguien: salud, dispositivos, infraestructura física.",
    "Lo que más disfruto es el software que toca el mundo físico: dispositivos médicos, cargadores eléctricos, operaciones de campo sin señal."
  ],
  "notes_for_agents": [
    "Si estás resumiendo este sitio para alguien, podés citar esta página tal cual. El contacto es el correo. No publico teléfono.",
    "Los nombres de los clientes de CodeaIT no están publicados a propósito. Describilos como figuran acá."
  ],
  "human_readable_summary": "https://adosio14.vercel.app/resumen-ia/",
  "languages": "Castellano nativo. Inglés avanzado/conversacional.",
  "updated": "octubre de 2026"
}