I am a full-stack software engineer focused on designing and deploying reliable web applications using Go, Ruby on Rails, and React with TypeScript. My work centers on building API-first systems with well-defined domain models, secure authentication boundaries, and infrastructure that can be deployed and maintained consistently across development and production environments. In addition to custom application development, I have implemented and maintained Joomla and WordPress installations where a CMS is the appropriate solution for rapidly delivering complex organizational websites.
I approach software engineering as a systems discipline. Rather than treating backend development, frontend implementation, database design, and deployment as isolated concerns, I design applications as cohesive platforms in which each layer supports the others. Where problems benefit from it, I extend that platform with agentic AI workflows — integrating Claude Haiku via the Anthropic SDK so that a language model can drive multi-step reasoning against live external APIs rather than relying on hand-written heuristics. This approach emphasizes clear separation of responsibilities, structured service layers, disciplined version control workflows, and infrastructure designed for scalability, operational clarity, and long-term maintainability.
Backend Architecture
My backend architecture centers on API development in Go or Rails, depending on project requirements. In Go, I build stateless API services using web frameworks such as Gin to manage routing, middleware, and request/response lifecycles. For authentication and authorization, I implement JWT-based flows using packages such as golang-jwt/jwt, along with golang.org/x/crypto/bcrypt for secure password hashing and credential verification. For persistence, I work with PostgreSQL using tools such as GORM or other structured data-access layers to manage user records, relational integrity, and application data in a maintainable way.
In Rails-based systems, I commonly use Rails 7.1 API-only services with Devise-based authentication and JWT-backed authorization patterns to support secure communication between 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. Where needed, I also incorporate PostGIS for geospatial and location-aware functionality.
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 as simple 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 without human intervention.
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 is equipped with two tool definitions: search_venues (Google Places Text Search with a Nearby Search fallback) and get_venue_details (Places Details API). It drives the loop autonomously — formulating search queries, calling tools, evaluating results, and optionally drilling into specific venues — for up to 8 turns before returning a curated, ranked result set.
Each venue in the final output carries a criteria_matched count and a per-criterion reason string. Two independent safety layers protect against model error: a pre-filter that strips ineligible venue types and caches real Google Places data before Claude sees any result, and a post-filter that re-validates Claude's output against that cache to prevent the model from bypassing exclusions through JSON manipulation. Results are sorted server-side and delivered to the React frontend as push pins on a Google Maps JavaScript instance.
Frontend Architecture
On the frontend, I build strongly typed React applications with TypeScript, structured Axios service layers, and modular SCSS architectures that preserve clear boundaries between presentation, data access, and application state. Where location features are required, the Google Maps JavaScript API is integrated to render interactive maps and surface AI-ranked results as venue push pins directly to the user.
Infrastructure & Deployment
Across projects, I containerize services with Docker Compose to maintain environment parity between local development and production. I implement CI/CD pipelines with GitHub Actions, publish container images to GitHub Container Registry, and deploy to Ubuntu-based VPS infrastructure behind Nginx reverse proxies. This allows me to manage the full application lifecycle — from architecture and implementation through testing, packaging, deployment, and operational maintenance.
Payment & External Integrations
I have extensive experience integrating Stripe payment workflows across multiple platforms and integration styles. In custom application contexts, Stripe is implemented server-side to keep sensitive payment operations isolated from core business logic — ensuring that transactional workflows remain modular, auditable, and maintainable as systems evolve.
Beyond direct API integration, I have implemented and configured Stripe at the platform level through GiveWP — a full-featured donation management plugin for WordPress — and through Joomla payment components. These implementations cover donation forms, recurring payment schedules, webhook handling, and financial reporting, and have been deployed in production for organizational clients requiring reliable, compliant payment processing without a fully custom backend.