Cloud Infra (In Progress)June 2026

Strava AI Coach Discord Bot

Role

Serverless systems developer (Personal project)

Tech stack
AWS LambdaSQSDynamoDBEventBridgeAPI GatewayStrava APIDiscord APIDeepseek API
Strava AI Coach Discord Bot Screenshot 1Strava AI Coach Discord Bot Screenshot 2Strava AI Coach Discord Bot Screenshot 3Strava AI Coach Discord Bot Screenshot 4Strava AI Coach Discord Bot Screenshot 5
Overview

A serverless, AI-driven fitness coach integrated directly into Discord. The bot ingests real-time activity and club webhook events from the Strava API, allowing athletes to trigger performance diagnostics via Discord Slash Commands. Utilizing Deepseek API, the bot generates personalized coaching advice, kudos, and performance cards.

Key Contributions & Findings
  • 01Architected an event-driven serverless pipeline using AWS API Gateway and SQS to ingest Strava activity webhooks and Discord Slash Commands.
  • 02Built 3 Lambda functions: an API handler behind API Gateway for sync routing and request validation, an SQS-triggered worker for async processing of heavy commands with DLQ retry, and an EventBridge Scheduler-triggered function for automated weekly athlete digests.
  • 03Designed a single-table DynamoDB schema with 6 entity types sharing PK/SK under USER#{id} to manage user credentials, session states, and activity logs with minimal latency.
  • 04Connected Deepseek API to process athletes' activity data, for insight extraction and personalized coaching response generation.
Infrastructure

System Architecture

System Architecture

A fully serverless AWS architecture with two distinct ingestion paths — Strava webhooks and Discord Slash Commands — both entering through a single API Gateway. Discord requires a response within 3 seconds or it surfaces an error to the user, while Strava requires a 2-second acknowledgment to consider a webhook delivery successful. SQS sits between the gateway and the Lambda workers as an async buffer, letting the API handler immediately return a 200 to both platforms while heavy processing happens in the background — preventing user-facing errors and keeping UX smooth. A separate EventBridge Scheduler lane sits outside the request path, driving the weekly digest independently of any user-triggered event.