import os import sys # Add parent directory to path to import shared modules sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from visual_qc_apps.flask_app_template import FlaskAppTemplate class VisualElementsCountApp(FlaskAppTemplate): """ Visual Elements Count """ def __init__(self): # Define the hardcoded prompt prompt = """You are performing a visual quality-control check on a POS advertisement. The brand wants to limit the design to no more than 4 distinct visual elements so that the message is clear and quick to process. IMPORTANT PRE-ASSESSMENT INSTRUCTIONS: Before assessment: Users often upload complex print production files with multiple panels, cut lines, and technical markings. Your task: Focus ONLY on the primary consumer-facing visual - what the end customer would actually see after production. Key instructions: - Ignore cut lines, registration marks, and production guides - If multiple panels exist, assess the main/largest consumer-facing design - Disregard technical text, color bars, or printer information - Focus on the final visual as it would appear on shelf/in-market - Treat folded/die-cut layouts as the assembled final product STEPS TO EVALUATE: 1. Examine the design components (logos, pack shots, icons, images, text blocks, promotion badges, etc.). Each distinct object or text grouping counts as one visual element that the viewer must actively notice. 2. Count the total number of these distinct visual elements. 3. If the count is more than 4, the design fails this checkpoint, as it may be too cluttered or complex. Otherwise, it passes. YOUR OUTPUT: • List all distinct visual elements you identified in the design (e.g., "1. Logo, 2. Product image, 3. Main headline...). • State the total count of visual elements found. • State whether the design "passes" or "fails" the simplified-design checkpoint. • Provide a clear explanation of why it passes or fails based on the element count. • If it fails, provide 1–2 concise recommendations for reducing or combining elements to achieve clarity. • Include a JSON code block with two fields: "visual_element_count": the total number of visual elements "compliance_status": "Pass" or "Fail" """ # Initialize the Flask app with the prompt super().__init__(__name__, prompt) # Run the app if executed directly if __name__ == "__main__": app = VisualElementsCountApp() app.run(debug=True)