Alejandro Corral ES CV

Looking for my first role · remote, Seville or Malaga

Alejandro Corral

Junior AI Developer. I build software with AI built in: agents, LLMs via API, MCP servers and process automation.

education
Higher vocational diplomas in Web and Multiplatform App Development (DAW + DAM, ILERNA)
internships
GF Publicidad, AI automation (2026). Crear Digital, web development (2025)
stack
PHP and Laravel, Kotlin and Android, JavaScript, SQL, Make and n8n
based in
Jerez de la Frontera (Cádiz, Spain). Driving licence and own car
  • uploadhub 21-10-2026 Transcribir con IA solo los episodios públicos
  • uploadhub 21-10-2026 Preparar la demo pública en Laravel Cloud
  • uploadhub 08-10-2026 No fiarse del tipo de archivo que envía el navegador
  • fittrack 08-10-2026 Guardar la foto de perfil en Firestore en lugar de Storage
  • uploadhub 08-10-2026 Proteger los audios privados y las sesiones
  • fittrack 07-10-2026 Reglas de seguridad de Firestore y Storage
  • uploadhub 08-10-2026 Arreglar y ampliar los tests
  • fittrack 06-10-2026 Progreso: gráficas de 7 y 30 días, medias y mejor racha
  • uploadhub 08-10-2026 Convertir UploadHub en una plataforma de podcasts completa
  • fittrack 06-10-2026 Modo entreno: cronómetro, series y temporizador de descanso

Projects

An AI system I built during my internship and three projects with their code open on GitHub. For each one I explain what I did and how much AI helped. The apps themselves are in Spanish.

01

Lead centraliser

Gathers in one place the contacts that come in from the websites of an agency's clients and saves each one in that client's sheet.

in productiongenerative AIMakeGoogle Sheets

Internship at GF Publicidad · private company code

Website forms Website chat

which client is it from?

  1. 1rules on the contact's data
  2. 2AI, only when the rules aren't enough
Client's sheet To reviewno contact is ever lost

contact from a form

illustrative example

what I did

I built it during my internship, using Claude Code as my development environment. Before, every client needed its own route in Make; now adding a client means filling in one row, and a panel checks with test contacts that everything arrives correctly before marking the client as live.

It's in production with the agency's 7 client companies.

how AI is used

AI isn't the main path: rules are applied first, and the model only decides when there's doubt. Its answers are also checked before anything is written, so it can't make data up.

No contact is ever lost: if nobody knows whose it is, it's set aside to be reviewed.

02

UploadHub

A platform to publish, listen to and measure podcasts.

Laravel 12PHP 8.2MySQL138 tests

Video · the player keeps playing while you browse (sample data)
Home page and player
An episode's retention curve
Episode page
Show with RSS feed

what I did

It was my final project for the web development diploma (May and June 2025), which I programmed myself with Laravel, Blade and Tailwind. In October 2026 I rebuilt almost all of it with an AI agent, Claude Code: I fixed its security flaws and added what turns it into a complete platform.

I decided what to build and in what order, reviewed every change and tested it. To be able to explain every piece, I wrote a chapter-by-chapter guide to the code.

  • Chunked uploads up to 500 MB
  • RSS feed per show
  • Retention curve
  • REST API with tokens
  • Moderation
  • Persistent player

AI ready, still switched off. Transcription with Whisper and summaries and chapters with Claude have their code and tests done, but they're disabled until the APIs are connected.

decisions · 5
  • Audio files are never public on disk.They're served through a route that checks permissions and supports seeking to any point.
  • File type comes from the content.Never from what the browser says.
  • Heavy work goes to a queue.The episode is published right away and ffmpeg processes it afterwards.
  • Plays without personal data.Each play is identified by a hash of the user or session.
  • No N+1 queries.A test visits every page and fails if one appears.

from the commit history (in Spanish)

  1. Transcribir con IA solo los episodios públicos
  2. No fiarse del tipo de archivo que envía el navegador
  3. Proteger los audios privados y las sesiones
  4. Arreglar y ampliar los tests
  5. · · ·
  6. Commit entregable

On every push, GitHub Actions runs the tests on SQLite and on MySQL 8.4.

03

VeriFactu demo

Invoicing with a chained hash and a tax QR code, following the rules of the Spanish Tax Agency (AEAT).

JavaScriptSHA-256no build

The AEAT's 3 official examples, calculated right now in your browser with my code

calculating…

Change the amount of record 1 and see what happens to the chain.

Video · the full demo: load, verify, tamper and verify again

what it is

