aaron@portfolio — zsh

whoamishows who is logged in

Aaron Aguayo Martínez

catdisplays the contents of a file role.txt

Data Engineer / AI Developer · Sevilla, Spain

catdisplays the contents of a file focus.txt

Data architecture · AI integration in pipelines · AWS cloud solutions

catdisplays the contents of a file about-me.txt

Data Engineer with 12 years of experience in the IT sector, experience in cloud, data, automation and AI. AWS Certified (x5)

echoprints text to the screen "Open to new AI and Data projects"

Languages

  • Spanish Native
  • English C1
  • French Basic

Programming

  • Python
  • SQL
  • Bash
  • C# .NET
  • R
  • HTML5
  • PHP
  • JavaScript

Skills

$ filter --category

76 skills

PythonC# .NETSQLPHPJavaScriptHTML5CSS3BashRS3GlueAthenaEMRRedshiftKinesisSpark / PySparkHadoopHiveAirflowKafkaETL / ELTData LakeData WarehousingDelta LakeParquet / Avro / ORCTensorFlowPyTorchScikit-learnKerasSageMakerBedrockLLMsComputer VisionYOLOMLOpsPower BIQuickSightPandasNumPyMatplotlibLambdaStep FunctionsEventBridgeAPI GatewaySNSSQSECSECRIAMCloudWatchCloudTrailCloudFormationTerraformDockerGitGitHub ActionsCodePipelineCI/CDCognitoLake FormationBatchDynamoDBRDSPostgreSQLSQL ServerMySQLMongoDBLinux/VPS AdministrationWindows ServerActive DirectoryNetworkingDNSNginx / ApacheSSHFirewalls / VPNREST APIs

Projects

aaaguayo.dev portfolio

Static site built with Astro + Tailwind, served from a global CDN with fully serverless technologies. Bilingual EN/ES with automated CI/CD on every push.

Eventez

Serverless event management app — guest RSVP, live photo wall via QR code, and admin dashboard. Full AWS stack with Python Lambdas, API Gateway and DynamoDB.

AI / ML experiments

Small projects applying machine learning to real-world datasets — computer vision, NLP and tabular data, using PyTorch, Scikit-learn and AWS SageMaker.

status: coming soon

aaron@portfolio — aaaguayo.dev architecture

aaaguayo.dev — architecture

A fully static build with no backend and no database — every page is pre-rendered and served from a global CDN, with a fully automated deploy pipeline.

stack: AstroTailwindAWSS3CloudFrontACMCloudflareGitHub Actions
Visitor browser Cloudflare DNS · proxy (CDN/WAF) CloudFront edge cache · ACM TLS S3 bucket static hosting GitHub Actions CI/CD on push HTTPS proxy origin purge cache invalidate deploy

Frontend

Astro 3 in static-output mode + Tailwind CSS — no client framework, no hydration. The site is bilingual (EN/ES) via a dual-render component and a CSS toggle, so there is no i18n routing. The only JavaScript on the page is the language switch and the <dialog>-based modals (this one included).

Hosting & CDN

The build output is synced to an S3 bucket (eu-west-1) configured for static website hosting — no servers, no containers. CloudFront sits in front as the CDN, caching pages at edge locations worldwide and terminating TLS close to the visitor.

DNS & TLS

DNS lives in Cloudflare and points the domain at the CloudFront distribution. The TLS certificate is issued and renewed automatically through AWS ACM, so HTTPS just works without manual renewals.

CI/CD

A GitHub Actions workflow builds the site on every push to main/development, runs "aws s3 sync --delete" against the bucket, invalidates the CloudFront distribution, and purges the Cloudflare cache — fully automated, no manual deploy steps.

aaron@portfolio — eventez architecture

Eventez — architecture

A serverless event management platform — fully hosted on AWS with no traditional servers. The same CDN pattern as this portfolio, extended with a REST API, auth, a database, and a photo upload pipeline.

