Work

Selected projects — what the problem was, how I approached it, and what made it interesting.

Case studies

Alpaca Trading System

Algorithmic dip and options trading — full-stack, with a custom risk model

RustReactTimescaleDBRedisTelegramLLMAlgorithmic trading

A full-stack algorithmic trading platform built across two strategy types — dip-buying mean-reversion and automated options execution. Not a library wrapper: a complete system with its own risk model, order lifecycle, backtester, and operator dashboard. The stack spans a Rust backend (Axum, Tokio, sqlx), a React 19 frontend, TimescaleDB for time-series position data, Redis for low-latency state, a Black-Scholes backtester, a Telegram chatbot as the primary operator interface, and a locally-hosted LLM advisory layer — each layer built for its role rather than borrowed from a SaaS.

The core challenge wasn't execution — it was building enough trust in the system to put real money behind it, and then progressively extending that trust as each layer proved itself. That meant per-symbol exposure caps, per-strategy quantity limits, a daily-loss circuit breaker requiring explicit operator re-arm, and a typed confirmation gate on every live-mode submission endpoint. The system has run with live capital and has been deliberately designed to reduce the human input required over time as confidence in each component compounds.

Telegram is where the system lives day-to-day: status queries, position summaries, manual overrides, and alert acknowledgment all flow through the bot, keeping the feedback loop tight without needing the dashboard open. The LLM advisory layer sits alongside it — a locally-hosted Qwen2.5-7B model with per-strategy LoRA adapters switched at inference time, producing schema-constrained output that's valid on the first call. It surfaces context and flags conditions worth reviewing.

Private repository. Happy to discuss architecture and approach.

J&G Builders

Freelance — web presence, local SEO, and lead generation for a Summit County, CO contractor

Next.jsReactTypeScriptSEOStructured DataFreelance

J&G Builders came to me with a site that was effectively invisible to local search — no content reaching Google at all, the contact page actively blocked from being indexed, and nothing communicating who they are, where they work, or what they build. A Summit County general contractor competing on "builder near me" searches without any of that foundation is starting well behind.

The engagement was as much about understanding their business as it was about rebuilding the site. We worked through who their customers actually are, which services to lead with, and what homeowners in Summit County are searching for — then built the site around those answers. Dedicated pages for each service line — custom home builds, additions, kitchen and bath remodels, deck construction — give each offering a place to rank on its own. Service area targeting across the Summit County communities they actually work in anchors the site to the geography rather than gesturing at the region in general. Structured data, a proper sitemap, and correct indexing configuration replaced a setup that was actively working against them.

AM/PM Avalanche Forecasting Form

A digital field tool for avalanche professionals

Next.jsReactTypeScriptPWADomain expertise

Digitizes the AM/PM hazard assessment workflow for avalanche professionals, grounded in the frameworks practitioners actually use: the Conceptual Model of Avalanche Hazard (CMAH, Statham et al. 2018), the CAA's Observation Guidelines and Recording Standards (OGRS), and the American Avalanche Association's Snow, Weather and Avalanche Guidelines (SWAG). Getting the domain right required understanding it — this isn't a form builder pointed at a new topic.

Built as a PWA to match how professionals actually work: connected at a desk or in the field when there's signal, and fully offline in the backcountry when there isn't. Session data persists through a refresh but clears on close — a deliberate choice so a forecaster starting the PM assessment doesn't open yesterday's AM. The components (DangerRose, HazardChart, WeakLayerField, GrainLegend) represent real avalanche science concepts, not generic UI wearing domain vocabulary.

The certifications — AAI Avalanche Rescue, AAI Recreational Level 2, Silverton Pro 1, and several Colorado Snow and Avalanche Workshops — are where the idea came from. Spending time in the field with avalanche practitioners makes the needs obvious: documentation that works on the move, framework references that don't require cell signal, and an assessment flow that matches how practitioners actually think rather than how a developer imagined it might. Having a science background and serious field time meant those gaps were easy to see — and meant I was the right person to close them.

Other projects

permitscout

Python·Next.js·FastAPI·Docker·Outdoor recreation

Watches recreation.gov and books non-commercial river permits the moment a cancellation drops. Uses chrome131 TLS fingerprint impersonation to pass bot detection without a headless browser. Ethical constraints — rate caps, non-commercial-only queries — are enforced in the code, not just the README. Your runtime operator is Eddy.