SportsMom

Inspiration

Professional athletes, even in individual sports like tennis, swimming, and badminton, train inside a full support team built around them: an athletic trainer who catches an injury before it becomes serious, a coach who studies match footage for the latest tactics, a travel manager who already booked the flight, and an agent chasing the sponsorship deal. Elite juniors and athletes just transitioning onto the lowest rungs of the pro circuit have almost none of that. They are the coach, the physio, the travel manager, and the agent, on top of actually training and competing. They scribble notes after practice, forget whether a sore knee from two weeks ago ever got addressed, miss entry deadlines for tournaments at the right level, and Google flights at midnight before a trip that should have been booked a month ago.

The financial picture makes it worse. Competing internationally is staggering in cost once coaching, equipment, and travel are added up, and even top-100 athletes often struggle to land any sponsorship to offset it. We kept coming back to the same question: what if a solo athlete could talk to their missing support team the same way they'd talk to a real one, in a quick voice note after practice, a photo of a handwritten page, or just typing it out, and have it actually handle the load instead of adding another app to check?

What it does

SportsMom is a network of seven specialist agents that acts as the support team a self-managed athlete doesn't have. The athlete dumps a voice note, a photo of a notebook page, or typed text, and the system takes it from there. A raw note becomes a filed journal entry, an overtraining flag, a performance trend, an opponent scouting report, a sponsorship draft, or a fully researched tournament trip, depending on what's actually in it.

The Librarian classifies every dump into nine sections (training, performance, match results, recovery, coaching, logistics, sponsorship, goals, media notes) and files it. The Orchestrator sits in front as the single entry point, reading intent on every message and routing a log to the Librarian, a question to a retrieval-grounded chat endpoint, or a direct action to the right specialist. Recovery watches for overtraining patterns across recent logs and metrics. Performance tracks trend direction and flags strongest and weakest areas. Scout researches an upcoming opponent across the open web and returns a tactical read. Sponsorship matches the athlete's profile to a brand and drafts, never sends, a cold outreach email. Logistics is the deepest one: given a travel or tournament note, it fans out in parallel to a real external Flights agent, a real external Hotels agent, and a live scrape of the ITF tournament calendar, lets the athlete pick a result, and walks all the way to a real entry review screen behind an optional Stripe payment gate, without ever submitting the entry itself.

The entire workflow runs through a single ASI:One chat session with no custom frontend required, and a full React dashboard sits on top of the same data for the days an athlete would rather look than talk.

Here's what agent collaboration actually looks like


Example 1 — Injury-risk detection triggers a cross-agent conversation

User logs: "Knee was sore again after today's session. Tournament is in two weeks and I'm not pulling out."

injury agent      →  detects physical risk flag
  → fitness agent:    "propose a reduced load plan for 2 weeks"
  → coach agent:      "user is competing regardless — propose altered match
                       strategy that reduces lateral stress"
fitness agent     →  returns conservative training schedule
coach agent       →  returns serve-heavy, movement-minimizing game plan
orchestrator      →  synthesizes both, presents to user as one reply

The agents don't wait to be asked. The injury agent noticed the flag and pulled in the two agents whose domains were affected — you get a coordinated response, not three separate answers.


Example 2 — Pattern agent connects dots across weeks, logistics closes the loop

Four weeks ago: "why am I even playing tennis? I feel so burnt out" Two weeks ago: "all my serves were perfect last session, everything clicked"

pattern agent     →  reads across journal history, detects burnout → breakthrough arc
  → tournament agent: "athlete momentum is peaking — surface tournament options
                       to capitalize before confidence dips again"
tournament agent  →  searches upcoming events, filters by location + surface + timing
                  →  returns 2 viable tournaments within 3 weeks
  → logistics agent:  "tournament selected — find flights and hotels near venue"
logistics agent   →  searches flights and accommodation, returns best options
pattern agent     →  packages insight + tournament + travel options together
orchestrator      →  presents to user: "here's the pattern we noticed,
                      here's the tournament, here's how to get there"

You go from a pattern spotted in your journal to a booked trip — all from one conversation.

Built with

