SPORTx is a serverless, AI-powered web application that helps student-athletes turn their Name, Image, and Likeness (NIL) into real opportunities. It guides an athlete through three stages — Discover brands and organizations that fit, Draft compliant outreach in their own voice, and Rehearse the pitch in a live voice interview — with an admin dashboard for program oversight. It is built on AWS serverless services with Amazon Bedrock providing the AI layer.
Customers are responsible for making their own independent assessment of the information in this document. This document:
(a) is for informational purposes only,
(b) references AWS product offerings and practices, which are subject to change without notice,
(c) does not create any commitments or assurances from AWS and its affiliates, suppliers or licensors. AWS products or services are provided "as is" without warranties, representations, or conditions of any kind, whether express or implied. The responsibilities and liabilities of AWS to its customers are controlled by AWS agreements, and this document is not part of, nor does it modify, any agreement between AWS and its customers, and
(d) is not to be considered a recommendation or viewpoint of AWS.
Additionally, you are solely responsible for testing, security and optimizing all code and assets on GitHub repo, and all such code and assets should be considered:
(a) as-is and without warranties or representations of any kind,
(b) not suitable for production environments, or on production or other critical data, and
(c) to include shortcuts in order to support rapid prototyping such as, but not limited to, relaxed authentication and authorization and a lack of strict adherence to security best practices.
All work produced is open source. More information can be found in the GitHub repo.
| Index | Description |
|---|---|
| High Level Architecture | High level overview illustrating component interactions |
| Deployment Guide | How to deploy the project |
| User Guide | End-user instructions and walkthrough |
| API Documentation | Documentation on the APIs the project uses |
| Cost Estimate | Monthly cost breakdown and scaling analysis |
| Directories | General project directory structure |
| Modification Guide | Guide for developers extending the project |
| Troubleshooting | Common issues and solutions |
| Removing Commit History | Steps to clean commit history when using as a template |
| Credits | Contributors and acknowledgments |
| License | License information |
SPORTx is a serverless application. A Next.js frontend (hosted on AWS Amplify) talks to an API Gateway + AWS Lambda backend for all standard requests, authenticated with Amazon Cognito. Application data lives in a single Amazon DynamoDB table, with Amazon S3 for documents and session artifacts. The AI layer is Amazon Bedrock — Claude Haiku for outreach drafting and discovery orchestration, Amazon Nova Sonic for the real-time voice interview, and a managed Bedrock Knowledge Base with a Guardrail for NIL compliance.
The two real-time features — Discovery search and the Rehearsal voice Q&A — run as containerized agents on Amazon Bedrock AgentCore, which the browser connects to over SigV4-signed WebSockets. External providers Perplexity (company search) and Prospeo (contact search/enrichment) supply discovery data, and an optional Anam avatar adds a talking-head interviewer.
For a detailed explanation of the architecture and the key architectural decisions, see the Architecture Deep Dive.
For complete deployment instructions, see the Deployment Guide.
Quick Start (from AWS CloudShell — nothing to install locally):
- Fork/clone this repository into a GitHub organization you control, and install the AWS Amplify GitHub App on your fork.
- Clone your fork in CloudShell and run
./deploy.sh. - Follow the prompts (GitHub token, admin email, optional API keys), then note the stack outputs (API URL, Cognito IDs, Amplify URL).
The deploy runs through AWS CodeBuild, so you don't need Node.js, CDK, or Docker locally — just the AWS CLI. See the guide for prerequisites, Google OAuth setup, post-deploy steps, and teardown.
For detailed usage instructions with screenshots, see the User Guide.
For the complete REST API reference (endpoints, request/response shapes, auth, and rate limiting), see the API Documentation.
For a detailed monthly cost breakdown, scaling analysis, and cost-optimization options, see the Cost Estimate.
├── backend/
│ ├── bin/
│ │ └── backend.ts # CDK app entry point (3 stacks + dependency chain)
│ ├── lib/
│ │ ├── core-stack.ts # Cognito, DynamoDB, S3, Bedrock KB + Guardrail, EventBridge, Secrets
│ │ ├── hosting-stack.ts # AgentCore runtimes + Gateway, Amplify hosting
│ │ └── api-stack.ts # API Gateway REST API, Lambdas, routes, IAM
│ ├── lambda/ # Python 3.13 Lambda handlers (one dir per function)
│ │ ├── _common/ # Shared Lambda layer (CORS, auth, usage helpers)
│ │ ├── record-manager/ profile-manager/ discovery/ contact-search/
│ │ ├── outreach/ email-sender/ rehearsal/ anam-session-token/
│ │ └── admin/ crm-sync/ search-provider/
│ ├── agentcore/ # Rehearsal agent container (Nova Sonic voice interviewer)
│ └── discovery-agent/ # Discovery agent container (Strands + Claude Haiku)
├── frontend/
│ ├── app/ # Next.js App Router — (auth)/ (onboarding)/ (app)/ (admin)/
│ ├── components/ # UI components
│ ├── contexts/ # React Context providers (auth, profile, usage, discovery)
│ ├── hooks/ lib/ i18n/ messages/ utils/
│ └── middleware.ts # Server-side route protection
├── docs/ # Project documentation
│ └── media/ # Images, diagrams, and GIFs
├── deploy.sh destroy.sh buildspec.yml # Deployment tooling (CodeBuild-based)
├── LICENSE
└── README.md
-
backend/ — All backend infrastructure and serverless functions.
bin/— CDK app entry point; instantiates the three stacks and their dependency chain.lib/— CDK stack definitions (Core → Hosting → Api).lambda/— Python Lambda handlers, one directory per function, plus the shared_commonlayer.agentcore/— the Rehearsal voice interviewer agent (containerized, runs on Bedrock AgentCore).discovery-agent/— the Discovery company-search agent (containerized, runs on Bedrock AgentCore).
-
frontend/ — Next.js (App Router) frontend, hosted on AWS Amplify.
app/— pages and layouts, organized into route groups for auth, onboarding, the athlete app, and the admin dashboard.components/,contexts/,hooks/,lib/— UI, state, and API-client code.i18n/+messages/— internationalization (English catalog today).
-
docs/ — Project documentation, with images and diagrams under
media/.
For developers looking to extend or modify this project — adding endpoints, Lambdas, or pages; changing AI models or prompts; and tuning the configurable monthly usage caps — see the Modification Guide.
This project was built using an AI-assisted development workflow (AI-DLC). AI-DLC remains available as a Kiro Power (
.kiro/powers/ai-dlc-methodology/) if you'd like to use it for new features, writing its artifacts toaidlc-docs/— but it is not required to work on this codebase. The current, authoritative documentation lives indocs/.
The most common issues are deployment-related and are covered in depth in the Deployment Guide. A few highlights:
The IAM role may not have propagated yet. Wait ~30 seconds and re-run ./deploy.sh.
Verify the Amplify GitHub App is installed on your fork (not the upstream repo), that your GitHub token has the right scope, and that AMPLIFY_MONOREPO_APP_ROOT is set to frontend. Check the Amplify Console build logs.
Confirm NEXT_PUBLIC_API_URL is set on the Amplify app and that the Amplify URL is in the backend's CORS allowed origins (both are wired automatically on deploy).
The Perplexity API key isn't set. Add it in AWS Secrets Manager (sportx/perplexity-api-key). See the deployment guide for the optional API keys.
Expected when Anam isn't configured — the session runs voice-only. Add sportx/anam-api-key in Secrets Manager to enable the avatar.
For CDK/deployment errors, run cdk synth (which also runs cdk-nag) and review the CloudFormation events in the AWS Console.
When using this as a template for a new repo, you can strip the entire commit history to start fresh with a single initial commit:
git checkout --orphan fresh-start
git add -A
git commit -m "Initial commit"
git remote add new-origin https://github.com/REPO_OWNER/REPO_NAME.git
git branch -D main
git branch -m main
git push origin main --forceWarning:
--forcerewrites the remote branch history. Only do this on a repo you own and before collaborators have cloned it.
This application was developed by the ASU AI Cloud Innovation Center (CIC), powered by AWS.
AWS Leads
-
Colleen Schwab – AI CIC Leader
-
Arun Arunachalam – Sr. Solutions Architect
-
Shawna Piper – Innovation Lead
ASU Team
-
Rachel Hayden – Project Manager/Partner Engagements Lead
-
Sean Sannier – Full Stack Developer
-
Ankitha Reddy – Full Stack Developer
-
Sandrah Bosire – UI/UX Designer
This project is licensed under the MIT License - see the LICENSE file for details.

