Organized the application into separate frontend and backend directories for cleaner deployment and better separation of concerns. Frontend Directory (frontend/): - index.html: Single-page web interface (renamed from web_ui.html) - README.md: Frontend deployment guide - Total size: ~113 KB (self-contained) - Smart base path detection (works at / or /ai_qc/) - No configuration changes required Backend Directory (backend/): - All Python files (api_server.py, llm_config.py, etc.) - visual_qc_apps/: 33 QC check modules - profiles/: 6 QC profile configurations - brand_guidelines/: Reference asset storage - config/: Environment configurations - scripts/: Deployment automation - uploads/, output/: Data directories - requirements.txt, ai_qc.service, apache_config.conf - Complete documentation New Documentation: - FOLDER_STRUCTURE.md: Comprehensive guide to new structure - frontend/README.md: Frontend deployment instructions - backend/BACKEND_README.md: Backend deployment guide Deployment Mapping: - frontend/ → /var/www/html/ai_qc/ (web root) - backend/ → /opt/ai_qc/ (application directory) Benefits: - Clear separation of concerns - Backend code not in web-accessible directory - Independent frontend/backend updates - Matches server's existing patterns (/opt/veo3, /opt/voice2text) - Industry-standard architecture - Easy to deploy and maintain Original files preserved in root directory for reference. Ready for production deployment following MIGRATION_GUIDE.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
103 lines
No EOL
4.3 KiB
JSON
103 lines
No EOL
4.3 KiB
JSON
{
|
|
"name": "Unilever Key Visual",
|
|
"description": "Unilever brand guidelines QC profile for key visual materials (single key visual, multiple key visuals on a single page, or packaging) - Based on OOH profile with 120% total weight",
|
|
"pre_analysis_instructions": "Before assessment: Users often upload complex print production files with multiple panels, cut lines, and technical markings.\n\nYour task: Focus ONLY on the primary consumer-facing visual - what the end customer would actually see after production.\n\nKey instructions:\n• Ignore cut lines, registration marks, and production guides\n• If multiple panels exist, assess the main/largest consumer-facing design\n• Disregard technical text, color bars, or printer information\n• Focus on the final visual as it would appear on shelf/in-market\n• Treat folded/die-cut layouts as the assembled final product\n\nSTEPS TO EVALUATE:\n1. 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.\n2. Count the total number of these distinct visual elements.\n3. If the count is more than 4, the design fails this checkpoint, as it may be too cluttered or complex.",
|
|
"checks": {
|
|
"background_contrast": {
|
|
"weight": 0.10,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"brand_assets_visibility": {
|
|
"weight": 0.12,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"call_to_action": {
|
|
"weight": 0.03,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"curved_edges": {
|
|
"weight": 0.04,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"face_gaze_direction": {
|
|
"weight": 0.06,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Bonus check - Individual score out of 10",
|
|
"additional_notes": "If there is no face then score this a 0",
|
|
"bonus_check": true
|
|
},
|
|
"face_visibility": {
|
|
"weight": 0.07,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Bonus check - Individual score out of 10",
|
|
"additional_notes": "If there is no face then score this a 0",
|
|
"bonus_check": true
|
|
},
|
|
"imperative_verb": {
|
|
"weight": 0.02,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"logo_visibility": {
|
|
"weight": 0.14,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"lowercase_text": {
|
|
"weight": 0.10,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"new_visibility": {
|
|
"weight": 0.07,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Bonus check - Individual score out of 10",
|
|
"additional_notes": "If there is no New text visible then score this a 0",
|
|
"bonus_check": true
|
|
},
|
|
"supporting_images": {
|
|
"weight": 0.10,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"visual_elements_count": {
|
|
"weight": 0.14,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"visual_hierarchy": {
|
|
"weight": 0.10,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"visuals_left_text_right": {
|
|
"weight": 0.06,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
},
|
|
"word_count": {
|
|
"weight": 0.05,
|
|
"llm": "Gemini",
|
|
"enabled": true,
|
|
"notes": "Individual score out of 10"
|
|
}
|
|
}
|
|
} |