graph TD
Start[Start: Receive Product URL] --> URLValidation{URL Valid?}
URLValidation -->|No| ErrorHandler[Return Error Message]
URLValidation -->|Yes| Task1[Task #226: Extract Structured Data]
Task1 --> ParseTitle[Parse Product Title]
Task1 --> ParseBullets[Parse Bullet Points]
Task1 --> ParseDescription[Parse Description]
Task1 --> ParseImage[Extract Image URL]
ParseTitle --> ValidateTitle{Title Valid?}
ParseBullets --> ValidateBullets{Bullets Valid?}
ParseDescription --> ValidateDesc{Description Valid?}
ParseImage --> ValidateImage{Image URL Valid?}
ValidateTitle -->|No| RetryTitle[Retry Title Extraction]
ValidateBullets -->|No| RetryBullets[Retry Bullets Extraction]
ValidateDesc -->|No| RetryDesc[Retry Description Extraction]
ValidateImage -->|No| RetryImage[Retry Image Extraction]
RetryTitle --> ValidateTitle
RetryBullets --> ValidateBullets
RetryDesc --> ValidateDesc
RetryImage --> ValidateImage
ValidateTitle -->|Yes| CombineData[Combine Extracted Data]
ValidateBullets -->|Yes| CombineData
ValidateDesc -->|Yes| CombineData
ValidateImage -->|Yes| CombineData
CombineData --> Task2[Task #223: Format JSON Structure]
Task2 --> ValidateJSON{JSON Format Valid?}
ValidateJSON -->|No| RetryJSON[Retry JSON Formatting]
RetryJSON --> Task2
ValidateJSON -->|Yes| Output[Return Final JSON Output]
ErrorHandler --> End[End Process]
Output --> End