Create a state machine that coordinates the processing stages. A simple bootcamp version can use these states:
MarkAnalyzingAnalyzeTranscriptSaveResultMarkCompletedHandleFailureIf you implement audio input, add:
StartTranscriptionWaitForTranscriptionCheckTranscriptionStatusFor a reliable final demo, the transcript path is enough:
Uploaded transcript -> Step Functions -> Lambda -> Bedrock -> S3 report -> DynamoDB status
Input:
{
"jobId": "job-test-001",
"bucket": "<bucket-name>",
"transcriptKey": "uploads/job-test-001/sample_conversation.txt"
}
Expected result:
COMPLETED.reports/job-test-001/report.json.Input references a transcript key that does not exist.
Expected result:
FAILED.errorMessage explains that the S3 object is missing.Temporarily use a model ID that is not enabled, or remove Bedrock permission from the test role.
Expected result: