Inspiration
- PulseRunner was inspired by the need to bridge the gap between raw sensor data and elite-level coaching for everyday runners.
- Traditional marathon training relies on static, linear periodization models—rigid schedules that prescribe mileage weeks in advance without considering the runner's physiological state.
- Research indicates that increasing run distance by just 10%–30% in a single session increases injury risk by 64%.
- With annual injury rates estimated between 37% and 56%, generic plans often fail to detect "invisible" stressors like poor sleep or illness that reduce load tolerance.
What it does
- PulseRunner is an AI coaching application that collects high-frequency streaming biometrics, including heart rate, pace, and GPS data.
- It provides immediate audio feedback during runs for safety and automated, weekly adjustments to training schedules based on recovery trends.
- The system utilizes a dual-layer approach to provide recommendations before, during, and after running activities.
- It detects signs of non-functional overreaching, such as an elevated resting heart rate, to adjust training loads before injury occurs.
How we built it
- We implemented a Lambda Architecture to balance the requirements for low-latency safety alerts and high-accuracy historical analysis.
- Data Ingestion: Amazon Kinesis acts as a high-throughput buffer for incoming data, decoupling ingestion from processing.
- Speed Layer: Apache Flink performs stateful computations over data streams to detect anomalies and trigger pacing alerts in real-time.
- Batch Layer: Apache Airflow orchestrates weekly plan updates, running ML inference on historical trends stored in an S3 Data Lake.
- Polyglot Persistence: We used InfluxDB for high-write sensor data and PostgreSQL for structured user profiles and training plans.
- Edge Processing: A React Native mobile app aggregates 1 Hz sensor data into compressed micro-batches to preserve battery life.
Challenges we ran into
- Traffic Spikes: Running telemetry is "bursty," with massive traffic spikes during peak hours (e.g., Saturday mornings) that could crash traditional databases.
- Connectivity Issues: Data often arrives out of order due to poor cellular connectivity; we used Apache Flink to re-order late-arriving events based on "Event Time."
- Write Amplification: Storing millions of heart rate records in a standard relational database would degrade index performance.
- Energy Management: Streaming every heartbeat individually is inefficient, necessitating a "Store-and-Forward" strategy on the mobile device to reduce network overhead by 98%.
Accomplishments that we're proud of
- Real-Time Safety Interventions: Built a logic flow that evaluates conditions instantly: $$current_heart_rate > (max_hr_threshold \times 0.95) \text{ for } > 30 \text{ seconds}$$ If met, the system publishes immediate "Slow Down" warnings via SNS.
- Adaptive Recovery Logic: Successfully implemented a health check that compares $acute_load$ (last 7 days) against $chronic_load$ (last 28 days): $$\text{IF } acute_load > (chronic_load \times 1.3) \implies \text{Status: "OVERTRAINING_RISK"}$$ This triggers a 10% reduction in the next week's mileage.
- Scalable Infrastructure: Deployed a partitioned Kinesis stream that distributes load by $user_id$ and scales automatically based on throughput.
What we learned
- Storage Optimization: Purpose-built time-series databases like Amazon Timestream can compress sensor data by over 90% and automate downsampling.
- Architectural Trade-offs: A single pipeline cannot efficiently serve both sub-second safety alerts and deep historical analysis, confirming the necessity of bifurcating the data flow.
- Schema Evolution: Using JSONB in PostgreSQL for training schedules allowed us to iterate on coaching logic without requiring costly database migrations.
What's next for AI voice assistance for runners
- IoT Sensor Integration: Integrating with Bluetooth-enabled "Smart Shoe" insoles to track "Ground Contact Time" and "Impact Force" to detect form degradation before pain begins.
- Computer Vision Form Analysis: Allowing users to upload a 10-second video of their stride for analysis of biomechanics like hip drop or overstriding.
- Social "Ghost Runner" Mode: Utilizing the low-latency Speed Layer to provide real-time audio updates about a user's position relative to a friend in a different location.
Log in or sign up for Devpost to join the conversation.