PS C:\Apps\Email Reports> python main.py --full --month October [2025-11-06 10:26:00] [INFO] [EmailReports] ============================================================ [2025-11-06 10:26:00] [INFO] [EmailReports] Email Reports Automation System - Starting [2025-11-06 10:26:00] [INFO] [EmailReports] ============================================================ [2025-11-06 10:26:02] [INFO] [EmailReports] ============================================================ [2025-11-06 10:26:02] [INFO] [EmailReports] Email Reports Automation System - Starting [2025-11-06 10:26:02] [INFO] [EmailReports] ============================================================ [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Initializing Email Reports Orchestrator [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Configuration loaded from environment [2025-11-06 10:26:02] [INFO] [EmailReports.ClientDatabase] Loaded 30 clients from database [2025-11-06 10:26:02] [INFO] [EmailReports.EmailGenerator] EmailGenerator config - AGENCY_NAME: Discover Web Solutions [2025-11-06 10:26:02] [INFO] [EmailReports.EmailGenerator] EmailGenerator config - AGENCY_EMAIL: craig@discoverweb.com.au [2025-11-06 10:26:02] [INFO] [EmailReports.EmailGenerator] Email template loaded from: c:/Apps/Email Reports/templates/email_template.html [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Orchestrator initialized successfully ============================================================ RUNNING FULL WORKFLOW ============================================================ [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] ============================================================ [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] STARTING FULL WORKFLOW [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] ============================================================ [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Archiving old files (keeping November files) [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archiving files not from November [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: Capital Smiles - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: Chem-Dry Austyle - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: Family Focus Legal - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: HHMP - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: Inner West Optical - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: Politech - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: Sydney Coach Charter - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: The George Centre - October 2025 Google Ads Report.pdf -> archive/October 2025/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived: TLG_Google_Ads_Report.pdf -> archive/unknown/ [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: Capital_Smiles_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: Chem-Dry_Austyle_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: Family_Focus_Legal_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: HHMP_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: Inner_West_Optical_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: Politech_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: Sydney_Coach_Charter_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.FileManager] Archived preview: The_George_Centre_preview.html [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Archived 9 files, skipped 0 [2025-11-06 10:26:02] [INFO] [EmailReports.DriveReader] Loaded existing Drive credentials [2025-11-06 10:26:02] [INFO] [EmailReports.DriveReader] Refreshed Drive credentials [2025-11-06 10:26:02] [INFO] [EmailReports.DriveReader] Saved credentials to token.json [2025-11-06 10:26:02] [INFO] [googleapiclient.discovery_cache] file_cache is only supported with oauth2client<4.0.0 [2025-11-06 10:26:02] [INFO] [EmailReports.DriveReader] Google Drive service initialized Processing reports for: October [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] PDF storage path: c:/Apps/Email Reports/data/pdfs/ [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Max files per run: 50 [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] SEO folder ID from config: '1BpQKQcZ9YO0lJVKtywL0berbt-k9cjuc' [2025-11-06 10:26:02] [INFO] [EmailReports.Orchestrator] Processing SEO folder: 1BpQKQcZ9YO0lJVKtywL0berbt-k9cjuc - Downloading SEO reports from October folder... [2025-11-06 10:26:03] [INFO] [EmailReports.DriveReader] Found subfolder 'October': 1ALpBSM_u9GhBVBG8VidlmTpNQ99Yhu5b [2025-11-06 10:26:03] [INFO] [EmailReports.DriveReader] Downloading PDFs from folder 1ALpBSM_u9GhBVBG8VidlmTpNQ99Yhu5b [2025-11-06 10:26:04] [INFO] [EmailReports.DriveReader] Found 22 PDF files in folder 1ALpBSM_u9GhBVBG8VidlmTpNQ99Yhu5b [2025-11-06 10:26:04] [INFO] [EmailReports.DriveReader] Downloading file 1/22: APC Prosthetics SEO Report.pdf [2025-11-06 10:26:07] [INFO] [EmailReports.DriveReader] Downloaded: APC Prosthetics SEO Report.pdf (4294676 bytes) [2025-11-06 10:26:07] [INFO] [EmailReports.DriveReader] Downloading file 2/22: Answer Right SEO Report .pdf [2025-11-06 10:26:10] [INFO] [EmailReports.DriveReader] Downloaded: Answer Right SEO Report.pdf (3594666 bytes) [2025-11-06 10:26:10] [INFO] [EmailReports.DriveReader] Downloading file 3/22: All Spark Electrical SEO Report.pdf [2025-11-06 10:26:13] [INFO] [EmailReports.DriveReader] Downloaded: All Spark Electrical SEO Report.pdf (3954692 bytes) [2025-11-06 10:26:13] [INFO] [EmailReports.DriveReader] Downloading file 4/22: Alkalined SEO Report.pdf [2025-11-06 10:26:16] [INFO] [EmailReports.DriveReader] Downloaded: Alkalined SEO Report.pdf (3945541 bytes) [2025-11-06 10:26:16] [INFO] [EmailReports.DriveReader] Downloading file 5/22: Sydney_Coach_Charter_SEO_Report.pdf [2025-11-06 10:26:19] [INFO] [EmailReports.DriveReader] Downloaded: Sydney_Coach_Charter_SEO_Report.pdf (3856375 bytes) [2025-11-06 10:26:19] [INFO] [EmailReports.DriveReader] Downloading file 6/22: Lakeview_Private_Hospital_SEO_Report.pdf [2025-11-06 10:26:22] [INFO] [EmailReports.DriveReader] Downloaded: Lakeview_Private_Hospital_SEO_Report.pdf (3855068 bytes) [2025-11-06 10:26:22] [INFO] [EmailReports.DriveReader] Downloading file 7/22: Green_Power_Solutions_SEO_Report.pdf [2025-11-06 10:26:25] [INFO] [EmailReports.DriveReader] Downloaded: Green_Power_Solutions_SEO_Report.pdf (3917142 bytes) [2025-11-06 10:26:25] [INFO] [EmailReports.DriveReader] Downloading file 8/22: Precision_Upper_GI_Surgery_SEO_Report.pdf [2025-11-06 10:26:28] [INFO] [EmailReports.DriveReader] Downloaded: Precision_Upper_GI_Surgery_SEO_Report.pdf (4309828 bytes) [2025-11-06 10:26:28] [INFO] [EmailReports.DriveReader] Downloading file 9/22: Family_Focus_Legal_SEO_Report.pdf [2025-11-06 10:26:30] [INFO] [EmailReports.DriveReader] Downloaded: Family_Focus_Legal_SEO_Report.pdf (4330531 bytes) [2025-11-06 10:26:30] [INFO] [EmailReports.DriveReader] Downloading file 10/22: Australian_Dental_Specialists_SEO_Report.pdf [2025-11-06 10:26:34] [INFO] [EmailReports.DriveReader] Downloaded: Australian_Dental_Specialists_SEO_Report.pdf (4312057 bytes) [2025-11-06 10:26:34] [INFO] [EmailReports.DriveReader] Downloading file 11/22: Centre_for_Gastrointestinal__Health_SEO_Report.pdf [2025-11-06 10:26:36] [INFO] [EmailReports.DriveReader] Downloaded: Centre_for_Gastrointestinal__Health_SEO_Report.pdf (5217901 bytes) [2025-11-06 10:26:36] [INFO] [EmailReports.DriveReader] Downloading file 12/22: Sydney_Retina_SEO_Report.pdf [2025-11-06 10:26:39] [INFO] [EmailReports.DriveReader] Downloaded: Sydney_Retina_SEO_Report.pdf (4551432 bytes) [2025-11-06 10:26:39] [INFO] [EmailReports.DriveReader] Downloading file 13/22: The_George_Centre_SEO_Report .pdf [2025-11-06 10:26:42] [INFO] [EmailReports.DriveReader] Downloaded: The_George_Centre_SEO_Report.pdf (4063968 bytes) [2025-11-06 10:26:42] [INFO] [EmailReports.DriveReader] Downloading file 14/22: My_Building_Consultants_SEO_Report.pdf [2025-11-06 10:26:45] [INFO] [EmailReports.DriveReader] Downloaded: My_Building_Consultants_SEO_Report.pdf (3923234 bytes) [2025-11-06 10:26:45] [INFO] [EmailReports.DriveReader] Downloading file 15/22: Julia_Crawford_SEO_Report.pdf [2025-11-06 10:26:48] [INFO] [EmailReports.DriveReader] Downloaded: Julia_Crawford_SEO_Report.pdf (4537439 bytes) [2025-11-06 10:26:48] [INFO] [EmailReports.DriveReader] Downloading file 16/22: HHMP_SEO_Report.pdf [2025-11-06 10:26:50] [INFO] [EmailReports.DriveReader] Downloaded: HHMP_SEO_Report.pdf (4528354 bytes) [2025-11-06 10:26:50] [INFO] [EmailReports.DriveReader] Downloading file 17/22: Endeurology_SEO_Report.pdf [2025-11-06 10:26:53] [INFO] [EmailReports.DriveReader] Downloaded: Endeurology_SEO_Report.pdf (4519310 bytes) [2025-11-06 10:26:53] [INFO] [EmailReports.DriveReader] Downloading file 18/22: Dr_Louis_Shidiak_SEO_Report .pdf [2025-11-06 10:26:56] [INFO] [EmailReports.DriveReader] Downloaded: Dr_Louis_Shidiak_SEO_Report.pdf (4096628 bytes) [2025-11-06 10:26:56] [INFO] [EmailReports.DriveReader] Downloading file 19/22: Dr_Graeme_Brown_SEO_Report.pdf [2025-11-06 10:26:59] [INFO] [EmailReports.DriveReader] Downloaded: Dr_Graeme_Brown_SEO_Report.pdf (3765662 bytes) [2025-11-06 10:26:59] [INFO] [EmailReports.DriveReader] Downloading file 20/22: Dr_Jeffrey_Brennan_SEO_Report.pdf [2025-11-06 10:27:02] [INFO] [EmailReports.DriveReader] Downloaded: Dr_Jeffrey_Brennan_SEO_Report.pdf (3849801 bytes) [2025-11-06 10:27:02] [INFO] [EmailReports.DriveReader] Downloading file 21/22: Care_First_SEO_Report.pdf [2025-11-06 10:27:05] [INFO] [EmailReports.DriveReader] Downloaded: Care_First_SEO_Report.pdf (4283046 bytes) [2025-11-06 10:27:05] [INFO] [EmailReports.DriveReader] Downloading file 22/22: Capital_Smiles_SEO_Report.pdf [2025-11-06 10:27:09] [INFO] [EmailReports.DriveReader] Downloaded: Capital_Smiles_SEO_Report.pdf (4129687 bytes) [2025-11-06 10:27:09] [INFO] [EmailReports.DriveReader] Downloaded 22 PDF files [OK] Downloaded 22 SEO reports [2025-11-06 10:27:09] [INFO] [EmailReports.Orchestrator] SEM folder ID from config: '1AoEF52KRdQFblgcKg2mfLJmhCgSGIGKv' [2025-11-06 10:27:09] [INFO] [EmailReports.Orchestrator] Processing SEM folder: 1AoEF52KRdQFblgcKg2mfLJmhCgSGIGKv - Downloading Google Ads reports from October folder... [2025-11-06 10:27:09] [INFO] [EmailReports.DriveReader] Found subfolder 'October': 1WU_-E2OOFfYsea1SxATlMfWPkyhoWqEP [2025-11-06 10:27:09] [INFO] [EmailReports.DriveReader] Downloading PDFs from folder 1WU_-E2OOFfYsea1SxATlMfWPkyhoWqEP [2025-11-06 10:27:10] [INFO] [EmailReports.DriveReader] Found 10 PDF files in folder 1WU_-E2OOFfYsea1SxATlMfWPkyhoWqEP [2025-11-06 10:27:10] [INFO] [EmailReports.DriveReader] Downloading file 1/10: TLG Facebook Ads Report.pdf [2025-11-06 10:27:13] [INFO] [EmailReports.DriveReader] Downloaded: TLG Facebook Ads Report.pdf (1712695 bytes) [2025-11-06 10:27:13] [INFO] [EmailReports.DriveReader] Downloading file 2/10: TLG Google Ads Report.pdf [2025-11-06 10:27:16] [INFO] [EmailReports.DriveReader] Downloaded: TLG Google Ads Report.pdf (2816976 bytes) [2025-11-06 10:27:16] [INFO] [EmailReports.DriveReader] Downloading file 3/10: The George Centre Google Ads Report.pdf [2025-11-06 10:27:20] [INFO] [EmailReports.DriveReader] Downloaded: The George Centre Google Ads Report.pdf (2822909 bytes) [2025-11-06 10:27:20] [INFO] [EmailReports.DriveReader] Downloading file 4/10: Sydney Coach Charter Google Ads Report.pdf [2025-11-06 10:27:24] [INFO] [EmailReports.DriveReader] Downloaded: Sydney Coach Charter Google Ads Report.pdf (2840547 bytes) [2025-11-06 10:27:24] [INFO] [EmailReports.DriveReader] Downloading file 5/10: Politech Google Ads Report.pdf [2025-11-06 10:27:28] [INFO] [EmailReports.DriveReader] Downloaded: Politech Google Ads Report.pdf (3321704 bytes) [2025-11-06 10:27:28] [INFO] [EmailReports.DriveReader] Downloading file 6/10: Inner West Optical Google Ads Report.pdf [2025-11-06 10:27:31] [INFO] [EmailReports.DriveReader] Downloaded: Inner West Optical Google Ads Report.pdf (2843228 bytes) [2025-11-06 10:27:31] [INFO] [EmailReports.DriveReader] Downloading file 7/10: HHMP Google Ads Report.pdf [2025-11-06 10:27:35] [INFO] [EmailReports.DriveReader] Downloaded: HHMP Google Ads Report.pdf (2827345 bytes) [2025-11-06 10:27:35] [INFO] [EmailReports.DriveReader] Downloading file 8/10: Family Focus Legal Google Ads Report.pdf [2025-11-06 10:27:38] [INFO] [EmailReports.DriveReader] Downloaded: Family Focus Legal Google Ads Report.pdf (3596064 bytes) [2025-11-06 10:27:38] [INFO] [EmailReports.DriveReader] Downloading file 9/10: Chem-Dry Austyle Google Ads Report.pdf [2025-11-06 10:27:42] [INFO] [EmailReports.DriveReader] Downloaded: Chem-Dry Austyle Google Ads Report.pdf (2844373 bytes) [2025-11-06 10:27:42] [INFO] [EmailReports.DriveReader] Downloading file 10/10: Capital Smiles Google Ads Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.DriveReader] Downloaded: Capital Smiles Google Ads Report.pdf (2770446 bytes) [2025-11-06 10:27:46] [INFO] [EmailReports.DriveReader] Downloaded 10 PDF files [OK] Downloaded 10 Google Ads reports Total: Downloaded 32 PDF files [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing 32 PDF files [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 1/32: APC Prosthetics SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: APC Prosthetics SEO Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from APC Prosthetics SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'APC Prosthetics' -> APC Prosthetics [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 2/32: Answer Right SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Answer Right SEO Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Answer Right SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Answer Right' -> Answer Right [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 3/32: All Spark Electrical SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: All Spark Electrical SEO Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from All Spark Electrical SEO Report.pdf [2025-11-06 10:27:46] [WARNING] [EmailReports.ClientDatabase] No match found for business name: 'All Spark' [2025-11-06 10:27:46] [WARNING] [EmailReports.Orchestrator] No client match found for: All Spark [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 4/32: Alkalined SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Alkalined SEO Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Alkalined SEO Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Alkalined' -> Alkalined [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 5/32: Sydney_Coach_Charter_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Sydney_Coach_Charter_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Sydney_Coach_Charter_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Sydney Coach Charter' -> Sydney Coach Charter [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 6/32: Lakeview_Private_Hospital_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Lakeview_Private_Hospital_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Lakeview_Private_Hospital_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Lakeview Private Hospital' -> Lakeview Private Hospital [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 7/32: Green_Power_Solutions_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Green_Power_Solutions_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Green_Power_Solutions_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Green Power Solutions' -> Green Power Solutions [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 8/32: Precision_Upper_GI_Surgery_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Precision_Upper_GI_Surgery_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Precision_Upper_GI_Surgery_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [EmailReports.ClientDatabase] No match found for business name: 'Precision Upper GI Surgery' [2025-11-06 10:27:46] [WARNING] [EmailReports.Orchestrator] No client match found for: Precision Upper GI Surgery [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 9/32: Family_Focus_Legal_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Family_Focus_Legal_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Family_Focus_Legal_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Family Focus Legal' -> Family Focus Legal [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 10/32: Australian_Dental_Specialists_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Australian_Dental_Specialists_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Australian_Dental_Specialists_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Australian Dental Specialists' -> Australian Dental Specialists [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 11/32: Centre_for_Gastrointestinal__Health_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Centre_for_Gastrointestinal__Health_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Centre_for_Gastrointestinal__Health_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Centre for Gastrointestinal Health' -> Centre for Gastrointestinal Health [2025-11-06 10:27:46] [INFO] [EmailReports.Orchestrator] Processing PDF 12/32: Sydney_Retina_SEO_Report.pdf [2025-11-06 10:27:46] [INFO] [EmailReports.PDFExtractor] Extracting data from: Sydney_Retina_SEO_Report.pdf [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:46] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Sydney_Retina_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Sydney Retina' -> Sydney Retina [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 13/32: The_George_Centre_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: The_George_Centre_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from The_George_Centre_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'The George Centre' -> The George Centre [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 14/32: My_Building_Consultants_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: My_Building_Consultants_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from My_Building_Consultants_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'My Building Consultants' -> My Building Consultants [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 15/32: Julia_Crawford_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Julia_Crawford_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Julia_Crawford_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Julia Crawford' -> Julia Crawford [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 16/32: HHMP_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: HHMP_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from HHMP_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [EmailReports.ClientDatabase] No match found for business name: 'Hunters Hill Medical Practice' [2025-11-06 10:27:47] [WARNING] [EmailReports.Orchestrator] No client match found for: Hunters Hill Medical Practice [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 17/32: Endeurology_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Endeurology_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Endeurology_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Endeurology' -> Endeurology [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 18/32: Dr_Louis_Shidiak_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Dr_Louis_Shidiak_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Dr_Louis_Shidiak_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Dr Louis Shidiak' -> Dr Louis Shidiak [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 19/32: Dr_Graeme_Brown_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Dr_Graeme_Brown_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Dr_Graeme_Brown_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Dr Graeme Brown' -> Dr Graeme Brown [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 20/32: Dr_Jeffrey_Brennan_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Dr_Jeffrey_Brennan_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Dr_Jeffrey_Brennan_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Dr Jeffrey Brennan' -> Dr Jeffrey Brennan [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 21/32: Care_First_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Care_First_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Care_First_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Care First' -> Care First [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 22/32: Capital_Smiles_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Capital_Smiles_SEO_Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P17' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Capital_Smiles_SEO_Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Capital Smiles' -> Capital Smiles [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 23/32: TLG Facebook Ads Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: TLG Facebook Ads Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P30' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P30' is an invalid float value [2025-11-06 10:27:47] [WARNING] [EmailReports.PDFExtractor] Extraction warnings for TLG Facebook Ads Report.pdf: Missing KPIs: Conversions, Conv. rate, Avg. CPC [2025-11-06 10:27:47] [WARNING] [EmailReports.ClientDatabase] No match found for business name: 'The Little Gym' [2025-11-06 10:27:47] [WARNING] [EmailReports.Orchestrator] No client match found for: The Little Gym [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 24/32: TLG Google Ads Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: TLG Google Ads Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from TLG Google Ads Report.pdf [2025-11-06 10:27:47] [WARNING] [EmailReports.ClientDatabase] No match found for business name: 'The Little Gym' [2025-11-06 10:27:47] [WARNING] [EmailReports.Orchestrator] No client match found for: The Little Gym [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 25/32: The George Centre Google Ads Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: The George Centre Google Ads Report.pdf [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:47] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from The George Centre Google Ads Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.ClientDatabase] Exact match found: 'The George Centre' -> The George Centre [2025-11-06 10:27:47] [INFO] [EmailReports.Orchestrator] Processing PDF 26/32: Sydney Coach Charter Google Ads Report.pdf [2025-11-06 10:27:47] [INFO] [EmailReports.PDFExtractor] Extracting data from: Sydney Coach Charter Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Sydney Coach Charter Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Sydney Coach Charter' -> Sydney Coach Charter [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Processing PDF 27/32: Politech Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Extracting data from: Politech Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Politech Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Politech' -> Politech [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Processing PDF 28/32: Inner West Optical Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Extracting data from: Inner West Optical Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Inner West Optical Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Inner West Optical' -> Inner West Optical [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Processing PDF 29/32: HHMP Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Extracting data from: HHMP Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from HHMP Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'HHMP' -> HHMP [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Processing PDF 30/32: Family Focus Legal Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Extracting data from: Family Focus Legal Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Family Focus Legal Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Family Focus Legal' -> Family Focus Legal [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Processing PDF 31/32: Chem-Dry Austyle Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Extracting data from: Chem-Dry Austyle Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Chem-Dry Austyle Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Chem-Dry AUStyle' -> Chem-Dry Austyle [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Processing PDF 32/32: Capital Smiles Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Extracting data from: Capital Smiles Google Ads Report.pdf [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [WARNING] [pdfminer.pdfinterp] Cannot set gray non-stroke color because /'P50' is an invalid float value [2025-11-06 10:27:48] [INFO] [EmailReports.PDFExtractor] Successfully extracted all data from Capital Smiles Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.ClientDatabase] Exact match found: 'Capital Smiles' -> Capital Smiles [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Generating emails [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for APC Prosthetics - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Answer Right - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [WARNING] [EmailReports.Orchestrator] Skipping email generation for All Spark - no client match [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Alkalined - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Sydney Coach Charter - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Lakeview Private Hospital - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Green Power Solutions - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [WARNING] [EmailReports.Orchestrator] Skipping email generation for Precision Upper GI Surgery - no client match [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Family Focus Legal - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Australian Dental Specialists - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Centre for Gastrointestinal Health - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Sydney Retina - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for The George Centre - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for My Building Consultants - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Julia Crawford - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [WARNING] [EmailReports.Orchestrator] Skipping email generation for Hunters Hill Medical Practice - no client match [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Endeurology - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Dr Louis Shidiak - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Dr Graeme Brown - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Dr Jeffrey Brennan - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Care First - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Capital Smiles - Subject: Your October 2025 SEO Report [2025-11-06 10:27:48] [WARNING] [EmailReports.Orchestrator] Skipping email generation for The Little Gym - no client match [2025-11-06 10:27:48] [WARNING] [EmailReports.Orchestrator] Skipping email generation for The Little Gym - no client match [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for The George Centre - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Sydney Coach Charter - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Politech - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Inner West Optical - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for HHMP - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Family Focus Legal - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Chem-Dry Austyle - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.EmailGenerator] Generated email for Capital Smiles - Subject: Your October 2025 Google Ads Report [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Renaming PDFs with month and year [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: APC Prosthetics SEO Report.pdf -> APC Prosthetics - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Answer Right SEO Report.pdf -> Answer Right - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Alkalined SEO Report.pdf -> Alkalined - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Sydney_Coach_Charter_SEO_Report.pdf -> Sydney Coach Charter - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Lakeview_Private_Hospital_SEO_Report.pdf -> Lakeview Private Hospital - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Green_Power_Solutions_SEO_Report.pdf -> Green Power Solutions - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Family_Focus_Legal_SEO_Report.pdf -> Family Focus Legal - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Australian_Dental_Specialists_SEO_Report.pdf -> Australian Dental Specialists - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Centre_for_Gastrointestinal__Health_SEO_Report.pdf -> Centre for Gastrointestinal Health - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Sydney_Retina_SEO_Report.pdf -> Sydney Retina - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: The_George_Centre_SEO_Report.pdf -> The George Centre - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: My_Building_Consultants_SEO_Report.pdf -> My Building Consultants - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Julia_Crawford_SEO_Report.pdf -> Julia Crawford - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Endeurology_SEO_Report.pdf -> Endeurology - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Dr_Louis_Shidiak_SEO_Report.pdf -> Dr Louis Shidiak - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Dr_Graeme_Brown_SEO_Report.pdf -> Dr Graeme Brown - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Dr_Jeffrey_Brennan_SEO_Report.pdf -> Dr Jeffrey Brennan - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Care_First_SEO_Report.pdf -> Care First - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Capital_Smiles_SEO_Report.pdf -> Capital Smiles - October 2025 SEO Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: The George Centre Google Ads Report.pdf -> The George Centre - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Sydney Coach Charter Google Ads Report.pdf -> Sydney Coach Charter - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Politech Google Ads Report.pdf -> Politech - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Inner West Optical Google Ads Report.pdf -> Inner West Optical - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: HHMP Google Ads Report.pdf -> HHMP - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Family Focus Legal Google Ads Report.pdf -> Family Focus Legal - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Chem-Dry Austyle Google Ads Report.pdf -> Chem-Dry Austyle - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.FileManager] Renamed: Capital Smiles Google Ads Report.pdf -> Capital Smiles - October 2025 Google Ads Report.pdf [2025-11-06 10:27:48] [INFO] [EmailReports.Orchestrator] Creating approval sheet in Google Sheets [2025-11-06 10:27:48] [INFO] [EmailReports.ApprovalTracker] Loaded credentials from token.json [2025-11-06 10:27:48] [INFO] [EmailReports.ApprovalTracker] Successfully authenticated with Google Sheets API [2025-11-06 10:27:52] [INFO] [EmailReports.ApprovalTracker] Created approval sheet: Email Approvals - November 2025 (ID: 1cdD0vh0uYCn4XBwCvmk0cSgWxf8fzg8C3pzJNA4Nm64) [2025-11-06 10:27:53] [INFO] [EmailReports.ApprovalTracker] Populated 27 emails in approval sheet [2025-11-06 10:27:53] [WARNING] [EmailReports.ApprovalTracker] Could not add data validation: 'Worksheet' object has no attribute 'set_data_validation' [2025-11-06 10:27:54] [INFO] [EmailReports.ApprovalTracker] Added conditional formatting [2025-11-06 10:27:56] [INFO] [EmailReports.ApprovalTracker] Approval sheet ready: https://docs.google.com/spreadsheets/d/1cdD0vh0uYCn4XBwCvmk0cSgWxf8fzg8C3pzJNA4Nm64 [2025-11-06 10:27:56] [INFO] [EmailReports.Orchestrator] Saved email data to data\last_generated_emails.json [2025-11-06 10:27:56] [INFO] [EmailReports.Orchestrator] Generating web preview page [2025-11-06 10:27:56] [INFO] [EmailReports.WebPreview] Generated preview page: output\email_preview_November_2025.html [2025-11-06 10:27:56] [INFO] [EmailReports.Orchestrator] Web preview generated: output\email_preview_November_2025.html ====================================================================== APPROVAL REQUIRED ====================================================================== 📊 Your approval sheet: https://docs.google.com/spreadsheets/d/1cdD0vh0uYCn4XBwCvmk0cSgWxf8fzg8C3pzJNA4Nm64 🌐 Web preview page: file:///C:/Apps/Email Reports/output/email_preview_November_2025.html NEXT STEPS: 1. Open the Google Sheet (link above) OR Open the web preview page (link above) for visual review 2. Review each email's details 3. Change Status to 'Approved' for emails ready to send 4. Add notes for any that need revision When done, run: python main.py --create-drafts [2025-11-06 10:27:56] [INFO] [EmailReports.Orchestrator] Approval sheet created: https://docs.google.com/spreadsheets/d/1cdD0vh0uYCn4XBwCvmk0cSgWxf8fzg8C3pzJNA4Nm64 ============================================================ OPERATION COMPLETE ============================================================ PS C:\Apps\Email Reports>