stack: AstroTailwindPythonAWSLambdaAPI GatewayDynamoDBS3CloudFrontCDK
Guest browser · mobile API Gateway HTTP API · JWT auth Lambda Python 3.12 functions DynamoDB ×2 tables CDK + CI/CD Python IaC · GH Actions S3 Photos presigned · CDN HTTPS + JWT invoke r/w presigned URL cdk deploy provisions

Frontend & CDN

Astro + Tailwind static site deployed to S3 and served via CloudFront — the same pattern as this portfolio. Built mobile-first for guests using phones at the event. No client framework; all dynamic behaviour (RSVP, uploads) is handled via API calls.

Serverless API

API Gateway HTTP API routes each request to a dedicated Python 3.12 Lambda — one per endpoint group. JWT validation lives in a shared Lambda layer (PyJWT + validators), so auth logic is never duplicated. A separate admin Lambda handles all /admin/* routes via path dispatch.

Database Design

Two DynamoDB tables: a single-table design for event/guest/RSVP entities (with a GSI for full event scans), plus a separate photos table — isolated because photos scale at a different rate and require a tighter IAM boundary so the photo Lambda cannot access guest data.

Photo Wall

A QR code printed at the venue opens a mobile upload page (no login required). The browser compresses images to max 1920 px, requests a 5-minute presigned S3 URL from Lambda, then PUTs directly to S3 — the backend never handles the binary. The photo wall polls every 10 s and renders a pure-CSS masonry grid.

Security

Phone numbers are stored only as SHA-256 hashes — never in plaintext or logs. JWTs are signed with a 256-bit secret from SSM Parameter Store. CORS is locked to the production domain only. Each Lambda has its own IAM role, scoped to the minimum required resources and actions.

IaC & CI/CD

The full stack is defined in AWS CDK (Python) — DynamoDB tables, S3 buckets, Lambda functions with individual roles, API Gateway routes, and CloudFront distributions. On push to main, GitHub Actions runs cdk deploy, syncs the frontend to S3, and invalidates CloudFront.

aaron@portfolio — experience

Experience

Data Engineer @ Verisk Underwriting Solutions

2024 — Present

Ireland · Full remote, Spain

  • Designed and built a custom serverless Data Loader for risk insurance data processing, using C# .NET, Python, and AWS (Glue, Lambda, S3, Batch) in a containerized Docker architecture.
  • Loaded data from multiple sources/formats into DynamoDB, SQL Server and MySQL.
  • Built a secure, automated cross-cloud file transfer system between AWS and Azure using Lambda, Cognito, S3 triggers, SES and EventBridge.
  • Implemented monitoring and logging with CloudWatch, SES and Athena for faster issue resolution.
AWSPythonC# .NETDockerSQLGlueLambdaEventBridge

Software Developer @ XZelenzia

2022 — 2024

Sevilla, Spain · Hybrid

  • Designed and developed an e-commerce site for direct customer sales.
  • Built a custom CRM from scratch, integrated with the website and synced with Amazon inventory and customer data.
  • Created PowerBI reports via SQL-driven scripts aggregating data from multiple sources.
AWSPHPSQLJavaScriptPythonPowerBIREST API

Manager & Software Developer @ Electronikars

2014 — 2022

Sevilla, Spain · On-site

  • Analyzed compressed CAN-BUS data from vehicles and built a communications simulator to test repair services under different driving conditions.
  • Designed and maintained the full e-commerce stack: VPS hosting, APIs, DNS, databases, automations, chatbots and supplier/logistics integrations.
Linux/VPSPHPSQLAutomationAPIs
aaron@portfolio — education

Education

  • Master's degree in Artificial Intelligence and Big Data — I.E.S. Zaidín Vergeles, Granada 2023 — 2024
  • Higher Technician in Computer Systems & Network Administration — I.E.S. Rodrigo Caro, Sevilla 2011 — 2013
aaron@portfolio — contact

catdisplays the contents of a file contact.txt

Email: aaaguayo.dev@gmail.com

GitHub: github.com/aaaguayo

LinkedIn: linkedin.com/in/aaaguayo

echoprints text to the screen "Open to new AI and Data projects"