Alpaca - Hotel Data Microservice

A comprehensive Go microservice that fetches, consolidates, and analyzes hotel data from multiple sources. Features multi-source data aggregation, review crawling, and LLM-powered recommendation analysis. Architecture Alpaca is a single microservice that: Fetches hotel data from multiple sources (Amadeus, Expedia, Tripadvisor, Google, Booking.com) Consolidates hotel data into a unified schema Crawls reviews from multiple sources (Tripadvisor, Google, Expedia, Booking, hotel websites, etc.) Uses LLM (GPT-4, Claude, Grok) to analyze reviews for Quality and Quiet Generates intelligent recommendations based on review analysis Stores data in SQLite (default) with raw SQL Uses a generalized provider interface for easy API integration Processes data in concurrent batches with rate limiting Project Structure alpaca/ ├── alpaca/ │ ├── main.go # Main entry point - hotel data worker │ ├── generate_cities.go # City data generation utility (reference) │ ├── generated_top_cities.go # Generated top cities data (reference) │ ├── REVIEW_PROCESSING.md # Review processing documentation │ ├── models/ │ │ ├── hotel.go # Original Amadeus hotel models │ │ └── hotel_extended.go # Extended hotel models with recommendations │ ├── services/ │ │ ├── hotel_service.go # Hotel business logic (Amadeus) │ │ ├── hotel_service_extended.go # Extended hotel service (multi-source) │ │ ├── review_crawler.go # Review crawling from multiple sources │ │ ├── llm_service.go # LLM integration (GPT-4, Claude, Grok) │ │ └── recommendation_service.go # Recommendation orchestration │ ├── database/ │ │ └── database.go # SQLite database connection and schema │ └── utils/ │ └── constants.go # Constants and test data ├── go.mod # Go module definition ├── Dockerfile # Docker build configuration └── README.md # This file Features ✅ Simplified Architecture Single Microservice: One focused service for hotel data collection Raw SQL: No ORM overhead, direct SQL control SQLite First: Simple, file-based database (easy to migrate to Postgres/Redshift later) Generalized API Interface: Easy to add new hotel data providers ✅ Multi-Source Hotel Data Collection Amadeus API: Hotel list, search, and ratings data Expedia: Hotel listings and reviews (interface ready) Tripadvisor: Hotel data and reviews (interface ready) Google Places: Hotel data and reviews (interface ready) Booking.com: Hotel data and reviews (interface ready) Consolidated Schema: Unified hotel table with ratings from all sources ...

February 21, 2026 · Eric Arellano

Building a Modern Application on AWS EKS with Pulumi: A Practical Journey

Building a Modern Application on AWS EKS with Pulumi: A Practical Journey The application leverages PostgreSQL for data persistence, Kafka for event streaming, and a mix of Go, Python, and JavaScript components, all deployed on AWS Elastic Kubernetes Service (EKS) using Pulumi in Go. The cluster runs in private subnets with VPC endpoints for a fully isolated setup. The Go Code: Precision in Pulumi The backbone of our infrastructure is a meticulously structured Go program using the Pulumi AWS and EKS SDKs (github.com/pulumi/pulumi-aws/sdk/v6/go/aws and github.com/pulumi/pulumi-eks/sdk/v1/go/eks). We defined a VPC with private subnets using aws.ec2.Vpc and aws.ec2.Subnet, ensuring each subnet has a dedicated route table created via aws.ec2.RouteTable and associated with aws.ec2.RouteTableAssociation. This setup isolates traffic, with privateSubnets passed as a pulumi.StringArrayOutput to the EKS cluster for node placement. ...

January 10, 2026 · Eric Arellano

My DevOps Days La Paz presentation with Terraform Cloud, GKE, Skaffold

DevOps de Noche Today we will deploy Google Kubernetes Engine, Terraform Cloud worspaces and variable sets, Cloud Build triggers, Cloud Deploy Delivery Pipeline providing Continuous Delivery for Grafana and the sample (Google) microservices app via Skaffold. Un repositorio y presentación para DevOps Days La Paz 2022 https://github.com/edamsoft-sre/DevOpsDeNoche How to use the Terraform resources google_compute_network google_compute_subnetwork tfe_workspace tfe_variable-set cloud_build_trigger google_clouddeploy_delivery_pipeline google_container_cluster ...

October 15, 2022 · Eric Arellano

Deploying FastAPI Docker container to AWS Lambda

