An AI-powered presentation coaching tool that lets users record or upload their presentation, receive a live voice-based Q&A session with a configurable AI persona, and then review detailed post-session analytics — all built on a fully serverless AWS architecture.
Live App: https://master.dgah1op5xbdt6.amplifyapp.com
Watch the full walkthrough of the AI Presentation Analyzer in action
| 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 |
| Directories | General project directory structure |
| Modification Guide | Guide for developers extending the project |
| Credits | Contributors and acknowledgments |
| Disclaimers | Important disclaimers and legal notices |
| License | License information |
The application is split into a Next.js frontend hosted via AWS Amplify and a serverless AWS backend. Users authenticate through Amazon Cognito, upload presentation videos directly to S3 using presigned URLs, and stream real-time transcription via Amazon Transcribe. A bidirectional voice Q&A session is powered by a containerized Strands agent running on Amazon Bedrock AgentCore, which uses Amazon Nova Sonic for speech-to-speech interaction. After each session, post-meeting analytics are generated by invoking Amazon Bedrock through a dedicated Lambda function. Personas — which define the AI interviewer's personality, voice, and time limits — are stored in DynamoDB and managed through a Cognito-protected REST API. A Bedrock Guardrail screens all user-submitted persona customization text for harmful content and prompt injection attacks before it is persisted or returned.
For a detailed explanation of the architecture, see the Architecture Deep Dive.
There are two ways to deploy this application:
| Method | Best For | Requirements |
|---|---|---|
Automated (deploy.sh) |
Quick setup via AWS CloudShell | Bash, AWS CLI |
| Manual (CDK CLI) | Full local control | Node.js 18+, CDK, Docker, Python 3.13 |
Quick start with the automated method:
chmod +x deploy.sh
./deploy.shThe script runs in AWS CloudShell (or any bash terminal with AWS CLI configured), creates a CodeBuild project, and deploys all four stacks in about 15–25 minutes.
For detailed deployment instructions, including prerequisites, GitHub token setup, manual CDK deployment, post-deployment frontend configuration, and cleanup, see the Deployment Guide.
For detailed usage instructions with screenshots, see the User Guide.
For complete API reference, see the API Documentation.
For developers looking to extend or modify this project, see the Modification Guide.
├── backend/
│ ├── bin/
│ │ └── backend.ts
│ ├── lambda/
│ │ ├── s3-presigned-url-gen/
│ │ ├── persona-crud/
│ │ ├── post-meeting-analytics/
│ │ └── layers/
│ ├── lib/
│ │ ├── backend-stack.ts
│ │ ├── agentcore-stack.ts
│ │ ├── amplify-hosting-stack.ts
│ │ └── frontend-config-stack.ts
│ ├── agentcore/
│ │ └── index.py
│ ├── cdk.json
│ ├── package.json
│ └── tsconfig.json
├── frontend/
│ ├── app/
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── globals.css
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── services/
│ │ ├── context/
│ │ ├── config/
│ │ ├── transcription/
│ │ ├── practice/
│ │ └── qa/
│ └── package.json
├── docs/
│ ├── architectureDeepDive.md
│ ├── deploymentGuide.md
│ ├── userGuide.md
│ ├── APIDoc.md
│ ├── modificationGuide.md
│ └── media/
│ ├── ArchitectureDiagram.jpg
│ └── user-interface.gif
├── LICENSE
└── README.md
-
backend/ - Contains all backend infrastructure and serverless functions
bin/- CDK app entry pointlambda/- AWS Lambda function handlers (kebab-case dirs, each withindex.pyentry point)s3-presigned-url-gen/- Generates presigned S3 URLs for video and PDF uploads, and applies the Bedrock Guardrail to persona customizationspersona-crud/- CRUD operations for AI personas stored in DynamoDBpost-meeting-analytics/- Generates full post-session presentation analytics via Amazon Bedrocklayers/- Shared Lambda layers (e.g., latest boto3)
lib/- CDK stack definitions (auth, API, AgentCore runtime, Amplify hosting, frontend config)agentcore/- Containerized bidirectional voice Q&A agent built with Strands and deployed on Amazon Bedrock AgentCore
-
frontend/ - Next.js frontend application (App Router, TypeScript, Tailwind CSS)
app/- Next.js App Router pages and layoutscomponents/- Reusable UI components (persona selection, upload, practice session, Q&A, analytics)hooks/- Custom React hooksservices/- API clients, AWS credential helpers, WebSocket connection managementtranscription/- Real-time transcription providers (Amazon Transcribe and Web Speech API)practice/andqa/- Dedicated pages for practice sessions and live Q&A
-
docs/ - Project documentation
media/- Images, diagrams, and GIFs for documentation
This application was developed by:
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.
This project is licensed under the MIT License - see the LICENSE file for details.