VeriFactu is the Spanish Tax Agency's system against invoicing fraud. Every invoice record stores the SHA-256 hash of the previous one, so changing an invoice that's already been issued breaks the chain.

The demo calculates the hash of issue and cancellation records, verifies the chain and generates the QR code with the URL of the AEAT's test environment. It doesn't send anything to the tax office.

how I validated it

The tests reproduce the 3 examples from the AEAT's official document, and the page checks them on startup. The same file runs in the browser and in Node, which is how the tests run. It's the one calculating the block above.

Built with AI assistance.

04

FitTrack

An Android app for workouts, nutrition and hydration.

KotlinJetpack ComposeFirebaseMVVM

Video · a tour of the app
Home
9 routine templates
Diary with Open Food Facts
7 and 30-day charts
Hydration
Light mode

what I did

It's my final project for the multiplatform development diploma, extended in October 2026 with AI assistance. Workout mode with timer and rest periods, routines with 9 templates, a food diary with the Open Food Facts API, hydration and 7 and 30-day charts. Sign-in with email and with Google.

decisions · 4
  • MVVM with StateFlow.Screens only draw the state; repositories are the only part that talks to Firebase.
  • Calculations as pure functions.Nutrition and streaks, with no Android code, so they can be tested with JUnit.
  • Each user only sees their own data.Firestore's security rules guarantee it.
  • Everything on the free plan.The profile picture is shrunk to 256 px and stored inside the user's document.

from the commit history (in Spanish)

  1. Guardar la foto de perfil en Firestore en lugar de Storage
  2. Reglas de seguridad de Firestore y Storage
  3. Buscador de Open Food Facts: resultados que tienen que ver con lo buscado
  4. Modo entreno: cronómetro, series y temporizador de descanso

How I work with AI

I code every day with AI assistants (Claude Code, ChatGPT, Gemini) and I know how to integrate language models into an application via API.

  1. I decide what to build

    Which feature comes first, how it's organised and what isn't done yet.

  2. The agent writes from my instructions

    In UploadHub, a good part of the code and tests came from Claude Code, based on what I asked for.

  3. I review and test everything

    I accept or correct every change, test the app and write a guide to the code so I can explain every piece.

7 companiesclients of GF Publicidad connected to the AI system I built during my internship.
Claude API and MCPwhat I used to integrate language models into those automations.
138 testsin UploadHub, with continuous integration on GitHub Actions.

AI doesn't replace understanding the code: it helps me go faster, but I review and test what I deliver.

Experience

Two internships (FCT, the work placements of the Spanish vocational diplomas), one per diploma.

  1. AI automation development

    GF Publicidad 85 SL · Seville, remote

    • Built process automation systems with generative AI: LLM integration through the Claude API and MCP servers, with Claude Code as my development environment.
    • Integrated third-party REST APIs so the workflows ran on real data.
    • Built, with Claude Code, a system that centralises the contacts of the agency's 7 client companies and uses AI to identify the unclear ones. It's in production.
    • Set up a WhatsApp bot with an AI agent that handled and filtered contacts.
    • Built automations with n8n and Make.
    • Documented every workflow and the API changes that affected the integrations.
  2. Full-stack developer

    Crear Digital · Jerez de la Frontera

    • Built and maintained websites for real clients with PHP, JavaScript, HTML and CSS.
    • Forms and back end connected to a database to capture, validate and store client data.
    • Solved client issues as part of a team using Git.
  3. Weekend waiter

    Alfredo Café Copas · Jerez

about me

Alejandro Corral Carrasco

I'm from Jerez and I like building software that solves real problems. I'm looking for my first role as a junior AI developer, remote or in Seville or Malaga.

education

  • Higher diploma in Multiplatform App Development (DAM) · ILERNA, 2025 – 2026
  • Higher diploma in Web App Development (DAW) · ILERNA (Albor Croft), 2023 – 2025
  • Hermes Agent course · AI agents with tools, skills, MCP and scheduled tasks
  • Spanish native, English B1, French A2

tools

  • PHP, Java, JavaScript, TypeScript, Kotlin, SQL
  • Laravel, React, Node.js, Android (Jetpack Compose), Firebase
  • MySQL, PostgreSQL, SQLite, Firestore
  • Git, GitHub Actions, Docker
  • Make, n8n, Google Sheets

contact

alejandrocorral509@gmail.com

If you're looking for a junior developer who already works with AI every day, drop me a line.

CV (PDF, Spanish) LinkedIn GitHub

QR code that opens alejandrocorral.es

alejandrocorral.es