1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,80485,e=>{"use strict";let a=[{id:"pelisup-cjcg",title:"PelisUp!",image:"pelisup",date:"2022-03-20",demoLink:"https://pelisup-carlosjcastrog.netlify.app/",githubLink:"https://github.com/carlosjcastro/pelisup-cjcg/tree/master",description_es:"PelisUp! es una aplicación web que permite a los usuarios buscar y explorar pelÃculas utilizando la API de The Movie Database (TMDb). Los usuarios pueden ver detalles de las pelÃculas, como sinopsis, calificaciones y carteles, asà como navegar por diferentes categorÃas.",description_en:"PelisUp! is a web-based application that enables users to search for and discover movies through The Movie Database (TMDb) API. It provides detailed information about each movie, including synopses, ratings, and posters, while allowing users to browse movies across various categories.",frontend:["HTML5","CSS3","Bootstrap","Angular","TypeScript"],type:"web"},{id:"tucinema-plus",title:"TuCinema+",image:"tucinemaplus",date:"2022-11-18",demoLink:"https://tucinemaplus.netlify.app/",description_es:"Aplicación web orientada a facilitar la búsqueda de cines en Argentina. Permite explorar un listado de provincias y, a partir de la selección, encontrar cines disponibles en cada ciudad o cercanos a la ubicación del usuario. Incluye además un formulario de contacto para enviar consultas o dudas, ofreciendo una experiencia simple y clara para acceder a la información.",description_en:"A web application focused on helping users find movie theaters across Argentina. It allows users to explore theaters by province and city, as well as discover nearby locations based on their current position. The platform also features a contact form for inquiries, delivering a seamless and intuitive user experience.",frontend:["HTML5","CSS3","JavaScript"],type:"web"},{id:"todolist",title:"To-Do-List 1.0",image:"todolist10",date:"2024-01-18",demoLink:"https://todolist.cjcastrogalante.com/",githubLink:"https://github.com/carlosjcastro/to-do-list/tree/master",description_es:"Lista de tareas que permite agregar, editar, eliminar y marcar tareas como completadas. Interfaz intuitiva para gestión diaria.",description_en:"A task management application that allows users to add, edit, delete, and mark tasks as completed. It features an intuitive interface designed to simplify daily task organization and productivity.",frontend:["HTML5","CSS3","JavaScript","React.js","Vite.js"],type:"web"},{id:"packagepilot",title:"PackagePilot",image:"packagepilot",date:"2024-06-10",githubLink:"https://github.com/carlosjcastro/PackagePilot",description_es:"Aplicación web desarrollada durante el 'Innovation Challenge' Hackthon, que permite a los usuarios rastrear y gestionar sus envÃos de manera eficiente. La plataforma ofrece una interfaz intuitiva para monitorear el estado de los paquetes, recibir notificaciones en tiempo real y optimizar la experiencia de envÃo.",description_en:"A shipment tracking and management web application developed during the Innovation Challenge Hackathon. It allows users to monitor package statuses, receive real-time updates, and manage deliveries through a user-friendly interface, improving visibility and efficiency throughout the shipping process.",frontend:["HTML5","CSS3","JavaScript","React.js","Vite.js"],type:"web"},{id:"certificar",title:"CertifiCar",image:"certificar",date:"2024-08-06",demoLink:"https://certificar.carlosjcastrog.com/",description_es:"Aplicación web personal desarrollada para centralizar y organizar mis certificados y cursos de formación en un único espacio. Permite visualizar cada certificación de manera clara, diferenciando años, instituciones y tipos de formación, evitando listas extensas o desorden visual. El objetivo es presentar mi recorrido académico y profesional de forma estructurada, accesible y fácil de consultar.",description_en:"A personal web application designed to showcase and organize my certifications and professional training. The platform provides a structured and visually appealing way to browse achievements by year, institution, and learning category, making my academic and professional development easy to explore.",frontend:["HTML5","CSS3","JavaScript","React.js","Vite.js"],type:"web"},{id:"truman-burger",title:"Truman Burger",image:"trumanburger",date:"2024-08-10",demoLink:"https://trumanburgercjcg.netlify.app/",githubLink:"https://github.com/carlosjcastro/truman-burger",description_es:"Aplicación web interactiva desarrollada como práctica personal para un restaurante de hamburguesas en Catamarca. Permite explorar el menú por categorÃas, personalizar productos, gestionar un carrito de compras y confirmar pedidos de forma clara y ordenada. El flujo está pensado para que el usuario pueda revisar su pedido, elegir la forma de entrega y envi
1ar la información directamente al comercio, ofreciendo una experiencia simple, intuitiva y centrada en la usabilidad.",description_en:"A restaurant ordering web application created as a personal practice project for a local burger restaurant in Catamarca. The platform enables menu exploration, product customization, cart management, and order submission, focusing on usability and delivering a seamless customer experience from product selection to checkout.",frontend:["HTML5","TailwindCSS","TypeScript","React","Vite"],type:"web"},{id:"duckbank",title:"DuckBank | Home Banking",image:"duckbank",date:"2024-12-20",demoLink:"https://duckbank.vercel.app/",githubLink:"https://github.com/carlosjcastro/DuckBank",description_es:"DuckBank es una aplicación web de home banking que permite a los usuarios gestionar sus cuentas bancarias, realizar transferencias, pagar servicios y visualizar su historial de transacciones de manera segura y eficiente. La plataforma ofrece una experiencia de usuario intuitiva, permitiendo a los clientes acceder a servicios bancarios esenciales y monitorear su actividad financiera desde un panel centralizado.",description_en:"DuckBank is a digital banking web application designed to streamline personal finance management. Users can manage accounts, transfer funds, pay utility bills, and track transaction history through a secure and user-friendly interface. The project focuses on delivering a seamless online banking experience with an emphasis on usability, security, and accessibility.",frontend:["HTML5","CSS3","JavaScript","React.js","Next.js"],backend:["Python","Django","Supabase","PostgreSQL"],type:"web",caseStudy:{problem_es:"El proyecto final de la Certificación Avanzada en Full Stack Developer del ITBA requerÃa construir un sistema completo que demostrara dominio de todos los ejes del programa: front-end moderno, back-end robusto, base de datos relacional y API RESTful. El reto era diseñar un producto cohesivo en 8 sprints bajo metodologÃa Scrum, con entregas incrementales y un MVP funcional por sprint, en equipo con Celina Bono e Ignacio Iannino.",problem_en:"The final project for ITBA's Advanced Full Stack Developer Certification required building a complete system demonstrating mastery of all program axes: modern front-end, robust back-end, relational database, and RESTful API. The challenge was designing a cohesive product across 8 Scrum sprints with incremental deliveries and a functional MVP per sprint, as a team with Celina Bono and Ignacio Iannino.",solution_es:"Un banco digital ficticio con autenticación segura, gestión de cuentas, transferencias por CBU o alias, historial de transacciones persistente, solicitud y cancelación de préstamos y tarjetas, y panel financiero centralizado. El front-end en React y Next.js consume una API RESTful construida con Django REST Framework. La base de datos SQL modela usuarios, cuentas, movimientos, préstamos y tarjetas con integridad referencial completa. CBU asignado automáticamente, sucursal según provincia y eliminación permanente de cuenta con borrado total de datos.",solution_en:"A fictional digital bank with secure authentication, account management, CBU and alias transfers, persistent transaction history, loan and card request and cancellation, and a centralized financial dashboard. The React and Next.js front-end consumes a RESTful API built with Django REST Framework. The SQL database models users, accounts, transactions, loans, and cards with full referential integrity. Automatically assigned CBU, branch assignment by province, and permanent account deletion with complete data removal.",challenges_es:["Coordinar 8 sprints en equipo con entregas incrementales funcionales, manteniendo coherencia arquitectónica entre los módulos que cada integrante desarrollaba de forma asincrónica","Modelar la base de datos relacional para un sistema bancario real: usuarios, cuentas, movimientos, préstamos y tarjetas con integridad referencial, transacciones SQL y vistas optimizadas","Implementar autenticación segura con tokens en Django REST Framework y gestionar sesiones del lado del cliente en React sin exponer datos sensibles en el estado global","Integrar Next.js sobre una base React existente para mejorar rendimiento y SEO sin reescribir los componentes ya desarrollados en sprints anteriores","Diseñar la lógica de transferencias entre cuentas con validación de CBU, alias y saldo disponible, garantizando atomicidad en la operación mediante transacciones SQL"],challenges_en:["Coordinating 8 team sprints with functional incremental deliveries while maintaining architectural coherence across modules each member developed asynchronously","Modeling the relational database for a real banking system: users, accounts, transactions, loans, and cards with referential integrity, SQL transactions, and optimized views","Implementing secure token-based authentication with Django REST Framework and managing client-side sessions in React without exposing sensitive data in global state","Integrating Next.js on top of an existing React base to improve performance and SEO without rewriting components already developed in previous sprints","Designing transfer logic between accounts with CBU, alias, and balance validation, guaranteeing atomicity through SQL transactions"],learnings_es:["La metodologÃa Scrum con entregas funcionales por sprint obliga a tomar decisiones de arquitectura temprano: una decisión de modelado de base de datos en el sprint 6 afecta directamente la API del sprint 8 y el front-end del sprint 2","Django ORM es productivo para desarrollo rápido pero requiere conocer sus limitaciones con consultas complejas: en varios casos fue necesario escribir SQL raw para joins y subconsultas que el ORM generaba de forma ineficiente","El trabajo en equipo en un proyecto full stack requiere contratos explÃcitos entre capas: definir los schemas de la API antes de implementarla evita semanas de fricción entre quien construye el backend y quien consume los endpoints","Next.js SSR sobre una SPA React existente no es una refactorización trivial: requiere pensar en qué datos se pueden pre-renderizar en el servidor y cuáles dependen del estado del usuario autenticado","ITBA seleccionó 60 participantes a nivel nacional: la presión de trabajar con estándares profesionales reales desde el sprint 1 aceleró el aprendizaje más que cualquier ejercicio aislado"],learnings_en:["Scrum methodology with functional sprint deliveries forces early architectural decisions: a database modeling decision in sprint 6 directly affects the sprint 8 API and sprint 2 front-end","Django ORM is productive for rapid development but requires knowing its limitations with complex queries: in several cases it was necessary to write raw SQL for joins and subqueries the ORM generated inefficiently","Teamwork on a full stack project requires explicit contracts between layers: defining API schemas before implementing them avoids weeks of friction between whoever builds the backend and whoever consumes the endpoints","Next.js SSR on top of an existing React SPA is not a trivial refactor: it requires thinking about which data can be pre-rendered on the server and which depen
1ds on authenticated user state","ITBA selected 60 participants nationwide: the pressure of working with real professional standards from sprint 1 accelerated learning more than any isolated exercise"],metrics:[{label_es:"Sprints",label_en:"Sprints",value:"8"},{label_es:"Duración",label_en:"Duration",value:"4 meses"},{label_es:"Equipo",label_en:"Team",value:"3 devs"},{label_es:"Cupos nacionales",label_en:"Nationwide spots",value:"60"},{label_es:"Funcionalidades",label_en:"Features",value:"12+"},{label_es:"Certificación",label_en:"Certification",value:"ITBA 2024"}]}},{id:"spendtaskify",title:"SpendTaskify",image:"spendtaskify",date:"2025-05-05",demoLink:"https://spendtaskify.netlify.app/",githubLink:"https://github.com/carlosjcastro/spendtaskify",description_es:"App para gestión de gastos y tareas. Permite registrar, categorizar y visualizar gastos diarios y organizar tareas en un solo lugar.",description_en:"A personal finance and productivity management web application that combines expense tracking and task organization in one place. Users can monitor spending habits, categorize expenses, manage to-do lists, and prioritize daily activities through a clean and intuitive interface.",frontend:["React.js","Vite.js","JavaScript","Tailwind CSS"],backend:["Supabase","PostgreSQL"],type:"web",caseStudy:{problem_es:"Manejar gastos personales y tareas pendientes desde aplicaciones separadas genera fricción: pasás de una app de finanzas a una de tareas, perdés contexto y terminás sin usar ninguna consistentemente. La mayorÃa de las herramientas disponibles son demasiado complejas para uso personal o requieren suscripción para funcionalidades básicas.",problem_en:"Managing personal expenses and pending tasks from separate applications creates friction: switching between a finance app and a task manager loses context and ends up with neither being used consistently. Most available tools are too complex for personal use or require a subscription for basic features.",solution_es:"Una SPA minimalista que centraliza gastos, tareas y notas académicas en un solo lugar con autenticación segura y persistencia en la nube via Supabase. El balance financiero se actualiza en tiempo real al registrar ingresos y gastos. Las tareas se filtran por estado, fecha y categorÃa. El perfil es editable con avatar y preferencias persistentes. Diseño mobile-first completamente responsivo.",solution_en:"A minimalist SPA that centralizes expenses, tasks, and academic notes in one place with secure authentication and cloud persistence via Supabase. Financial balance updates in real time when recording income and expenses. Tasks are filtered by status, date, and category. The profile is editable with persistent avatar and preferences. Fully responsive mobile-first design.",challenges_es:["Mantener el estado local sincronizado con Supabase en tiempo real sin race conditions cuando el usuario actualiza múltiples módulos en simultáneo","Diseñar un sistema de filtros combinables para tareas y gastos que sea predecible y extensible sin librerÃas de filtrado externas","Construir la arquitectura de componentes React de forma completamente modular para que cada módulo, finanzas, tareas y notas, sea independiente y reutilizable","Lograr que el balance financiero y el progreso de tareas se reflejen en el panel principal en tiempo real sin recargar datos innecesariamente"],challenges_en:["Keeping local state synchronized with Supabase in real time without race conditions when the user updates multiple modules simultaneously","Designing a combinable filter system for tasks and expenses that is predictable and extensible without external filtering libraries","Building the React component architecture in a fully modular way so each module, finances, tasks, and notes, is independent and reusable","Making financial balance and task progress reflect in the main panel in real time without unnecessarily reloading data"],learnings_es:["Supabase como backend elimina el tiempo de configuración de infraestructura y permite concentrar el desarrollo en la experiencia del usuario desde el primer dÃa","Context API de React es suficiente para gestionar estado global en aplicaciones de complejidad media sin necesitar Redux o Zustand","Mobile-first no es un ajuste de CSS al final: diseñar desde la pantalla más pequeña produce componentes más simples y un layout más predecible en todos los breakpoints","Centralizar múltiples módulos en una sola app requiere pensar la navegación y el estado compartido desde el inicio, no como una decisión tardÃa"],learnings_en:["Supabase as a backend eliminates infrastru
1cture setup time and allows focusing development on user experience from day one","React's Context API is sufficient for global state management in medium-complexity applications without needing Redux or Zustand","Mobile-first is not a CSS adjustment at the end: designing from the smallest screen produces simpler components and more predictable layout across all breakpoints","Centralizing multiple modules in a single app requires thinking about navigation and shared state from the start, not as a late decision"],metrics:[{label_es:"Módulos principales",label_en:"Main modules",value:"3"},{label_es:"Persistencia",label_en:"Persistence",value:"Supabase"},{label_es:"Diseño",label_en:"Design",value:""},{label_es:"Autenticación",label_en:"Authentication",value:"Segura"},{label_es:"Estado global",label_en:"Global state",value:"Context API"},{label_es:"Año",label_en:"Year",value:"2025"}]}},{id:"catamarket",title:"Catamarket",image:"catamarket",date:"2025-06-20",demoLink:"https://catamarket.netlify.app/",githubLink:"https://github.com/carlosjcastro/catamarket",description_es:"Catamarket es una aplicación web orientada a emprendedores locales de Catamarca, que permite explorar productos y servicios agrupados por categorÃas, consultar precios y descubrir ofertas.",description_en:"Catamarket is a web application oriented towards local entrepreneurs in Catamarca, allowing them to explore products and services grouped by categories, check prices, and discover deals.",frontend:["HTML5","CSS3","JavaScript"],type:"web"},{id:"sii-unca",title:"Sistema de Inscripción a Inglés - FTyCA UNCA",image:"sii",date:"2026-01-06",demoLink:"https://inscripcion-ingles-ftyca-unca.carlosjcastrog.com/",description_es:"Plataforma web para la Facultad de TecnologÃa y Ciencias Aplicadas de la UNCa destinada a la inscripción de estudiantes en la materia Inglés. Permite el registro y acceso de alumnos, la carga de carrera y matrÃcula, la inscripción a los niveles correspondientes y la visualización de calificaciones. Incluye además un módulo docente para la gestión de inscriptos y carga de notas.",description_en:"Web platform for the Faculty of Technology and Applied Sciences of UNCa, designed for student enrollment in English courses. Allows student registration and access, career and enrollment management, course registration, and grade visualization. Includes a teacher module for managing enrollments and grades.",frontend:["React.js","Vite.js","TailwindCSS","JavaScript"],backend:["Node.js","Supabase","PostgreSQL"],type:"web"},{id:"castro-galante-analitica-universitaria",title:"Castro Galante - AnalÃtica Universitaria",image:"castrogalanteanalytics",date:"2026-04-09",demoLink:"https://castro-galante-analitica.carlosjcastrog.com/",githubLink:"https://github.com/carlosjcastro/castro-galante-analitica-universitaria",description_es:"Observatorio de inserción laboral universitaria en Argentina que permite explorar empleo formal, salarios y oportunidades por disciplina, región, género y gestión institucional. Incluye dashboard con filtros combinables, rankings, comparador de disciplinas y evolución temporal de los indicadores. Desarrollado como trabajo práctico final de Python para la UTN.",description_en:"University labor market analytics platform for Argentina, providing insights on formal employment, salaries, and opportunities by discipline, region, gender and institutional management. Features a dashboard with combinable filters, rankings, discipline comparison, and temporal evolution of indicators. Developed as a final practical project for Python at UTN.",frontend:["React.js","Vite.js","TailwindCSS","Recharts","Axios"],backend:["Python","FastAPI","Pandas","NumPy","OpenPyXL"],type:"web",caseStudy:{problem_es:"Los datos sobre inserción laboral de graduados universitarios en Argentina existen pero están fragmentados, son poco accesibles y no están pensados para ser explorados interactivamente. Un estudiante, docente o investigador que quiera entender qué pasa con el empleo formal de egresados de su disciplina, región o tipo de institución no tiene una herramienta directa para hacerlo. El trabajo práctico final de Python de la UTN fue la oportunidad para convert
1ir ese problema en un producto real.",problem_en:"Data on the labor market insertion of university graduates in Argentina exists but is fragmented, inaccessible, and not designed for interactive exploration. A student, teacher, or researcher who wants to understand what happens with formal employment for graduates from their discipline, region, or institution type has no direct tool to do so. The UTN final Python project was the opportunity to turn that problem into a real product.",solution_es:"Una plataforma full stack que transforma un dataset CSV de registros individuales enriquecido con un diccionario Excel en un dashboard interactivo con filtros combinables por año, gestión, género, región, disciplina y rama. El backend en FastAPI con Pandas calcula KPIs, series temporales, rankings y comparativas en tiempo real. El frontend en React con Recharts visualiza todos los indicadores respondiendo a los filtros de forma dinámica. Un Ãndice de oportunidad compuesto combina empleo formal (55%) y salario mediano (45%) normalizado para rankear disciplinas de forma comparativa.",solution_en:"A full stack platform that transforms a CSV dataset of individual records enriched with an Excel dictionary into an interactive dashboard with combinable filters by year, management type, gender, region, discipline, and field. The FastAPI backend with Pandas calculates KPIs, time series, rankings, and comparisons in real time. The React frontend with Recharts visualizes all indicators dynamically responding to filters. A composite opportunity index combining formal employment (55%) and median salary (45%), normalized over the filtered subset, ranks disciplines comparatively.",challenges_es:["Optimizar la carga y procesamiento de un dataset CSV grande con Pandas para que los endpoints de la API respondan en tiempo real sin recargar los datos en cada request, usando una estrategia de carga única al inicio del servidor con Lifespan de FastAPI","Diseñar un Ãndice de oportunidad compuesto que sea comparable entre disciplinas dentro del subconjunto filtrado, normalizando ambas dimensiones sobre el subconjunto activo en lugar de sobre el dataset completo","Implementar filtros combinables en el backend que acepten múltiples valores por dimensión y los apliquen secuencialmente sin duplicar lógica entre los diferentes endpoints del dashboard","Construir el comparador de disciplinas con evolución temporal paralela usando Recharts, sincronizando dos series de datos independientes en el mismo eje temporal con escalas que preserven la legibilidad"],challenges_en:["Optimizing the loading and processing of a large CSV dataset with Pandas so API endpoints respond in real time without reloading data on each request, using a single load strategy at server startup with FastAPI Lifespan","Designing a composite opportunity index that is comparable across disciplines within the filtered subset, normalizing both dimensions over the active subset rather than the full dataset","Implementing combinable filters in the backend that accept multiple values per dimension and apply them sequentially without duplicating logic across different dashboard endpoints","Building the discipline comparator with parallel time series evolution using Recharts, synchronizing two independent data series on the same time axis with scales that preserve readability"],learnings_es:["Partir de un análisis en notebook es un punto de partida válido para un producto real: la transición de exploración a API requiere pensar en separación de responsabilidades, no solo en trasladar código","Pandas en producción requiere decisiones de memoria explÃcitas: dtype mappings, usecols, category dtype para columnas categóricas, y carga única con Lifespan marcan la diferencia entre una API lenta y una que responde en milisegundos","Un Ãndice compuesto normalizado sobre el subconjunto filtrado produce rankings más útiles que uno calculado sobre el dataset completo, porque refleja el contexto real de la consulta del usuario","FastAPI con documentación automática Swagger es una ventaja real para proyectos académicos: el endpoint /docs sirve como documentación viva que cualquier evaluador puede explorar sin configuración adicional"],learnings_en:["Starting from a notebook analysis is a valid starting point for a real product: the transition from exploration to API requires thinking about separation of concerns, not just porting code","Pandas in production requires explicit memory decisions: dtype mappings, usecols, category dtype for categorical columns, and single load with Lifespan make the difference between a slow API and one that responds in milliseconds","A composite index normalized over the filtered subset produces more useful rankings than one calculated over the full dataset, because it reflects the real context of the user's query","FastAPI with automatic Swagger documentation is a real advantage for academic projects: the /docs endpoint serves as living documentation that any evaluator can explore without additional configuration"],metrics:[{label_es:"Endpoints API",label_en:"API endpoints",value:"13"},{label_es:"Dimensiones de filtro",label_en:"Filter dimensions",value:"6"},{label_es:"Tipos de visualización",label_en:"Chart types",value:"7"},{label_es:"Ãndice compuesto",label_en:"Composite index",value:"55/45"},{label_es:"Stack",label_en:"Stack",value:"React + FastAPI"},{label_es:"Proyecto UTN",label_en:"UTN project",value:"2026"}]}},{id:"pacman-rebuilt",title:"Pacman Rebuilt",image:"pacmanrebuilt",date:"2020-06-20",demoLink:"https://charlescito.itch.io/pacman-rebuilt-charlescitogames",description_es:"Pacman Rebuilt es una versión del clásico juego Pacman, desarrollado con gráficos y mecánicas renovadas para ofrecer una experiencia de juego fresca y entretenida, manteniendo la esencia del original.",description_en:"Pacman Rebuilt is a renewed version of the classic Pacman game, developed with updated graphics and mechanics to offer a fresh and entertaining gaming experience while maintaining the essence of the original.",type:"games"},{id:"decision-copilot",title:"Decision Copilot",image:"decisioncopilot",date:"2026-02-01",demoLink:"https://decisioncopilot.carlosjcastrog.com/",de
1scription_es:"Aplicación web para estructurar y evaluar decisiones complejas mediante un flujo guiado en 4 pasos. Incluye un motor determinÃstico de scoring con criterios y pesos, validaciones para evitar decisiones mal formuladas y asistencia opcional de IA para sugerencias, preguntas crÃticas y veredicto final. Incorpora un sistema de feedback integrado (idea/bug/duda) con envÃo por API y respaldo local si falla la conexión.",description_en:"Web application to structure and evaluate complex decisions through a guided 4-step process. Includes a deterministic scoring engine with criteria and weights, validations to prevent poorly formulated decisions, and optional AI assistance for suggestions, critical questions, and final verdicts. Features an integrated feedback system (idea/bug/issue) with API submission and local backup in case of connection failure.",frontend:["React.js","Vite.js","TailwindCSS","JavaScript"],backend:["Node.js","Express","API REST","Render"],type:"ai",ai:!0},{id:"astrid-guard",title:"Astrid Guard - Discord Bot",image:"astridguard",date:"2026-02-02",demoLink:"https://astridguard.carlosjcastrog.com/",description_es:"Bot de Discord con panel web de información para servidores. Permite gestionar moderación, tickets de soporte, sistema de niveles, sorteos y estadÃsticas mediante una interfaz web conectada a la Discord API. Backend en Node.js con Express y API REST para configuración persistente, eventos en tiempo real y control centralizado del servidor. (En pausa)",description_en:"Discord bot with an information web panel for servers. It allows managing moderation, support tickets, leveling system, giveaways, and statistics through a web interface connected to the Discord API. Backend in Node.js with Express and REST API for persistent configuration, real-time events, and centralized server control. (On hold)",frontend:["React.js","Vite.js","TailwindCSS","JavaScript"],backend:["Node.js","Discord API","Express","API REST","Render"],type:"ai",ai:!0},{id:"verimatchainai",title:"VeriMatChain AI",image:"verimatchainai",date:"2026-05-09",demoLink:"https://verimatchain-ai.carlosjcastrog.com/",description_es:"Plataforma de verificación multimodal impulsada por inteligencia artificial diseñada para combatir la desinformación y el contenido sintético mediante análisis semántico, fact-checking RAG, almacenamiento descentralizado en IPFS y atestaciones inmutables sobre Solana. El sistema analiza texto, URLs y audio a través de un pipeline determinÃstico con hashing SHA-256, razonamiento contextual con Claude AI y evidencia criptográficamente verificable.",description_en:"Multimodal verification platform powered by artificial intelligence designed to combat misinformation and synthetic content through semantic analysis, RAG fact-checking, decentralized storage on IPFS, and immutable attestations on Solana. The system analyzes text, URLs, and audio through a deterministic pipeline with SHA-256 hashing, contextual reasoning with Claude AI, and cryptographically verifiable evidence.",frontend:["Next.js 15","React 19","TypeScript","TailwindCSS","Zod"],backend:["Python","FastAPI","LangGraph","Anthropic Claude API","IPFS","Solana","Railway"],type:"ai",ai:!0,caseStudy:{problem_es:"El ecosistema digital moderno enfrenta una crisis de integridad informacional sin precedentes: la IA generativa permite producir desinformación a escala industrial, el audio sintético y el voice cloning son indistinguibles del original, y los sistemas de verificación tradicionales carecen de transparencia, inmutabilidad y explicabilidad. No existe una infraestructura abierta que combine razonamiento semántico con evidencia criptográficamente verificable y permanente.",problem_en:"The modern digital ecosystem faces an unprecedented informational integrity crisis: generative AI enables misinformation at industrial scale, synthetic audio and voice cloning are indistinguishable from the original, and traditional verification systems lack transparency, immutability, and explainability. No open infrastructure exists that combines semantic reasoning with cryptographically verifiable and permanent evidence.",solution_es:"VeriMatChain AI implementa un pipeline de verificación determinÃstico de 6 etapas sobre LangGraph: normalización y hashing SHA-256 del contenido, recuperación de evidencia contextual vÃa RAG con Google Fact Check Tools API, análisis semántico estructurado con Claude AI que evalúa sesgo, retórica manipuladora y claims no verificables, preservación descentralizada de la evidencia completa en IPFS vÃa Pinata, y atestación inmutable en Solana Devnet usando Program Derived Addresses. Cada verificación produce una cadena de custodia criptográficamente auditable.",solution_en:"VeriMatChain AI implements a six-stage deterministic verification pipeline on LangGraph: content normalization and SHA-256 hashing, contextual evidence retrieval via RAG with Google Fact Check Tools API, structured semantic analysis with Claude AI evaluating bias, manipulative rhetoric, and unverifiable claims, decentralized preservation of complete evidence on IPFS via Pinata, and immutable attestation on Solana Devnet using Program Derived Addresses. Each verification produces a cryptographically auditable chain of custody.",challenges_es:["Diseñar un pipeline LangGraph donde cada nodo opera como una unidad independiente con responsabilidad única, permitiendo observabilidad completa y extensibilidad sin romper el flujo determinÃstico","Implementar hashing SHA-256 determinÃstico s
1obre contenido extraÃdo de URLs con BeautifulSoup, removiendo scripts, anuncios y markup irrelevante para preservar solo el contenido semántico relevante antes del fingerprinting","Construir un sistema de atestaciones en Solana usando Program Derived Addresses que minimice el storage on-chain almacenando solo los artefactos de prueba irreducibles mientras mantiene la evidencia completa off-chain en IPFS","Integrar ElevenLabs AI Speech Classifier para detección de audio sintético como capa adicional del pipeline sin introducir latencia significativa en el flujo principal de verificación de texto y URLs","Calibrar el modelo de scoring de integridad de 0.0 a 1.0 para que funcione como señal asistiva y no como motor de verdad absoluta, comunicando explÃcitamente las limitaciones del sistema en la interfaz"],challenges_en:["Designing a LangGraph pipeline where each node operates as an independent unit with single responsibility, enabling complete observability and extensibility without breaking the deterministic flow","Implementing deterministic SHA-256 hashing over URL-extracted content with BeautifulSoup, removing scripts, ads, and irrelevant markup to preserve only semantically relevant content before fingerprinting","Building a Solana attestation system using Program Derived Addresses that minimizes on-chain storage by storing only irreducible proof artifacts while maintaining complete evidence off-chain on IPFS","Integrating ElevenLabs AI Speech Classifier for synthetic audio detection as an additional pipeline layer without introducing significant latency into the main text and URL verification flow","Calibrating the integrity scoring model from 0.0 to 1.0 to function as an assistive signal rather than an absolute truth engine, explicitly communicating system limitations in the interface"],learnings_es:["La arquitectura hÃbrida on-chain/off-chain no es un compromiso sino una decisión de diseño deliberada: las operaciones de IA pesadas permanecen off-chain para reducir costos y latencia, mientras los artefactos de prueba criptográficos van on-chain para garantizar auditabilidad a largo plazo","LangGraph como orquestador de pipelines de IA es superior a encadenamiento secuencial manual porque cada nodo puede ser observado, reiniciado y sustituido independientemente sin afectar el estado global del pipeline","Claude produce análisis semántico más útil cuando el prompt especifica explÃcitamente las dimensiones a evaluar: sesgo de framing, retórica manipuladora, claims sin atribución, y consistencia contextual, en lugar de pedir una clasificación genérica de veracidad","Solana Devnet con PDAs es una arquitectura de attestation production-ready: los costos son extremadamente bajos, el throughput es suficiente para verificación en tiempo real, y la derivación determinÃstica de addresses elimina la necesidad de Ãndices centralizados"],learnings_en:["Hybrid on-chain/off-chain architecture is not a compromise but a deliberate design decision: heavy AI operations remain off-chain to reduce costs and latency, while cryptographic proof artifacts go on-chain to guarantee long-term auditability","LangGraph as an AI pipeline orchestrator is superior to manual sequential chaining because each node can be observed, restarted, and replaced independently without affecting the global pipeline state","Claude produces more useful semantic analysis when the prompt explicitly specifies the dimensions to evaluate: framing bias, manipulative rhetoric, unattributed claims, and contextual consistency, rather than asking for a generic truthfulness classification","Solana Devnet with PDAs is a production-ready attestation architecture: costs are extremely low, throughput is sufficient for real-time verification, and deterministic address derivation eliminates the need for centralized indexes"],metrics:[{label_es:"Etapas del pipeline",label_en:"Pipeline stages",value:"6"},{label_es:"Score de riesgo",label_en:"Risk score",value:"0.0â1.0"},{label_es:"Niveles de riesgo",label_en:"Risk levels",value:"4"},{label_es:"Storage descentralizado",label_en:"Decentralized storage",value:"IPFS"},{label_es:"Blockchain",label_en:"Blockchain",value:"Solana"},{label_es:"Hackathon",label_en:"Hackathon",value:"Dev3Pack 2026"}]}},{id:"veredas",title:"Veredas",image:"veredas",date:"2026-06-12",demoLink:"https://veredas.carlosjcastrog.com/",githubLink:"https://github.com/carlosjcastro/veredas",externalLink:"https://codeinplace.stanford.edu/cip6/showcase?project=eeoH8HXJfWfGOcFnGAdisaRFzwp1",externalLabel_es:"Ver en Stanford",externalLabel_en:"View on Stanford",description_es:"VEREDAS es un navegador de carreras bilingüe construido para aspirantes a ingenieros de IA en América Latina. Analiza tu conjunto de habilidades actual, identifica las brechas y genera una hoja de ruta de aprendizaje personalizada hacia tu rol objetivo, impulsada por datos reales del mercado latinoamericano y Claude AI. Proyecto final de Stanford Code in Place 2026.",description_en:"VEREDAS is a bilingual career navigator built for aspiring AI engineers across Latin America. It analyzes your current skill set, identifies the gaps, and generates a personalized learning roadmap toward your target role, powered by real LatAm market data and Claude AI. Final project for Stanford Code in Place 2026.",frontend:["HTML 5","CSS 3","JavaScript","vis.js Network","html2pdf.js","Tailwind CSS"],backend:["Python","FastAPI","Anthropic Claude API","GitHub REST API","ExchangeRate API","Vercel"],type:"ai",ai:!0,caseStudy:{problem_es:"Los aspirantes a ingenieros de IA en América Latina enfrentan una paradoja: saben que quieren trabajar con inteligencia artificial, pero no saben exactamente qué habilidades les faltan, en qué orden aprenderlas, ni qué salarios y roles existen realmente en su región. La información disponible online está mayormente centrada en el mercado estadounidense y en inglés, lo que genera una brecha adicional para quienes empiezan desde Argentina, Colombia, México o cualquier otro paÃs de la región.",problem_en:"Aspiring AI engineers in Latin America face a paradox: they know they want to work with artificial intelligence, but they don't know exactly which skills they're missing, in what order to learn them, or what salaries and roles actually exist in their region. Available information online is mostly centered on the US market and in English, creating an additional gap for those starting from Argentina, Colombia, Mexico, or any other country in the region.",solution_es:"VEREDAS toma el conjunto de habilidades actual del usuario, ejecuta un análisis de brechas mediante ordenamiento topológico con DFS para garantizar que el orden de aprendizaje siempre respete las dependencias entre habilidades, y genera una hoja de ruta personalizada. Claude AI produce orientación honesta y accionable en el idioma del usuario. El mapa interactivo de habilidades usa simulación de fÃsica con vis.js. Los datos del mercado latinoamericano provienen de fuentes curadas como Glassdoor, remoteok.com y levels.fyi. El proyecto final de Stanford Code in Place 2026.",solution_en:"VEREDAS takes the user's current skill set, runs a gap analysis using topological sort with DFS to guarantee the learning order always respects skill dependencies, and generates a personalized roadmap. Claude AI produces honest, actionable guidance in the user's language. The interactive skill map uses physics simulation with vis.js. Latin American market data comes from curated sources including Glassdoor, remoteok.com, and levels.fyi. Final project for Stanford Code in Place 2026.",challenges_es:["Implementar un ordenamiento topológico con DFS recursivo que garantice que el orden de aprendizaje siempre respete las dependencias entre habilidades sin ciclos ni inconsistencias","Integrar datos de mercado latinoamericano reales desde un CSV curado con la librerÃa csv de Python, cruzándolos con datos en tiempo real de la GitHub REST API y la ExchangeRate API","Construir un sistema de internacionalización completo en vanilla JavaScript sin frameworks, con toggle seamless entre español e inglés en todos los componentes incluyendo el output de Claude","Renderizar un grafo de dependencias interactivo con simulación de fÃsica en vis.js que sea legible y usable en mobile sin perder la capacidad de explorar nodos y depen
1dencias","Generar un certificado de compleción en PDF con html2pdf.js que se active automáticamente cuando el gap de habilidades llega a cero"],challenges_en:["Implementing a recursive DFS topological sort that guarantees the learning order always respects skill dependencies without cycles or inconsistencies","Integrating real Latin American market data from a curated CSV using Python's csv module, cross-referencing it with real-time data from the GitHub REST API and ExchangeRate API","Building a complete internationalization system in vanilla JavaScript without frameworks, with seamless ES/EN toggle across all components including Claude's output","Rendering an interactive dependency graph with physics simulation in vis.js that remains readable and usable on mobile without losing the ability to explore nodes and dependencies","Generating a completion certificate in PDF with html2pdf.js that activates automatically when the skill gap reaches zero"],learnings_es:["El ordenamiento topológico no es solo un algoritmo académico: aplicado a un grafo de habilidades real, produce un orden de aprendizaje que ningún humano podrÃa calcular manualmente para 20+ skills con dependencias cruzadas","Construir sin frameworks obliga a entender exactamente qué está pasando en cada interacción del DOM, lo que produjo un código más predecible y debuggeable que versiones anteriores del mismo proyecto con React","Prompting bilingüe con Claude requiere instrucciones explÃcitas sobre el idioma de output en el system prompt, no solo en el user message, para que la respuesta sea consistente independientemente del idioma del input","Los datos de mercado latinoamericano son escasos y dispersos: curarlos manualmente en un CSV fue una decisión de integridad del producto, no una limitación técnica","Stanford Code in Place enseña Python desde cero con rigor: el proyecto demuestra recursión, clases, File I/O, REST APIs y CSV parsing en un producto funcional real, no en ejercicios aislados"],learnings_en:["Topological sort isn't just an academic algorithm: applied to a real skill graph, it produces a learning order no human could manually calculate for 20+ skills with cross-dependencies","Building without frameworks forces you to understand exactly what's happening in every DOM interaction, producing more predictable and debuggable code than previous versions of the same project with React","Bilingual prompting with Claude requires explicit language instructions in the system prompt, not just the user message, for consistent output regardless of input language","Latin American market data is scarce and scattered: curating it manually in a CSV was a product integrity decision, not a technical limitation","Stanford Code in Place teaches Python from scratch with rigor: the project demonstrates recursion, classes, File I/O, REST APIs, and CSV parsing in a real functional product, not isolated exercises"],metrics:[{label_es:"Habilidades en el grafo",label_en:"Skills in graph",value:"20"},{label_es:"Roles disponibles",label_en:"Available roles",value:"6"},{label_es:"Certificaciones",label_en:"Certifications",value:"6"},{label_es:"Endpoints API",label_en:"API endpoints",value:"7"},{label_es:"Idiomas",label_en:"Languages",value:"ES / EN"},{label_es:"Proyecto Stanford",label_en:"Stanford project",value:"2026"}]}},{id:"faroiq",title:"FaroIQ",image:"faroiq",date:"2026-06-13",demoLink:"https://faroiq.vercel.app",githubLink:"https://github.com/carlosjcastro/faroiq",description_es:"Plataforma de inteligencia estratégica para ONGs y organizaciones comunitarias en América Latina. FaroIQ toma una descripción en lenguaje natural, la procesa a través de un pipeline de 9 agentes de IA en secuencia, y produce en menos de 90 segundos un análisis de necesidades, un plan de implementación por fases, proyecciones de impacto y una propuesta de financiamiento lista para presentar. Ejecuta automáticamente en Microsoft 365: Calendar, To Do, OneDrive y Outlook. Construido sobre Azure AI Foundry, Microsoft Fabric y Azure Logic Apps. Desarrollado para el Microsoft Agents League Hackathon 2026.",description_en:"Strategic intelligence platform for nonprofits and community organizations across Latin America. FaroIQ takes a plain-language description, runs it through a nine-agent AI reasoning pipeline, and produces in under ninety seconds a
1needs analysis, a phased implementation plan, impact projections, and a grant proposal ready to submit. Automatically executes across Microsoft 365: Calendar, To Do, OneDrive, and Outlook. Built on Azure AI Foundry, Microsoft Fabric, and Azure Logic Apps. Developed for the Microsoft Agents League Hackathon 2026.",frontend:["React 18","TypeScript","Vite","Three.js","Tailwind CSS"],backend:["Python","FastAPI","Azure AI Foundry","Azure Blob Storage","Azure Logic Apps","Tavily"],type:"ai",ai:!0,caseStudy:{problem_es:"Miles de ONGs y organizaciones comunitarias en América Latina toman decisiones crÃticas sin datos, sin capacidad de análisis y sin acceso a consultorÃa estratégica. Una organización con 15 voluntarios y un presupuesto de 12.000 USD al año no puede contratar cientÃficos de datos ni equipos de estrategia. El resultado es que la mayorÃa planifica en base a intuición, pierde oportunidades de financiamiento por propuestas mal estructuradas y ejecuta proyectos sin métricas de impacto que les permitan aprender o escalar.",problem_en:"Thousands of nonprofits and community organizations across Latin America make critical decisions without data, without analytical capacity, and without access to strategic consulting. An organization with fifteen volunteers and a twelve-thousand-dollar annual budget cannot afford data scientists or strategy teams. The result is that most of them plan based on intuition, miss funding opportunities due to poorly structured proposals, and run projects without impact metrics that would allow them to learn or scale.",solution_es:"FaroIQ toma una descripción en lenguaje natural de la organización y su contexto, la procesa a través de un pipeline secuencial de 9 agentes de IA sobre Azure AI Foundry, y produce en menos de 90 segundos un conjunto completo de entregables estratégicos listos para usar. El pipeline encadena el contexto de cada agente al siguiente, acumulando coherencia interna en cada paso. Un agente de revisión autónomo evalúa la calidad del output y puede re-ejecutar etapas crÃticas si el score interno cae por debajo de 0.70. Al finalizar, Azure Logic Apps ejecuta automáticamente acciones en Microsoft 365: crea eventos en Calendar, tareas en To Do, sube documentos a OneDrive y envÃa el resumen por Outlook.",solution_en:"FaroIQ takes a plain-language description of the organization and its context, runs it through a nine-agent sequential AI reasoning pipeline on Azure AI Foundry, and produces in under ninety seconds a complete set of strategic deliverables ready to use. The pipeline chains each agent's context into the next, accumulating internal coherence at every step. An autonomous revision agent scores output quality and can re-run critical stages if the internal score falls below 0.70. When complete, Azure Logic Apps automatically executes actions across Microsoft 365: creates Calendar events, To Do tasks, uploads documents to OneDrive, and sends the summary via Outlook.",challenges_es:["Diseñar un pipeline de 9 agentes en secuencia estricta donde cada agente recibe el output acumulado de todos los anteriores sin superar el presupuesto de tokens de Azure AI Foundry","Implementar el loop de revisión autónomo del agente Critique, que evalúa coherencia, viabilidad y completitud del plan antes de autorizar la ejecución de Logic Apps","Mantener una conexión WebSocket abierta durante toda la ejecución del pipeline para streaming en tiempo real de cada etapa sin bloquear el event loop de FastAPI","Gestionar las diferencias entre cuentas personales y cuentas de trabajo de Microsoft 365 para las integraciones de Logic Apps, que tienen permisos y endpoints distintos","Sincronizar el estado visual del globo Three.js con el progreso real del pipeline sin introducir latencia perceptible en el streaming"],challenges_en:["Designing a nine-agent pipeline in strict sequence where each agent receives the accumulated output of all preceding agents without exceeding Azure AI Foundry token budget","Implementing the autonomous revision loop in the Critique agent, which evaluates coherence, feasibility and completeness of the plan before authorizing Logic Apps execution","Maintaining an open WebSocket connection throughout pipeline execution for real-time per-stage streaming without blocking FastAPI's event loop","Managing the differences between Microsoft 365 personal and work accounts for Logic Apps integrations, which have distinct permissions and endpoints","Synchronizing the Three.js globe visual state with the actual pipeline progress without introducing perceptible latency in the stream"],learnings_es:["El encadenamiento de contexto entre agentes es más efectivo que los agentes paralelos cuando la coherencia interna del output importa más que la velocidad bruta","Un agente que puede identificar sus propias debilida
1des y corregirlas de forma autónoma genera más confianza operativa que uno que simplemente produce output sin evaluarlo","Three.js con day/night mode y cambios de escena requiere un remount completo vÃa React key prop para garantizar estado limpio y evitar leaks de memoria en WebGL","Azure Logic Apps es la integración más limpia con M365 cuando se necesita flexibilidad de payload sin depender de un SDK propietario con licenciamiento complejo","El mayor cuello de botella en pipelines de agentes no es la latencia de los modelos sino la serialización y deserialización del contexto acumulado entre pasos"],learnings_en:["Context chaining between agents is more effective than parallel agents when internal output coherence matters more than raw speed","An agent that can identify its own weaknesses and correct them autonomously provides more operational trust than one that simply produces output without evaluating it","Three.js with day/night mode and scene changes requires a full remount via React key prop to guarantee clean state and avoid WebGL memory leaks","Azure Logic Apps is the cleanest M365 integration path when payload flexibility is needed without depending on a proprietary SDK with complex licensing","The biggest bottleneck in agent pipelines is not model latency but the serialization and deserialization of accumulated context between steps"],agents_es:[{name:"Intake",role:"Parsea la descripción en lenguaje natural y extrae entidades clave: organización, contexto, recursos disponibles y objetivos declarados."},{name:"Research",role:"Busca datos externos relevantes vÃa Tavily: estadÃsticas del sector, benchmarks regionales y casos similares en América Latina."},{name:"Analyst",role:"Cruza la información de Intake y Research para identificar necesidades crÃticas rankeadas por severidad e impacto potencial."},{name:"Planner",role:"Diseña un plan de implementación por fases con hitos, responsables sugeridos y estimaciones de tiempo y recursos."},{name:"Evaluator",role:"Genera proyecciones de impacto con intervalos de confianza basados en los datos de Research y el plan de Planner."},{name:"Writer",role:"Redacta una propuesta de financiamiento lista para presentar a fondos y convocatorias internacionales."},{name:"Critique",role:"Evalúa la coherencia interna y viabilidad del output acumulado. Si el score cae por debajo de 0.70, re-ejecuta Planner y Evaluator."},{name:"Formatter",role:"Estructura el output final en JSON validado, listo para renderizar en UI y exportar a PDF y Excel."},{name:"Executor",role:"Dispara las integraciones de Microsoft 365 vÃa Azure Logic Apps: Calendar, To Do, OneDrive y Outlook."}],agents_en:[{name:"Intake",role:"Parses the plain-language description and extracts ke
1y entities: organization, context, available resources, and declared objectives."},{name:"Research",role:"Fetches relevant external data via Tavily: sector statistics, regional benchmarks, and similar cases across Latin America."},{name:"Analyst",role:"Cross-references Intake and Research data to identify critical needs ranked by severity and potential impact."},{name:"Planner",role:"Designs a phased implementation plan with milestones, suggested owners, and time and resource estimates."},{name:"Evaluator",role:"Generates impact projections with confidence intervals based on Research data and the Planner output."},{name:"Writer",role:"Drafts a grant proposal ready to submit to international funds and open calls."},{name:"Critique",role:"Evaluates internal coherence and feasibility of the accumulated output. If the score falls below 0.70, re-runs Planner and Evaluator."},{name:"Formatter",role:"Structures the final output as validated JSON ready to render in UI and export to PDF and Excel."},{name:"Executor",role:"Triggers Microsoft 365 integrations via Azure Logic Apps: Calendar, To Do, OneDrive, and Outlook."}],metrics:[{label_es:"Tiempo de análisis",label_en:"Analysis time",value:"< 90s"},{label_es:"Agentes en pipeline",label_en:"Pipeline agents",value:"9"},{label_es:"Integraciones M365",label_en:"M365 integrations",value:"4"},{label_es:"Score mÃnimo de revisión",label_en:"Minimum revision score",value:"0.70"},{label_es:"Ciclos de revisión autónoma",label_en:"Autonomous revision cycles",value:"⤠2"},{label_es:"Formatos de exportación",label_en:"Export formats",value:"PDF + Excel"},{label_es:"Idiomas soportados",label_en:"Supported languages",value:"ES / EN"},{label_es:"Hackathon",label_en:"Hackathon",value:"Microsoft Agents League 2026"}],screenshots:["faroiq-pipeline","faroiq-output"]}},{id:"entiscore",title:"Entiscore",image:"entiscore",date:"2026-07-27",demoLink:"https://entiscore.vercel.app",githubLink:"https://github.com/carlosjcastro/entiscore",description_es:"Agente que audita la presencia digital de un sitio o portfolio y evalúa qué tan reconocible es esa persona o proyecto como entidad legÃtima para buscadores y sistemas de inteligencia artificial. Analiza datos estructurados, consistencia de identidad, señales de autoridad y accesibilidad técnica, y entrega un puntaje, un resumen ejecutivo y un plan de acción priorizado con código de solución listo para copiar, generados por Claude AI. Incluye comparación entre dos sitios, historial exportable, códigos únicos compartibles, y un asistente conversacional con contexto del análisis capaz de analizar archivos adjuntos. Desarrollado junto a MatÃas Edgardo Tula Sarquis, construido Ãntegramente con Kiro para el hackathon de Código Facilito y Kiro powered by AWS.",description_en:"An agent that audits the digital presence of a site or portfolio and evaluates how recognizable that person or project is as a legitimate entity to search engines and AI systems. It analyzes structured data, identity consistency, authority signals, and technical accessibility, and delivers a score, an executive summary, and a prioritized action plan with copy-ready solution code, generated by Claude AI. Includes comparison between two sites, exportable history, shareable unique codes, and a conversational assistant with context of the analysis capable of analyzing attached files. Built together with MatÃas Edgardo Tula Sarquis, entirely with Kiro for the Código Facilito and Kiro powered by AWS hackathon.",frontend:["Next.js 16","TypeScript","Tailwind CSS 4","Framer Motion","Three.js"],backend:["Node.js","Supabase","Claude API","Cheerio","Zod","Vercel"],type:"ai",ai:!0,caseStudy:{problem_es:"Hoy no existe una herramienta simple y gratuita para auditar la presencia digital propia desde la perspectiva de cómo la interpretan los sistemas automatizados. La información sobre schema markup, SEO técnico y construcción de entidad digital está dispersa, es técnica, y no está pensada para que alguien sin conocimiento profundo pueda entender qué le falta a su propia presencia ni por qué importa. La mayorÃa de los profesionales con presencia online no sabe si buscadores e inteligencia artificial los reconocen correctamente como una entidad coherente.",problem_en:"Today there is no simple and free tool to audit one's own digital presence from the perspective of how automated systems interpret it. Information about schema markup, technical SEO, and digital entity construction is scattered, highly technical, and n
1ot designed for someone without deep expertise to understand what their own presence is missing or why it matters. Most professionals with an online presence have no way of knowing whether search engines and AI recognize them correctly as a coherent entity.",solution_es:"Entiscore recibe la URL de un sitio o portfolio y ejecuta cuatro analizadores en paralelo sobre datos estructurados, consistencia de identidad, señales de autoridad y accesibilidad técnica, siguiendo el contrato de Model Context Protocol para el acceso a datos externos. Con los resultados, Claude AI genera un resumen ejecutivo en lenguaje claro, un plan de acción priorizado con snippets de código listos para copiar, y sostiene un asistente conversacional acotado al contexto del análisis, capaz de analizar archivos adjuntos sin persistirlos. Cada análisis y comparativa se guarda en Supabase con un código único legible y compartible, accesible mediante una ruta pública sin necesidad de repetir el análisis.",solution_en:"Entiscore takes the URL of a site or portfolio and runs four analyzers in parallel across structured data, identity consistency, authority signals, and technical accessibility, following the Model Context Protocol contract for external data access. With those results, Claude AI generates a plain-language executive summary, a prioritized action plan with copy-ready code snippets, and powers a conversational assistant scoped to the analysis context, capable of analyzing attached files without persisting them. Every analysis and comparison is saved in Supabase with a short, shareable, human-readable code, accessible through a public route without repeating the analysis.",challenges_es:["Diseñar un orquestador que ejecute los cuatro analizadores en paralelo con manejo de errores individual, para que la falla de uno no interrumpa el análisis completo","Detectar y corregir un bug de hidratación entre servidor y cliente en las animaciones del Hero, causado por evaluar prefers-reduced-motion durante el render inicial en vez de después del montaje","Separar los clientes de Supabase por nivel de privilegio, lectura pública con anon key y escritura exclusiva con service role key, y ajustar las polÃticas de Row Level Security cuando la lectura pública devolvÃa 404 con datos ya existentes","Implementar validación estricta de archivos adjuntos en el asistente, verificando el tipo real por magic bytes en vez de confiar en la extensión o el Content-Type declarado","Reescribir el historial de git para eliminar credenciales expuestas accidentalmente sin alterar las fechas originales de los commits"],challenges_en:["Designing an orchestrator that runs the four analyzers in parallel with individual error handling, so a single failure never interrupts the full analysis","Detecting and fixing a server client hydration mismatch in the Hero animations, caused by evaluating prefers-reduced-motion during initial render instead of after mount","Splitting Supabase clients by privilege level, public reads with the anon key and writes exclusively with the service role key, and adjusting Row Level Security policies when public reads returned 404 for records that already existed","Implementing strict file validation for chat attachments, checking the real file type via magic bytes instead of trusting the extension or declared Content-Type","Rewriting git history to remove accidentally exposed credentials without altering the original commit dates"],learnings_es:["Un flujo de Spec Driven Development, requirements, diseño técnico y tareas antes de escribir código, reduce drásticamente el retrabajo cuando se construye bajo presión de tiempo","Las animaciones basadas en whileInView necesitan variants estáticas definidas fuera del render, generar el objeto de forma dinámica en cada render rompe la transición de forma silenciosa","Separar el cliente de base de datos por nivel de privilegio desde el diseño inicial evita tener que elegir entre seguridad y funcionalidad más adelante","Rotar una credencial filtrada no es suficiente si el sistema legacy que la emitió sigue habilitado, hay que desactivar explÃcitamente el mecanismo viejo","Un agente de IA que además redacta el código de la solución, no solo el diagnóstico, cambia la percepción del producto de auditorÃa a herramienta accionable"],learnings_en:["A Spec Driven Development flow, requirements, technical design and tasks before writing code, drastically reduces rework when building under time pressure","Animations based on whileInView need static variants defined outside the render, generating the object dynamically on every render silently breaks the transition","Separating the database client by privilege level from the initial design avoids having to choose between security and functionality later on","Rotating a leaked credential is not enough if the legacy system that issued it is still enabled, the old mechanism has to be explicitly disabled","An AI agent that also writes the solution code, not just the diagnosis, shifts the product's perception from an audit tool to an actionable one"],agents_es:[{name:"Orquestador",role:"Coordina la ejecución en paralelo de los cuatro analizadores y consolida sus resultados en un solo reporte."},{name:"Analizador de Datos Estructurados",role:"Detecta y evalúa schema markup JSON-LD, Microdata y RDFa según las especificaciones de schema.org."},{name:"Analizador de Consistencia de Identidad",role:"Compara el nombre y los perfiles externos declarados entre las distintas fuentes del sitio analizado."}
1,{name:"Analizador de Señales de Autoridad",role:"Detecta enlaces a plataformas reconocidas, metadata de autorÃa y menciones de logros o certificaciones."},{name:"Analizador de Accesibilidad Técnica",role:"Evalúa código de respuesta, metadatos esenciales, robots.txt y dependencia de JavaScript del lado del cliente."},{name:"Motor de Puntaje",role:"Calcula el puntaje ponderado final y el nivel de madurez a partir de los cuatro ejes evaluados."},{name:"Generador de Plan de Acción",role:"Usa Claude AI para redactar recomendaciones priorizadas con código de solución listo para copiar."},{name:"Generador de Resumen Ejecutivo",role:"Usa Claude AI para sintetizar el estado general del sitio en un párrafo claro y no técnico."},{name:"Asistente Conversacional",role:"Responde preguntas y analiza archivos adjuntos con Claude AI, acotado estrictamente al contexto del análisis."}],agents_en:[{name:"Orchestrator",role:"Coordinates the parallel execution of the four analyzers and consolidates their results into a single report."},{name:"Structured Data Analyzer",role:"Detects and evaluates JSON-LD, Microdata, and RDFa schema markup against schema.org specifications."},{name:"Identity Consistency Analyzer",role:"Compares the name and declared external profiles across the different sources of the analyzed site."},{name:"Authority Signals Analyzer",role:"Detects links to recognized platforms, authorship metadata, and mentions of achievements or certifications."},{name:"Technical Accessibility Analyzer",role:"Evaluates response code, essential metadata, robots.txt, and client side JavaScript dependency."},{name:"Scoring Engine",role:"Calculates the final weighted score and maturity level from the four evaluated axes."},{name:"Action Plan Generator",role:"Uses Claude AI to draft prioritized recommendations with copy-ready solution code."},{name:"Executive Summary Generator",role:"Uses Claude AI to synthesize the site's overall state into a clear, non-technical paragraph."},{name:"Conversational Assistant",role:"Answers questions and analyzes attached files with Claude AI, strictly scoped to the analysis context."}],metrics:[{label_es:"Ejes de análisis",label_en:"Analysis axes",value:"4"},{label_es:"Idiomas soportados",label_en:"Supported languages",value:"ES / EN"},{label_es:"Formatos de exportación",label_en:"Export formats",value:"PDF & JSON"},{label_es:"LÃmite de rate limiting",label_en:"Rate limiting cap",value:"5 req/min"},{label_es:"LÃmite de archivo adjunto",label_en:"Attachment size limit",value:"2 MB"},{label_es:"Hackathon",label_en:"Hackathon",value:"Kiro powered by AWS 2026"}],screenshots:["entiscore-hero","entiscore-reporte","entiscore-chat","entiscore-compare"]}}].sort((e,a)=>new Date(a.date).getTime()-new Date(e.date).getTime());e.s(["allProjects",0,a],80485)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.