graph TD start[Start Flow] --> checkInputs[Check Input Variables] checkInputs --> scriptGen[Generate Script] scriptGen --> voiceGen[Generate Voice Over] voiceGen --> avatarGen[Generate Avatar Image] avatarGen --> videoAssembly[Assemble Video] videoAssembly --> lipSync[Apply Lip Sync] lipSync --> finalOutput[Return MP4] subgraph ScriptGenAgent scriptGen --> validateScript[Validate Script Length] validateScript --> formatScript[Format Script] end subgraph VoiceOverAgent voiceGen --> convertToMp3[Convert to MP3] convertToMp3 --> checkAudio[Verify Audio Quality] end subgraph AvatarImageGen avatarGen --> createPNG[Create PNG Image] createPNG --> validateImage[Verify Image Size] end subgraph TalkingHeadAssembler videoAssembly --> getTranscript[Get Transcription] getTranscript --> syncVideo[Sync Audio and Video] syncVideo --> renderMP4[Render Final MP4] end