Part 1: Deploying FastAPI app to AWS Lambda with Docker image This will show how to build a Docker container that can be run by AWS Lambda from the Elastic Container Registry. The steps to follow on AWS are currently manual - via the AWS Console and the ECR provided Docker commands to upload images. In future release, we will automate this release cycle using CodeDeploy, or possibly another AWS service if that turns out to be a better fit (CodePipeline? CloudFormation?) ...

October 1, 2022 · Eric Arellano

Analyzing Logs with Python

The logfile, old frenemy From time to time, shit happens. In this trying time, you will have no choice but to review some logs. Times have changed and whereas our tools of choice used to be egrep, Notepad++ or a good old Nagios handler. Now most likely you will be reading logs in a fancy colorful GUI running Grafana, Kibana, Datadog or whathaveyou replacement tool your employer has had the brilliant idea to use instead of industry best practices ...

September 18, 2022 · Eric Arellano

The Devops Rough cli / Bash Guide

Useful Bash commands for DevOps work So Bash is no longer the hottest ticket on the market. Happens. I may have seen the actual point where this peaked and let me tell you, that’s something. Still, there’s some cool stuff to be done with Bash. For example, if you are writing a quick and dirty Terraform configuration, you can get really far with TF templates, HCL interpolation and well placed Bash commands: ...

July 24, 2021 · Eric Arellano

Descargas asíncronas con Aiohttp | Async file download

Download Github Emojis locally En Emojis de Github para Pelican con Markdown armamos los hermosos íconos que se pueden ver por este blog. Bueno, en realidad bajamos el archivo json de Github con el diccionarios #!python { _short_name_ : _http_url } y utilizamos los enlaces para armar tags img. Poco a poco hemos mejorado algunas cosas, como regualr el tamaño de los íconos 64x64 con CSS. Para descargar los 1793 emojis de GitHub la operación toma mucho tiempo para tan solo 9.1M: como 15 minutos ...

December 1, 2020 · Eric Arellano

Software Libre Soberano?

Primero, qué es software libre? Algunos diremos: el sistema operativo GNU/Linux. Ok, pero, y eso se come? Resulta que sí. Detrás del éxito de las mega-empresas de tecnología que han revolucionado las comunicaciones, relaciones sociales y negocios Linux está presente casi exclusivamente. Todo desde nuestro teléfono inteligente Android/iPhone, televisor inteligente, sistema de mensajes instantáneos, servicio de correo digital, videoconferencia, streaming de películas, en el fondo tienen su base en cientos o miles de servidores Linux, corriendo también mucho software libre escrito en lenguajes abiertos: Java (*), Python, Ruby, Bash y con APIs también generalmente abiertos. ...

November 10, 2020 · Eric Arellano

Emojis de Github con Python Markdown

Pelican blog with Python Markdown Pelican es un generador de microblogs estáticos en HTML/Python. Permite utilizar Markdown, RTF, y algunos otros formatos de texto para su contenido. La versión 4.8.0 es muy robusta e incluye scripts para subir el código a cualquier proveedor de nube y desplegar cambios, así como un servidor de desarrollo y un catálogo amplio de extensiones y temas. Armé el blog inicialmente según [pelican-hosting-on-appengine.html](http://www.craigjperry. com/pelican-hosting-on-appengine.html), pero me demoré un poco, y ahora en lugar de Google AppEngine lo despliego mediante Netlify. Reto: Github Emojis en Pelican No se pueden utilizar emojis directamente en Pelican (es decir, con Python Markdown), pero existen varios plugins para lo mismo, y varios repositorios de los códigos Unicode en la web. Python también maneja Unicode directamente ¡¡lo cual es genial!! ...

July 10, 2020 · Eric Arellano

Deploy Pelican on Netlify

Authors: Eric Arellano Netlify $ The fastest way to build the fastest sites. Netlify es la plataforma PaaS/CICD/DNS con integración a Git(hub|lab) utilizada para desplegar este sitio web. En resumen: Connect your repository Add your build settings Deploy your website Para ejecutar un app completo en Python o un static site puedes utilizar un número de librerías. Incluso Pelican tiene facilidades para usar Invoke o Make y gestionar diferentes contextos. Pero para este humilde blog en Pelican, el comando por defecto de Pelican y el build command sencillo de Netlify es perfecto. ...

June 30, 2020 · Eric Arellano