{
  "$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
  "basics": {
    "name": "Christian Fratta",
    "label": "Engineering manager and software engineer",
    "url": "https://fratta.dev",
    "summary": "I've built software for grid-scale energy trading, e-learning, and video games, and led the teams that built it. I'm currently on a sabbatical, retraining as a research engineer.",
    "location": {
      "city": "Graz",
      "region": "Styria",
      "countryCode": "AT"
    },
    "profiles": [
      {
        "network": "GitHub",
        "url": "https://github.com/EquineOntology"
      },
      {
        "network": "LinkedIn",
        "url": "https://linkedin.com/in/christianfratta/"
      }
    ]
  },
  "work": [
    {
      "name": "Equilibrium Energy",
      "description": "Software for trading grid-scale battery storage in ERCOT",
      "position": "Senior Engineering Manager",
      "startDate": "2026-07",
      "summary": "Set technical direction of the Applications group across engineering, product, design and go-to-market.",
      "highlights": []
    },
    {
      "name": "Equilibrium Energy",
      "description": "Software for trading grid-scale battery storage in ERCOT",
      "position": "Engineering Manager",
      "startDate": "2025-01",
      "endDate": "2026-07",
      "summary": "Managed a team of two Staff Engineers as a player-coach, building and delivering the web applications and API layer used by the company's own battery trading operations and by external power companies.",
      "highlights": [
        "Led the move to AI-assisted development across product, design and engineering: product managers, designers and domain experts prototyped and built with AI coding tools, while engineers supplied the templates, automated checks, documentation and code review. Built the agent tooling behind it (reusable agent skills, sub-agent patterns, rules), then managed the resulting surge in contributions from non-engineers through to the platform launch. Held up by leadership as the company's model for AI adoption.",
        "Led application engineering for the launch for the first enterprise customer, one of the largest power companies in the US, from proof of concept through two production phases.",
        "Delivered the unified web platform that replaced the original trading application, with its API rebuilt in Python on FastAPI and its frontend moved to a pnpm monorepo.",
        "Removed bottlenecks slowing teams down: non-actionable production alerts for enterprise customers (down 70% month-over-month, from 50+ to 15), CI test time (down 83%, from 30 minutes to 5), and initial response to Sev1 and Sev2 incidents (10 minutes faster, with 90% of the manual steps automated)."
      ]
    },
    {
      "name": "Equilibrium Energy",
      "description": "Software for trading grid-scale battery storage in ERCOT",
      "position": "Staff Software Engineer",
      "startDate": "2022-09",
      "endDate": "2025-01",
      "summary": "Built and led the full-stack web application the trading desk used to bid and operate grid-scale battery storage assets in ERCOT, and built the frontend team around it.",
      "highlights": [
        "Built the trader-facing UI (TypeScript/React) and its GraphQL API (Go), then led a two-person build through the first battery's go-live: day-ahead and real-time bid/offer submission, Current Operating Plan (COP) management and virtual trading.",
        "When the frontend team's size became the bottleneck for trading features, turned the application into a platform backend engineers could build on with only light support (clear architecture, consistent patterns, tests, tooling).",
        "Set the GraphQL best practices for the wider engineering organization, and formalized the group's own engineering conventions.",
        "Added ancillary-service workflows (block orders, ECRS), economic bidding and scheduled trades to external deadlines, and led the rollout of role-based access that opened the tool to the whole company.",
        "Grew the frontend team to three, onboarding its newest engineer, and managed it for the final year."
      ]
    },
    {
      "name": "MootUp",
      "description": "Browser-based 3D platform for virtual events",
      "url": "https://mootup.com",
      "position": "Senior Full Stack Engineer",
      "startDate": "2018-06",
      "endDate": "2022-07",
      "summary": "Engineer on a browser-based 3D collaboration platform hosting virtual events with thousands of concurrent users in one shared world. Worked across infrastructure, backend and frontend.",
      "highlights": [
        "Infrastructure: one of two engineers who migrated the entire stack from bare metal to Kubernetes (Docker, Terraform, CI/CD with Jenkins), then made it scale on usage with Redis, Varnish and Cloudflare caching. Owned monitoring, incident response and high availability.",
        "Backend: reworked non-scalable legacy code (wrote 60% of the unit and integration tests), rebuilt analytics on Elasticsearch in place of MySQL, and worked on the Node.js, WebSocket and Kafka services behind the multi-user features.",
        "Frontend: added in-app conferencing with Slack, Zoom and Microsoft Teams integrations."
      ]
    },
    {
      "name": "LearnBrite",
      "description": "Web-based 3D environments for learning simulations",
      "url": "https://learnbrite.com",
      "position": "Full Stack Engineer",
      "startDate": "2015-01",
      "endDate": "2020-06",
      "summary": "One of the main contributors to an editable, web-based 3D environment for learning simulations and onboarding, running on anything from phones to VR headsets and used by Fortune 500 companies, universities and startups.",
      "highlights": [
        "Backend: PHP and Laravel services (a monolith, later microservices) covering identity and access on the company's own OAuth provider, gamification, analytics and API design.",
        "Frontend: JavaScript applications for the 3D environment, multi-user roles, a bot conversation editor, and gamification reporting to SCORM-compliant learning systems.",
        "A full multiplayer escape room, with story, sound effects and plot twists, built for one of the larger customers and reportedly still popular years later."
      ]
    },
    {
      "name": "a bonfire of souls",
      "description": "Independent game studio",
      "position": "Designer, Programmer, 3D Artist",
      "startDate": "2014-12",
      "endDate": "2015-09",
      "summary": "Worked across programming, art and design on Anima, the studio's game, as part of a team in which every member shaped the design.",
      "highlights": [
        "Programming: one half of the programming team, focused on systems programming and on extending the Unity editor with new tooling.",
        "Art: modeled, rigged and skinned the 3D characters (Maya, 3ds Max) and animated the game's cast.",
        "Also: gameplay, narrative and usability design; ran the team's agile workflow, Git repository and social media channels."
      ]
    },
    {
      "name": "The Immortal Hydra",
      "description": "Independent game development and contracting, Málaga",
      "position": "Designer, Programmer",
      "startDate": "2014-01",
      "endDate": "2019-01",
      "summary": "My work as an independent developer and contractor in game development.",
      "highlights": []
    }
  ],
  "education": [
    {
      "institution": "Universidad de Málaga",
      "area": "Máster en Diseño, Arte y Programación de Videojuegos (video game design, art and programming)",
      "startDate": "2014",
      "endDate": "2015"
    },
    {
      "institution": "Università degli Studi di Trieste",
      "area": "Ingegneria dell'Informazione (information engineering)",
      "startDate": "2010",
      "endDate": "2013"
    }
  ],
  "certificates": [
    {
      "name": "Certified Kubernetes Administrator (CKA)",
      "issuer": "Cloud Native Computing Foundation",
      "date": "2022-02-01"
    },
    {
      "name": "Certified Kubernetes Application Developer (CKAD)",
      "issuer": "Cloud Native Computing Foundation",
      "date": "2021-12-01"
    }
  ],
  "awards": [
    {
      "title": "Best Game Design and Most Innovative Game",
      "awarder": "Málaga Jam",
      "date": "2015-01",
      "summary": "Won with Time Dungeon in the local chapter of the 2015 Global Game Jam."
    }
  ],
  "skills": [
    {
      "name": "Languages",
      "keywords": [
        "C#",
        "Go",
        "JavaScript",
        "PHP",
        "Python",
        "TypeScript"
      ]
    },
    {
      "name": "Frontend",
      "keywords": [
        "HTML5",
        "jQuery",
        "MUI",
        "Next.js",
        "React",
        "Storybook",
        "WebRTC"
      ]
    },
    {
      "name": "APIs and backend",
      "keywords": [
        "Auth0",
        "AWS Cognito",
        "FastAPI",
        "GraphQL",
        "Kafka",
        "Laravel",
        "Node.js",
        "OAuth",
        "WebSockets"
      ]
    },
    {
      "name": "Data",
      "keywords": [
        "Alembic",
        "ClickHouse",
        "Databricks",
        "Elasticsearch",
        "MongoDB",
        "MySQL",
        "PostgreSQL",
        "Redis",
        "SQLAlchemy",
        "SQLite"
      ]
    },
    {
      "name": "Infrastructure",
      "keywords": [
        "AWS",
        "AWS CloudFront",
        "AWS Lambda",
        "Cloudflare",
        "Docker",
        "HAProxy",
        "Jenkins",
        "Kubernetes",
        "Make",
        "Nginx",
        "Terraform",
        "Varnish"
      ]
    },
    {
      "name": "Observability and operations",
      "keywords": [
        "Honeycomb",
        "k6",
        "PagerDuty",
        "PostHog",
        "Sentry"
      ]
    },
    {
      "name": "Tools",
      "keywords": [
        "Claude Code",
        "clypi",
        "Dependabot",
        "Git",
        "Gulp",
        "Jest",
        "pnpm",
        "SourceTree",
        "uv",
        "Vitest",
        "Zapier"
      ]
    },
    {
      "name": "Games and 3D",
      "keywords": [
        "3ds Max",
        "Audition",
        "Maya",
        "Photoshop",
        "Premiere Pro",
        "Unity",
        "Visual Studio"
      ]
    }
  ],
  "languages": [
    {
      "language": "Italian",
      "fluency": "Native"
    },
    {
      "language": "English",
      "fluency": "C2"
    },
    {
      "language": "Spanish",
      "fluency": "B2"
    },
    {
      "language": "German",
      "fluency": "B1"
    }
  ],
  "projects": [
    {
      "name": "Skeinimals",
      "description": "A tool for embroidery management & feedback.",
      "url": "https://codeberg.org/EquineOntology/skeinimals",
      "startDate": "2026-09",
      "keywords": [
        "Python",
        "uv",
        "clypi",
        "SQLAlchemy",
        "Alembic"
      ]
    },
    {
      "name": "The Full Monty",
      "description": "Monte Carlo simulator to estimate whether certain tasks would fit in my workday, based on past task estimate vs duration.",
      "url": "https://github.com/EquineOntology/full-monty",
      "startDate": "2021-12",
      "endDate": "2022-12",
      "keywords": [
        "Node.js",
        "React",
        "Next.js",
        "GraphQL",
        "MongoDB",
        "SQLite",
        "Docker"
      ]
    },
    {
      "name": "Gaze of the World",
      "description": "Tracked volume of news coverage by country to detect spikes and alert me to important world events without following the news all day.",
      "url": "https://github.com/EquineOntology/gaze-of-the-world",
      "startDate": "2016",
      "endDate": "2018",
      "keywords": [
        "PHP",
        "Laravel",
        "MySQL",
        "Nginx"
      ]
    }
  ]
}