RYAN ZERNACH

Full-Stack AI Systems Engineer

Ryan_Zernach_2025_Senior_AI_Systems_Engineer_Remote_United_States

🌱 Landscape Supply: Agentic Communications and Delivery Scheduling

Landscape Supply was a communications-and-logistics problem before it was a storefront. I built a TypeScript React Native app and TypeScript Express backend around that reality, then added Twilio-backed voice and messaging, queue-driven follow-up, and delivery-scheduling automation. The hard part was keeping customer intent, app state, calls, messages, payments, and the final handoff in step.

Related Links
Visit Landscape Supply Website
Download on Apple App Store
Download on Google Play Store
Landscape Supply home screen showing delivery scheduling shortcuts and product categories for grass and rock.
Press to open landscapesupply.app and browse the live delivery catalog.

🖥️ Admin Surface For Communication Operations

The admin surface made communication operational instead of incidental. Email templates, campaigns, push notifications, unsubscribe handling, supplier research, and phone-call tooling lived in one place—part of the product, not a scattering of utilities.

Landscape Supply admin actions screen showing Email Templates, Marketing Campaigns, Referrers, Push Notifications, Unsubscribes and Removals, Supplier Research, and Phone Calls.
Landscape Supply admin actions screen for lifecycle communication and coordination workflows.

Landscape Supply presentation

🧱 What I Built

I connected the customer app, backend workflow layer, and communication system into one operating product. That meant Node and TypeScript services, the React Native client, async jobs, Twilio, email flows, payments, and the admin surfaces that kept it usable day to day.

⚙️ Technical Spine

TypeScript React Native (iOS, Android, web), TypeScript Express services, queue workers, Twilio voice webhooks, Twilio media-stream endpoints, dedicated SMS and VOIP queues, IMAP and POP email handling, Stripe, and custom campaign scheduling logic.

🤝 Ownership Model

I owned product decisions, frontend flows, backend orchestration, communication tooling, and operational debugging. Working across those seams kept the system coherent.

🧭 How The System Came Together

The details below trace the communication layer, backend structure, and operational tradeoffs that made delivery coordination work.

Twilio and Channel Design

Messaging and Lifecycle Workflows

Backend Structure

Debugging Across Boundaries

🚧 Why This Was A Hard Communications Problem

Landscape Supply sits between commerce and field operations. Buying material is easy; coordinating the right quantity, location, delivery window, and site constraints is the real work. Those details are often settled through calls, messages, and follow-up, so the communication layer has to be as reliable as checkout.

🎯 What I Owned

I owned the build end to end: product direction, UX, frontend architecture, backend orchestration, communication systems, queue-driven workflows, automation, and lifecycle follow-up. That scope let me remove friction across the lifecycle rather than polish one narrow layer.

📈 What Success Looked Like

Success was not only more checkouts. It was fewer preventable mistakes afterward: cleaner scheduling handoffs, faster clarification, better delivery readiness, fewer details dropped between channels, and less thrash between buyer intent and field execution.

🧠 What Kept It Interesting

I liked this project because the communication layer could not be decorative. Sloppy calls, messages, or follow-up became operational mistakes immediately. That made webhooks, queue boundaries, environment setup, and real-world handoffs worth getting right.

🔍 Deep Dive: Delivery Communications, Backend, and Operations

Here is how the customer flow, Twilio-backed communication layer, backend structure, and delivery operations fit together.

The Customer Experience Was Driven By Communication Quality

Clear scheduling details mattered more than a flashy checkout flow

Twilio In The Loop

Voice and messaging were part of the logistics flow

Backend Structure

Node and TypeScript with async boundaries where they helped

Why TypeScript Helped

Enough structure to keep the moving pieces visible

Debugging Across Boundaries

Real bugs moved between systems

📡 Communication Layer In Practice

This was the project’s core. Communication was not notification plumbing; it made scheduling, clarification, and follow-through work.

Voice, SMS, and Agentic Follow-Up

The communication layer was part of the core product, not an add-on

Configuration and Environment Setup

Provider wiring mattered because the flows were live

Queues and Failure Isolation

Async boundaries made the system calmer

Campaign Scheduling and Lifecycle Logic

Automation was useful when it stayed grounded in the workflow

Why I Still Like This Project

I still like this project because it ties communication systems to real-world logistics. It forced the app, backend, and follow-up layer to work together rather than pretend they were separate problems.

How I Tend To Build

I want product context, backend contracts, provider setup, and the debugging path in the same mental model. Projects like this are why I lean toward TypeScript for full-stack work: it keeps the moving parts visible while letting me move quickly.