An iOS app that records or imports meeting audio, transcribes it using AWS Transcribe, and generates AI-powered summaries and Q&A via AWS Bedrock (Claude).
- 🎙️ Record meetings directly in-app
- 📁 Import audio files from your iPhone (Voice Memos, Files app, etc.)
- ☁️ AWS Transcribe integration for accurate speech-to-text
- 🤖 AI summaries powered by Claude on AWS Bedrock
- 💬 Chat with your transcript — ask questions like "What were the action items?"
- 🗂️ Meeting history — browse and reload past transcriptions
- 💾 Local transcript cache — avoids redundant AWS calls and reduces cost
- 🗑️ Delete jobs — removes both transcript and audio from AWS
- iOS 17+
- Xcode 15+
- An AWS account with:
- S3 bucket
- AWS Transcribe access
- AWS Bedrock access (Claude model enabled in your region)
- IAM user with appropriate permissions
Before building, set your AWS credentials in MeetingSummarizer/Config.swift:
enum Config {
static let awsAccessKey = "YOUR_AWS_ACCESS_KEY" # pragma: allowlist secret
static let awsSecretKey = "YOUR_AWS_SECRET_KEY" # pragma: allowlist secret
static let awsRegion = "eu-west-1"
static let s3Bucket = "your-s3-bucket-name"
static let bedrockModel = "eu.anthropic.claude-haiku-4-5-20251001-v1:0" # pragma: allowlist secret
}
⚠️ Never commit real credentials to source control. AddConfig.swiftto your.gitignoreor use a secrets manager.
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"transcribe:StartTranscriptionJob",
"transcribe:GetTranscriptionJob",
"transcribe:ListTranscriptionJobs",
"transcribe:DeleteTranscriptionJob",
"bedrock:InvokeModel"
],
"Resource": "*"
}- Clone the repo
- Open
MeetingSummarizer.xcodeprojin Xcode - Fill in
Config.swiftwith your AWS credentials - Select your target device or simulator
- Build and run (
⌘R)
See QUICK_START_GUIDE.md for a walkthrough of each feature.
For a deep dive into how everything works under the hood, see DESIGN.md.
- SwiftUI — UI layer
- AVFoundation — audio recording and processing
- AWS SigV4 — hand-rolled request signing (no SDK dependency)
- AWS S3 — audio file storage
- AWS Transcribe — speech-to-text
- AWS Bedrock (Claude) — summarisation and chat
- Core Data — local meeting history
- AppStorage — transcript caching and deduplication
- No offline mode (local speech-to-text not yet implemented)
- Single language support (English)
- No iCloud sync between devices
See TODO.md for the full list of planned improvements. Highlights for the next release:
- Migrate credentials to AWS Cognito Identity Pools (no hardcoded keys)
- Exponential backoff for transcription polling
- Multi-language support (AWS Transcribe supports 30+ languages)
- Persist chat history per meeting
- Speaker identification (AWS Transcribe diarization)
This app was built in ~2 hours using Amazon Kiro — an AI-powered IDE that supports spec-driven and vibe coding workflows. The architecture, features, and implementation were created and designed by me, but developed through Kiro's agentic coding experience.
This project uses AWS Automated Security Helper (ASH) for automated security scanning.
ASH runs automatically on every commit via pre-commit hooks to detect hardcoded secrets, vulnerabilities, and other security issues before they reach source control.
When working in Kiro, ASH is also available as an MCP server for interactive security scanning directly from the IDE. This integration provides:
- Automatic scanning — new
.swiftfiles trigger a security scan automatically - On-demand scanning — trigger a manual scan anytime via the "ASH Manual Security Scan" hook in the Agent Hooks panel
- Smart result interpretation — findings are prioritized by severity and correlated with project source files
- Health monitoring — continuous connection state tracking with automatic reconnection on transient failures
- Fallback mode — if the MCP server is unavailable, scans fall back to
ash --mode local
The MCP server configuration lives in .kiro/settings/mcp.json, with operational guidance in .kiro/steering/ and hook definitions in .kiro/hooks/.
# Install ASH
alias ash="uvx git+https://github.com/awslabs/automated-security-helper.git@v3.3.0"
# Run scan
ash --mode localMIT
