Rails · Go · React · Docker · Agentic AI
Engineering Focus
I am a full-stack software engineer focused on designing and deploying production-grade web systems using Ruby on Rails, Golang, and React, with additional experience implementing Joomla and WordPress installations where appropriate. My work centers on building API-first architectures with clearly defined domain models, secure authentication boundaries, and infrastructure that can be reliably deployed and maintained in live environments.
I approach application development as a systems problem — aligning backend architecture, frontend state management, database design, AI integration, and deployment strategy into a cohesive, production-ready stack. My engineering practice emphasizes clear separation of concerns, structured service layers, disciplined version control workflows, and infrastructure designed for scalability and long-term maintainability. Where problems benefit from it, I integrate large language model capabilities — specifically Claude Haiku via the Anthropic SDK — to replace deterministic logic with agentic, criteria-driven reasoning that produces richer and more contextually relevant results.
Backend Architecture
My backend systems are built as API-driven services implemented primarily in Ruby on Rails (Rails 7.1 API-only applications) and, where appropriate, in Go for lightweight, high-performance service layers. These applications are structured around clearly defined domain models, explicit service layers, and well-defined API boundaries between client applications and backend services.
In Rails-based systems, authentication is implemented using Devise with JWT tokens to establish secure, stateless authorization boundaries between frontend clients and backend APIs. Domain logic is organized through structured service objects and controller boundaries that maintain a clean separation between business logic, persistence, and transport layers.
In addition to Rails-based systems, I have developed backend services in Go, including the Groovey Event Calendar / todo_axios_api project. This system demonstrates a Go-based API architecture supporting relational database interaction, containerized deployment, and structured service interfaces designed for maintainable backend services.
Across both technology stacks, data is modeled in PostgreSQL using relational schemas designed for clarity, integrity, and scalability. Where location intelligence is required, PostGIS extensions are incorporated to support geospatial queries and structured geographic data handling.
AI & Agentic Systems
I design and implement agentic AI workflows using the official Anthropic Ruby SDK (anthropic 1.36.0) and Claude Haiku 4.5 (claude-haiku-4-5). Rather than using language models purely as text generators or post-processors, I build systems where the model drives multi-step processes autonomously through tool use — deciding what actions to take, executing them against live external APIs, evaluating the results, and iterating until a goal is satisfied.
The primary implementation of this pattern is the AgenticLocationSearch service within the Amigos Unite platform. When an event organizer provides free-form venue criteria — such as "cool vibes", "artsy with indoor seating", or "good for a corporate mixer" — the system delegates the entire venue discovery process to Claude Haiku rather than pre-processing those criteria with hand-written keyword rules. Claude receives the organizer's numbered criteria alongside two tool definitions: search_venues (Google Places Text Search with a Nearby Search fallback) and get_venue_details (Places Details API for address confirmation).
Claude drives the search autonomously: it formulates its own query angles from the criteria intent, calls search_venues multiple times with different search angles to broaden coverage, and optionally calls get_venue_details when address specifics are needed to assess a candidate venue. The loop continues until Claude determines its candidate pool is satisfactory or an 8-turn safety cap is reached. The final output is a curated JSON array where each venue carries a criteria_matched count and a per-criterion reason string — enabling the frontend to rank and describe results in terms the organizer originally expressed.
Safety and reliability are maintained at two independent layers. A pre-filter applied before Claude sees any result strips ineligible venue types (hospitals, banks, government offices, and similar non-social venues) and caches the real Google Places type data keyed by place_id. A post-filter applied after Claude returns its curated output re-checks every venue against this cache, ensuring the model cannot bypass type exclusions by omitting or altering the types field in its JSON. Results are then sorted server-side by criteria_matched descending then by rating descending, capped at twenty venues, and returned to the React frontend as push pins on a Google Maps JavaScript instance.
Frontend Architecture
On the frontend I build strongly typed React applications using TypeScript. Client applications are organized around structured Axios service layers that separate network communication from UI components and state management logic. Where location features are required, the Google Maps JavaScript API is integrated to render interactive maps, place venue push pins, and surface AI-ranked results directly to the user.
Styling is implemented through modular SCSS architecture that emphasizes maintainability and component-level organization. This approach supports consistent design patterns while allowing individual components to remain isolated and reusable across the application.
Infrastructure & Deployment
All application services are containerized using Docker Compose to ensure consistent environments across development, testing, and production. This approach eliminates configuration drift and simplifies reproducible deployments.
Continuous integration and deployment pipelines are implemented using GitHub Actions. Container images are built and published to GitHub Container Registry (GHCR), then deployed to Ubuntu-based VPS infrastructure. This workflow supports reliable versioned deployments, automated builds, and structured release management.
Payment & External Integrations
Where applications require payment processing or transactional services, I integrate Stripe workflows designed around secure server-side handling of sensitive operations. Business logic remains isolated from external service interactions, ensuring that payment processing remains modular, auditable, and maintainable within the overall system architecture.