DevCoach

Inspiration

The hackathon's Loop Engineering Challenge asked for agents that plan, act, observe, and self-correct across a complete build cycle.

We wanted to apply that concept literally-not as a metaphor-to a real-world feedback loop: sports coaching.

Golfers typically receive coaching in isolated fragments: a tip here, a drill there. What they don't get is a coach that remembers what happened last time, measures whether the advice was followed, and adapts future coaching accordingly.

DevCoach is an AI golf coach built around that continuous learning loop.


What It Does

A player starts a round and can tap a microphone button after any shot to quickly log hands-free voice notes such as:

"Sliced my drive on hole 7 again."

During the round:

  • 🎤 Voice capture only
  • ⚡ No AI inference
  • ⛳ No interruptions to gameplay

When the player ends the round, the agent begins its full reasoning loop.

The AI Agent

The agent:

  1. Diagnoses what happened during the round.
  2. Grounds its reasoning using a coaching knowledge base.
  3. Decides autonomously whether additional live web search is required.
  4. Generates an updated personalized coaching plan.

The Key Differentiator

The next time the player finishes a round, DevCoach doesn't start from scratch.

Instead, it:

  • Reads the previous coaching plan
  • Checks whether assigned drills were actually followed
  • Measures improvement over time
  • Updates coaching based on real outcomes

Inside the app, this appears as a round-by-round coaching timeline with visual green/red indicators showing whether previous recommendations were completed.

Additional capabilities include:

  • 📍 Finding nearby golf courses using live geolocation
  • 🎥 Converting coaching focus areas into relevant YouTube lesson searches

How We Built It

Backend

Built using:

  • FastAPI
  • PostgreSQL
  • pgvector

The orchestration follows a classic agent loop:

Plan → Act → Observe → Correct

The entire system is built around a GameProfile interface.

This means:

  • The orchestration layer contains zero sport-specific logic
  • Golf is currently implemented
  • The architecture is already designed to support additional sports

We also built a Provider Port abstraction around every LLM call, allowing us to swap AI providers with a single-line configuration change.


Sponsor Integrations

All sponsor tools are genuine production integrations and are load-bearing, not demos.

Akash

  • Executes every reasoning step of the coaching loop
  • Used through their inference API

Zero.xyz

Used whenever the agent determines that additional external knowledge is required. We integrated the real SDK through a lightweight Node.js sidecar because the SDK is currently TypeScript-only.


Nexla

Originally evaluated through their data platform.

Instead, we discovered and integrated their MCP gateway, which now powers:

  • Live golf course discovery
  • Real location-based recommendations

Frontend

Built with:

  • Vanilla JavaScript
  • HTML
  • CSS

Communication uses plain fetch() calls.

There is no mock data anywhere in the application.

Speech-to-text is intentionally handled entirely on the client using the Web Speech API, minimizing backend latency and improving responsiveness.


Challenges We Ran Into

Sponsor Tool Pivot

Two of the three sponsor integrations turned out to be different from what we originally expected.

Nexla

Initially appeared to be the right solution for lightweight data normalization.

After deeper exploration, we realized the core platform is a much larger enterprise data integration product.

Instead, we discovered their MCP gateway, which became the foundation of our live golf course discovery feature.


Zero.xyz

Originally planned as an identity and long-term memory layer.

After understanding the platform better, we shifted its responsibility toward autonomous web search, where it fit our architecture much more naturally.


Web Speech API Bug

We encountered a subtle issue where the recognition results array is cumulative.

Our original implementation repeatedly appended already-finalized transcripts, producing duplicated and garbled speech recognition output.

Fixing this required correctly handling incremental recognition events.


Demo Networking

Making the backend reachable from a real mobile phone during the demo introduced several practical deployment challenges, including:

  • Firewall configuration
  • Local network accessibility
  • Venue Wi-Fi client isolation

Accomplishments That We're Proud Of

  • All three sponsor integrations are genuine production integrations.
  • Akash and Zero.xyz sit directly in the critical execution path of every coaching analysis.
  • The coaching loop genuinely closes across sessions.
  • During testing, the second round successfully detected that drills assigned after the first round had actually been completed.
  • There is zero mock data in the product.
  • Every diagnosis, coaching plan, drill recommendation, and screenshot comes from real model execution and real user input.

What We Learned

One of our biggest takeaways was to integrate with sponsor APIs as early as possible.

Two of the three tools behaved differently from what their initial descriptions suggested. Discovering this on the first day allowed us to redesign our architecture before it became expensive to change.

We also learned that modern LLM tool calling turns autonomous decision-making into something tangible and observable.

When the agent decides it needs additional information, that decision is made dynamically, executed through real tools, and is fully visible rather than being hardcoded.


What's Next for DevCoach

Our roadmap includes:

  • 🏌️ Add additional GameProfiles such as:

    • Chess
    • Tennis
    • Other coaching-heavy sports
  • ☁️ Deploy publicly beyond local demo hosting

  • 🔄 Revisit the memory pipeline as lighter-weight identity and persistence solutions mature

  • 🔊 Add voice responses so the AI coach can speak directly to players

  • 📅 Integrate tee-time booking and golf lesson scheduling as additional partner and sponsor integrations become available

Built With

Share this project:

Updates