Technology Where it's load-bearing
Fetch.ai All seven agents run as uAgents, registered as mailbox agents on Agentverse and reachable through the Almanac; every one speaks the standard Agent Chat Protocol; Logistics demonstrates real agent-to-agent orchestration with external Flights and Hotels agents; the Stripe Checkout step implements the Payment Protocol
Anthropic (Claude) Haiku 4.5 for classification, Sonnet 4.6 for reasoning in Recovery, Performance, Scout, Sponsorship, and Logistics, and Claude vision for notebook-photo OCR
Deepgram nova-3 model for voice note transcription, as both a pre-recorded REST upload and a live streaming mic feed
Browserbase + Stagehand Real browser automation for Logistics (ITF tournament search, IPIN login and entry walkthrough) and Scout (opponent research), with no hardcoded selectors
Redis (RedisVL + LangCache) KNN vector search behind the chat endpoint's retrieval step, with a semantic cache in front for instant repeat answers
Stripe A real test-mode Checkout Session gating the Logistics entry-review flow
Supabase Postgres database backing entries, matches, recovery logs, metrics, agent outputs, sponsorship opportunities, and calendar events
Sentry Optional error monitoring and performance tracing on the FastAPI backend

Challenges we ran into

Getting Logistics to actually collaborate with two other teams' agents in real time was the hardest integration in the project, since none of us controlled the other side of that conversation and the natural-language handoff had to work without a shared schema beyond the chat protocol itself. Tuning Stagehand against the ITF calendar and the IPIN login flow was its own fight: neither site was something we could inspect ahead of time, so the automation had to be written defensively, against pages we were essentially seeing for the first time at runtime.

The hardest design problem, though, wasn't technical. Logistics walks a real flow all the way to a tournament entry review screen, and the easy implementation would have been to let a chat reply submit it. That path doesn't exist in our code on purpose. Deciding exactly where automation stops, and making sure that boundary held even when it would have been a one-line shortcut to a flashier demo, took more conversation than any single integration did. The same discipline applies to Sponsorship, where an email can be drafted and scored but never sent without a human clicking approve.

We also had to build the same product twice in a sense: a workflow that runs entirely through ASI:One with zero custom frontend, because that's what the challenge actually rewards, and a full dashboard on top, because a chat transcript alone undersells what the system does. Keeping both reading from the same underlying data without one drifting out of sync took real care in how the backend shaped its endpoints.

Accomplishments that we're proud of

We're proud that one classification pass through the Librarian feeds five different specialist agents instead of five separate parsing pipelines, so adding a new specialist later means consuming an existing shape rather than reinventing how input gets understood. We're proud that the Flights and Hotels legs of a SportsMom trip are genuine agent-to-agent collaboration with real, independently operated agents on the open Agentverse marketplace, not a simulated handoff. We're proud that safety wasn't an afterthought: the decision to stop short of submitting a real tournament entry, and to never let a sponsorship email send itself, was built into the code from the start. And we're proud that the entire core workflow is reachable from a single ASI:One conversation with no frontend required, while still shipping a polished dashboard for anyone who'd rather see their data than type to it.

What we learned

Building agents that talk to other teams' agents over natural language is a different kind of engineering than calling an API you control. There's no shared schema to fall back on beyond the protocol itself, so the conversation design has to anticipate ambiguity instead of assuming clean input. We also learned how much weight a single, well-defined data shape can carry: once the Librarian's nine-section classification existed, every specialist that came after it got simpler to build, not harder, because none of them had to solve "what is this note about" on their own. And working on Logistics in particular taught us to treat the stopping point of an autonomous system as a first-class design decision, not a guardrail bolted on after the feature works, especially once real money and a real federation account, sometimes belonging to a minor, were in the loop.

What's next for SportsMom

The Stagehand instructions driving ITF search and opponent scouting have never been tuned against real session replays, and watching those back is the fastest path to making that automation reliable at scale. Stripe test mode proves the payment protocol works; the next step is FET and Skyfire integration on the Flights and Hotels legs themselves, to close the loop on an actual end-to-end booking while keeping the same human-approval boundary in place. The capture, classify, and specialize pattern underneath SportsMom doesn't actually depend on tennis, so extending it to any individual-sport athlete whose support team doesn't exist yet is a natural next step. And the fastest way to find out which part of that missing support team matters most is to put SportsMom in front of real athletes and coaches and watch what they reach for first.

Built With

Share this project:

Updates