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

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

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

DevOps Glossary in Spanish

Los Conceptos IaC Infrastructure as Code IaC se refiere a la definición en código de toda la infraestructura de sistemas, desde redes, load balancers, firewalls, servidores, cluster de Kubernetes, bases de datos, servicios, etc. Generalmente cuando decimos IaC hoy en dia nos referimos a Terraform pero igual puede ser Ansible, Cloud Formation, Azure Resource Manager / Bicep, etc. Configuration Management El manejo estructurado y deliberado de la configuración de un sistema (GNU Linux o Microsoft). Esto se realiza mediante algo como Ansible, Terraform y Git, Subversion. Es decir, la configuración se almacena en un repositorio dedicado a ese propósito y actualizado regularmente. ...

June 15, 2020 · Eric Arellano