{
  "$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
  "basics": {
    "name": "Luis Felipe Llamas Luaces",
    "label": "Senior Backend Specialist",
    "image": "https://lfllamas.com/luis.jpg",
    "email": "luis@lfllamas.com",
    "url": "https://lfllamas.com/en/",
    "summary": "Backend engineer with ten years across robotics research, analytics platforms and LLM tooling. I have represented my department on the company's AI Governance Commission since it was set up, working on safety standards and company AI policy, and I have run Claude training for over a hundred colleagues across departments. In my department I build agentic workflows, shared skills that speed up delivery, and a linked code and documentation system so agents load less context. I have also been part of a maker association for over a decade.",
    "location": {
      "city": "A Coruña",
      "region": "Galicia"
    },
    "profiles": [
      {
        "network": "LinkedIn",
        "url": "https://www.linkedin.com/in/luis-felipe-llamas-luaces-367461bb/"
      },
      {
        "network": "GitHub",
        "url": "https://github.com/Shiul93"
      }
    ]
  },
  "work": [
    {
      "name": "Redegal",
      "position": "Senior Backend Specialist and AI Governance Commission member",
      "location": "A Coruña (remote)",
      "url": "https://www.redegal.com/en/",
      "startDate": "2026-02",
      "summary": "Same backend work, plus management duties in Product / R&D. Representative of the product department on the AI Governance Commission since it was set up.",
      "highlights": [
        "Management duties in Product / R&D alongside the backend work of the previous period.",
        "AI Governance Commission, as the product department's representative: safety standards, AI rollout across the company and skills shared company-wide; Claude training for over a hundred colleagues.",
        "MCP servers for the company's existing analytics tools.",
        "Agentic workflows and shared skills that standardize development and cut delivery time, plus a linked code and documentation system so agents load less context."
      ]
    },
    {
      "name": "Redegal",
      "position": "Backend Engineer",
      "location": "A Coruña (remote)",
      "url": "https://www.redegal.com/en/",
      "startDate": "2022-06",
      "endDate": "2026-03",
      "summary": "Main backend engineer of Redegal's data-driven marketing and analytics tools Binnacle and Boostic, and of the backend of the ATaquilla CMS.",
      "highlights": [
        "Design and build of Binnacle and Boostic from scratch to production in one year, followed by new features: dynamic dashboard generation from the backend and LLM integration for data analysis and report generation.",
        "The tools are used by Redegal's own marketing team and by external clients.",
        "Mentoring and code review for new backend team members.",
        "Coordination with the Data Science and Frontend teams through a shared documentation system and the protocols to use it.",
        "Design and build of the ATaquilla CMS backend from scratch to production within the agreed timeframe, together with the client's software, marketing and operations teams."
      ]
    },
    {
      "name": "University of A Coruña",
      "position": "Pre-doctoral Researcher",
      "location": "Hybrid",
      "url": "https://aiplus.udc.es",
      "startDate": "2021-11",
      "endDate": "2022-05",
      "summary": "Perception systems in cognitive robotics, as part of doctoral studies.",
      "highlights": [
        "Research on perception systems in cognitive robotics as part of the doctoral studies.",
        "An intelligent tutoring system on a Unity3D robotics simulator to improve robotics learning with the Robobo platform.",
        "A Python library for easy access to HomeAssistant home automation systems, to teach ambient intelligence in classrooms.",
        "Co-supervision of two final degree projects and a Master's thesis in educational robotics and computer vision; the Master's thesis was published by IEEE (2019).",
        "Tools for other researchers in the group and collaboration on scientific publications."
      ]
    },
    {
      "name": "UDC – Navantia Joint Research Unit",
      "position": "Researcher",
      "location": "Ferrol (on site)",
      "url": "https://umi.udc.es/es/actuaciones/tubos-de-cierre/",
      "startDate": "2020-11",
      "endDate": "2021-11",
      "summary": "Prototype that uses genetic algorithms to redesign the closing pipes of ships under construction.",
      "highlights": [
        "Design and implementation of a prototype to improve the fitting and adjustment of pipes in ships under construction.",
        "Genetic algorithms (Python) to redesign the pipe layouts that, because of real-world assembly deviations, did not meet fitting tolerances.",
        "Work with the pipe workshop and metrology lab engineers; combined with 3D scanners, the prototype shortened measurement and design times and prevented errors."
      ]
    },
    {
      "name": "CITIC Research Centre, University of A Coruña",
      "position": "Researcher",
      "location": "Remote",
      "url": "https://theroboboproject.com/",
      "startDate": "2020-07",
      "endDate": "2020-11",
      "summary": "New machine vision techniques for the Robobo educational robotics platform.",
      "highlights": [
        "Development and integration of new machine vision techniques into the Robobo educational robotics platform framework."
      ]
    },
    {
      "name": "UDC – Navantia Joint Research Unit",
      "position": "Researcher",
      "location": "Ferrol (on site)",
      "url": "https://umi.udc.es/es/actuaciones/tubos-de-cierre/",
      "startDate": "2019-04",
      "endDate": "2020-07",
      "summary": "Pipe fitting research for the Navantia shipyard: analysis of solutions to measure assembly deviations.",
      "highlights": [
        "Analysis of solutions for the automatic extraction of pipe ends in ship construction modules, to detect deviations introduced during assembly and update the connecting pipes to fit them.",
        "Evaluation of laser scanners and metrology software."
      ]
    },
    {
      "name": "Integrated Group for Engineering Research (GII)",
      "position": "Software Engineer",
      "location": "A Coruña / Ferrol (on site)",
      "url": "https://gii.udc.es/",
      "startDate": "2019-01",
      "endDate": "2019-04",
      "summary": "Robobo educational robotics platform: new interaction modules and the iOS port.",
      "highlights": [
        "Development of additional interaction modules for the Robobo educational robotics platform framework.",
        "iOS port of the Robobo app and framework."
      ]
    },
    {
      "name": "Mytech Ingenieria Aplicada",
      "position": "Software Engineer",
      "location": "Ferrol",
      "url": "http://mytechia.com",
      "startDate": "2016-10",
      "endDate": "2018-12",
      "summary": "Sensing and actuation framework of the Robobo educational robotics platform, continuing the final degree project.",
      "highlights": [
        "Development of Robobo's Android app from scratch and integration of machine vision with OpenCV."
      ]
    }
  ],
  "volunteer": [
    {
      "organization": "Bricolabs",
      "position": "President",
      "url": "https://www.bricolabs.cc/",
      "startDate": "2020-02",
      "endDate": "2023-09",
      "summary": "President of Bricolabs, a hackerspace promoting open source hardware and software.",
      "highlights": []
    },
    {
      "organization": "Bricolabs",
      "position": "Member",
      "url": "https://www.bricolabs.cc/",
      "startDate": "2013-04",
      "summary": "Member of Bricolabs, a hackerspace promoting open source hardware and software.",
      "highlights": []
    }
  ],
  "education": [
    {
      "institution": "UDC",
      "studyType": "PhD, Cognitive Robotics",
      "startDate": "2019-11",
      "endDate": "2022-06",
      "score": "discontinued",
      "courses": []
    },
    {
      "institution": "UDC",
      "studyType": "Master's Degree, Bioinformatics for Health Sciences (Neuroscience focus)",
      "startDate": "2016-09",
      "endDate": "2018-07",
      "courses": []
    },
    {
      "institution": "UDC",
      "studyType": "Engineering Degree, Computer Engineering (specialized in computer science)",
      "startDate": "2011-09",
      "endDate": "2016-08",
      "courses": []
    }
  ],
  "publications": [
    {
      "name": "Artificial Intelligence Teaching Through Embedded Systems: A Smartphone-Based Robot Approach",
      "publisher": "Springer",
      "releaseDate": "2019-11",
      "url": "https://link.springer.com/chapter/10.1007/978-3-030-35990-4_42"
    },
    {
      "name": "Adapting computer vision algorithms to smartphone-based robot for education",
      "publisher": "IEEE",
      "releaseDate": "2019-10",
      "url": "https://ieeexplore.ieee.org/abstract/document/9264289"
    },
    {
      "name": "The Robobo Project: Bringing Educational Robotics Closer to Real-World Applications",
      "publisher": "Springer",
      "releaseDate": "2017-08",
      "url": "https://link.springer.com/chapter/10.1007/978-3-319-62875-2_20"
    }
  ],
  "skills": [
    {
      "name": "Python Development",
      "keywords": [
        "Flask",
        "numpy",
        "pandas",
        "Poetry",
        "marshmallow",
        "pydantic"
      ]
    },
    {
      "name": "Software Engineering",
      "keywords": [
        "Modular design",
        "REST API design",
        "Testing (pytest)"
      ]
    },
    {
      "name": "DB Management",
      "keywords": [
        "PostgreSQL",
        "ClickHouse",
        "ORM",
        "SQLAlchemy",
        "SQL",
        "Alembic"
      ]
    },
    {
      "name": "DevOps",
      "keywords": [
        "git",
        "Docker",
        "Docker Compose",
        "Kubernetes",
        "Elastic",
        "Linux",
        "Redis",
        "make",
        "bash"
      ]
    },
    {
      "name": "Mobile Development",
      "keywords": [
        "Android",
        "iOS"
      ]
    },
    {
      "name": "AI and LLMs",
      "keywords": [
        "LangChain",
        "LangGraph",
        "MCP",
        "Claude",
        "Prompt engineering"
      ]
    }
  ],
  "languages": [
    {
      "language": "Spanish"
    },
    {
      "language": "English"
    }
  ],
  "interests": [
    {
      "name": "Music",
      "keywords": [
        "Guitar",
        "Bass",
        "Piano",
        "Drums"
      ]
    },
    {
      "name": "Electronics",
      "keywords": [
        "Robotics",
        "IoT",
        "Ham radio"
      ]
    },
    {
      "name": "Crafts",
      "keywords": [
        "Woodworking",
        "Metalworking",
        "Jewellery"
      ]
    },
    {
      "name": "Arts",
      "keywords": [
        "Drawing",
        "Painting"
      ]
    },
    {
      "name": "Sports",
      "keywords": [
        "Mountain biking"
      ]
    }
  ],
  "projects": [
    {
      "name": "Binnacle / Boostic",
      "description": "Backend of Redegal's data-driven marketing and analytics tools.",
      "highlights": [
        "RESTful API in Flask, secured with OAuth (Auth0) and JWT; dependencies managed with Poetry.",
        "Redis for caching and asynchronous tasks; PostgreSQL modelled with the SQLAlchemy ORM; ClickHouse as the analytics data warehouse, queried with SQL and processed with Pandas.",
        "Containerization and deployment with Docker Compose.",
        "LLM integration for data analysis and report generation: first a small prompt-chaining framework, later moved to LangChain / LangGraph agents.",
        "A framework to design dashboards dynamically on the backend from widgets, handling localization and producing descriptions the frontend renders. It replaced Superset, saving maintenance time, deployment complexity and frontend work, and let the backend team create dashboards faster.",
        "Introduction of a shared documentation platform on Obsidian with version control, plus protocols and templates, for the frontend and data science teams."
      ],
      "keywords": [
        "Python",
        "Flask",
        "Prompt engineering",
        "PostgreSQL",
        "ClickHouse",
        "Docker",
        "Auth0",
        "LangChain",
        "LangGraph",
        "SQL",
        "Pandas"
      ],
      "startDate": "2022-06",
      "url": "https://lfllamas.com/en/projects/binnacle-boostic/",
      "roles": [
        "Main backend engineer"
      ],
      "type": "application"
    },
    {
      "name": "Pipe Fitting",
      "description": "Prototype using genetic algorithms to redesign closing pipes so they fit as-built ship modules at Navantia.",
      "highlights": [
        "Analysis and benchmarking of commercial 3D scanners with the Polyworks metrology suite.",
        "Conceptual design of a 3D measurement tool in Fusion 360, and a geometric analysis of the problem.",
        "Genetic algorithm development and benchmarking in NumPy.",
        "Python prototype with a wxPython frontend, refined with the end users and their metrology team."
      ],
      "keywords": [
        "Python",
        "Genetic algorithms",
        "wxPython",
        "NumPy",
        "PyGAD"
      ],
      "startDate": "2020-11",
      "endDate": "2021-11",
      "url": "https://lfllamas.com/en/projects/pipe-fitting/",
      "roles": [
        "Researcher"
      ],
      "type": "application"
    },
    {
      "name": "Robobo Platform",
      "description": "Software framework of a smartphone-based educational robotics platform.",
      "highlights": [
        "Native Android and iOS apps for the robot.",
        "A modular sensing and actuation framework with modules for computer vision, audio, signal processing and video streaming.",
        "Client libraries to control the robot over websockets: Python, JavaScript, Scratch and ROS.",
        "A robot simulator in the Unity game engine."
      ],
      "keywords": [
        "Android",
        "iOS",
        "OpenCV",
        "Python",
        "JavaScript",
        "Unity"
      ],
      "startDate": "2016-10",
      "endDate": "2022-05",
      "url": "https://lfllamas.com/en/projects/robobo/",
      "roles": [
        "Software engineer and researcher"
      ],
      "type": "application"
    },
    {
      "name": "Robobo HRI library",
      "description": "Base library of the human–robot interaction modules of the Robobo platform.",
      "highlights": [
        "Touch: taps, holds, caresses and flings on the phone screen.",
        "Speech: speech recognition and text-to-speech.",
        "Sound: clap, pitch and note detection, tone generation and emotion sounds.",
        "Vision: camera access, face detection and colour detection with OpenCV.",
        "Messaging: sending text and camera pictures by email.",
        "Emotions: facial expressions shown on the phone screen.",
        "Example apps built on the modules: a pet robot, a Simon game and a surveillance robot."
      ],
      "keywords": [
        "Android",
        "Java",
        "OpenCV"
      ],
      "startDate": "2016",
      "endDate": "2016",
      "url": "https://lfllamas.com/en/projects/robobo-hri/",
      "roles": [
        "Final degree project"
      ],
      "type": "application"
    },
    {
      "name": "Stimpack",
      "description": "MATLAB tool to run electrophysiology experiments on awake primates, mainly to study working memory.",
      "highlights": [
        "Built on Psychtoolbox to present visual stimuli with precise timing.",
        "Three tasks: fixation to train the subject, mapping to locate receptive fields in the visual cortex, and a working-memory task used to study the effect of transcranial magnetic stimulation on the prefrontal cortex.",
        "One window per task to set its parameters and control the session live (pause, resume, give a reward); changes apply from the next trial.",
        "Works with the Eyelink eye tracker, Plexon OmniPlex data acquisition through DATAPixx, and the reward system; a mouse can stand in for gaze when developing without the hardware.",
        "New tasks extend an abstract task class and a template window, so they only implement the trial logic."
      ],
      "keywords": [
        "MATLAB",
        "Psychtoolbox",
        "Eyelink",
        "Plexon OmniPlex"
      ],
      "startDate": "2018",
      "endDate": "2018",
      "url": "https://lfllamas.com/en/projects/stimpack/",
      "roles": [
        "Master's thesis"
      ],
      "type": "application"
    },
    {
      "name": "ATaquilla",
      "description": "Custom CMS for ATaquilla's marketing team to edit public event content.",
      "highlights": [
        "Backend architecture defined with the client and integrated with their existing infrastructure, in coordination with the frontend team building the website.",
        "Python / Flask RESTful API deployed with Kubernetes and Rancher.",
        "Sync with the existing operations backend through webhooks and periodic Kubernetes jobs.",
        "PostgreSQL with the SQLAlchemy ORM and Alembic migrations; fuzzy product search with pg_trgm.",
        "Keycloak deployment and integration for user authentication."
      ],
      "keywords": [
        "Python",
        "Flask",
        "Kubernetes",
        "PostgreSQL",
        "Keycloak",
        "Alembic"
      ],
      "startDate": "2022-06",
      "endDate": "2026-03",
      "url": "https://lfllamas.com/en/projects/ticketing-cms/",
      "roles": [
        "Main backend engineer"
      ],
      "type": "application"
    },
    {
      "name": "DnD Sidekick",
      "description": "A player-centred web app for D&D 5e character sheets that works offline at the table, with spells, inventory, a rules compendium and a character roster.",
      "highlights": [
        "Playable character sheet with inline editing and panels that change with the class (Artificer and Monk so far).",
        "Character roster: guided creation, level up, duplicate, and JSON export and import.",
        "Spells (prepared, slots, homebrew) and inventory with weight, containers and homebrew items. Armour class and attacks come from the equipped gear.",
        "Rules compendium across several sourcebooks, with full rules text and tables."
      ],
      "keywords": [
        "React",
        "TypeScript",
        "Vite",
        "PWA",
        "IndexedDB",
        "Dexie",
        "Vitest",
        "Playwright"
      ],
      "url": "https://lfllamas.com/en/personal/dnd-sidekick/",
      "type": "personal"
    },
    {
      "name": "MealVault",
      "description": "Manages recipes, pantry inventory, meal planning and shopping lists, with an MCP server that exposes the API as tools for an LLM.",
      "highlights": [
        "Recipes with substitutes and sub-recipes.",
        "Pantry inventory: cooking a recipe deducts stock, oldest first.",
        "\"What can I cook now\", listing what is missing for near matches.",
        "Weekly menus and shopping lists, plus an append-only pantry log for consumption analysis."
      ],
      "keywords": [
        "Python",
        "Flask",
        "SQLAlchemy",
        "PostgreSQL",
        "Redis",
        "React",
        "TypeScript",
        "FastMCP",
        "Alembic"
      ],
      "url": "https://lfllamas.com/en/personal/mealvault/",
      "type": "personal"
    },
    {
      "name": "Morse Trainer",
      "description": "Interactive Morse code trainer firmware for an ESP32-C3 board with an iambic paddle, buzzer sidetone, a small colour display and a rotary encoder.",
      "highlights": [
        "Iambic paddle input with straight key, Iambic A and Iambic B modes, speed in WPM and Farnsworth spacing.",
        "Live Morse decoder screen.",
        "Buzzer sidetone, a status LED and a live status display on a 240×135 colour screen.",
        "Menus driven by a rotary encoder, with settings kept in flash. Next: lessons and scoring."
      ],
      "keywords": [
        "C++",
        "Arduino",
        "PlatformIO",
        "ESP32-C3",
        "Unity"
      ],
      "url": "https://lfllamas.com/en/personal/morse-trainer/",
      "type": "personal"
    },
    {
      "name": "My robots",
      "description": "Robots built over the years: a maze solver, a mini sumo, a hexapod and three half-pound combat robots for OSHWDem.",
      "highlights": [],
      "keywords": [
        "Arduino",
        "Teensy",
        "C++",
        "PlatformIO",
        "3D printing",
        "CNC milling"
      ],
      "url": "https://lfllamas.com/en/personal/my-robots/",
      "type": "personal"
    },
    {
      "name": "Radio Show",
      "description": "An autonomous radio DJ: an agent writes the script of a live show, voices it with text to speech and controls Spotify playback in each listener's own browser.",
      "highlights": [
        "Plans the whole show as a running order, then writes each block live, one block ahead of what is playing.",
        "Picks tracks on Spotify, rejecting karaoke versions and songs played too recently.",
        "Voices each link with text to speech and lowers the music under the voice.",
        "Remembers past shows: a short digest of recent plays, plus a history search the model calls when it needs it."
      ],
      "keywords": [
        "FastAPI",
        "LangGraph",
        "PostgreSQL",
        "Redis",
        "React",
        "TypeScript",
        "Spotify Web Playback SDK",
        "OpenAI API",
        "Web Audio"
      ],
      "url": "https://lfllamas.com/en/personal/radio-show/",
      "type": "personal"
    }
  ],
  "meta": {
    "canonical": "https://lfllamas.com/en/cv.json",
    "version": "v1.0.0",
    "lastModified": "2026-10-11T14:20:30"
  }
}
