[2026-03-09 16:27:17] ================================================================= [2026-03-09 16:27:17] BC Multi-Municipality Permit Agent starting... [2026-03-09 16:27:17] Monitoring 8 municipalities [2026-03-09 16:27:18] Scraping: City of Surrey (pdf) [2026-03-09 16:27:18] HTTP GET failed for https://www.surrey.ca/sites/default/files/media/documents/DP-IN-PROCESS.pdf: [2026-03-09 16:27:18] → City of Surrey: no changes detected [2026-03-09 16:27:19] Scraping: Township of Langley (html_portal) [2026-03-09 16:27:19] HTTP GET failed for https://e-connect.tol.ca/OurCity/Prospero/Search.aspx: [2026-03-09 16:27:19] → Township of Langley: no changes detected [2026-03-09 16:27:20] Scraping: City of Abbotsford (arcgis) [2026-03-09 16:27:20] HTTP GET failed for https://maps.abbotsford.ca/arcgis/rest/services/GeocortexExt/WebMap/MapServer/45: [2026-03-09 16:27:20] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-09 16:27:21] Scraping: City of Chilliwack (html_weekly) [2026-03-09 16:27:22] HTTP GET failed for https://www.chilliwack.com/main/page.cfm?id=2186: [2026-03-09 16:27:22] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-09 16:27:23] Scraping: City of Burnaby (pdf) [2026-03-09 16:27:23] HTTP GET failed for https://www.burnaby.ca/sites/default/files/acquiadam/2024-08/Major-Development-P: [2026-03-09 16:27:23] → City of Burnaby: no changes detected [2026-03-09 16:27:24] Scraping: City of Richmond (pdf) [2026-03-09 16:27:24] HTTP GET failed for https://www.richmond.ca/__shared/assets/2025currentdevelopment75120.pdf: [2026-03-09 16:27:24] → City of Richmond: no changes detected [2026-03-09 16:27:25] Scraping: City of Coquitlam (arcgis) [2026-03-09 16:27:25] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-09 16:27:25] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-09 16:27:26] Scraping: City of Delta (civicweb) [2026-03-09 16:27:26] HTTP GET failed for https://www.delta.ca/building-development/development-applications: [2026-03-09 16:27:26] Delta: 0 permits from public pages [2026-03-09 16:27:26] → City of Delta: no permits parsed (site may be unavailable) [2026-03-09 16:27:26] Database: 0 total permits across all municipalities [2026-03-09 16:27:26] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (0 permits, 2 sheets) [2026-03-09 16:27:26] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-09 16:27:26] No new permits this run — no email sent. [2026-03-09 16:27:26] Agent run complete. [2026-03-09 16:27:26] ================================================================= [2026-03-09 16:30:19] ================================================================= [2026-03-09 16:30:19] BC Multi-Municipality Permit Agent starting... [2026-03-09 16:30:19] Monitoring 8 municipalities [2026-03-09 16:30:20] Scraping: City of Surrey (pdf) [2026-03-09 16:30:22] → 533 new permits for City of Surrey (533 total scraped) [2026-03-09 16:30:23] Scraping: Township of Langley (html_portal) [2026-03-09 16:30:25] Langley: extracted 0 permits from portal [2026-03-09 16:30:25] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-09 16:30:26] Scraping: City of Abbotsford (arcgis) [2026-03-09 16:30:26] City of Abbotsford: 0 records from ArcGIS API [2026-03-09 16:30:26] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-09 16:30:27] Scraping: City of Chilliwack (html_weekly) [2026-03-09 16:30:35] Chilliwack total: 4 permits [2026-03-09 16:30:35] → 4 new permits for City of Chilliwack (4 total scraped) [2026-03-09 16:30:36] Scraping: City of Burnaby (pdf) [2026-03-09 16:30:37] → 21 new permits for City of Burnaby (21 total scraped) [2026-03-09 16:30:38] Scraping: City of Richmond (pdf) [2026-03-09 16:30:40] → 351 new permits for City of Richmond (351 total scraped) [2026-03-09 16:30:41] Scraping: City of Coquitlam (arcgis) [2026-03-09 16:30:41] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-09 16:30:41] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-09 16:30:42] Scraping: City of Delta (civicweb) [2026-03-09 16:30:44] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-09 16:30:44] Delta: 0 permits from public pages [2026-03-09 16:30:44] → City of Delta: no permits parsed (site may be unavailable) [2026-03-09 16:30:44] Database: 909 total permits across all municipalities [2026-03-09 16:39:00] ================================================================= [2026-03-09 16:39:00] BC Multi-Municipality Permit Agent starting... [2026-03-09 16:39:00] Monitoring 8 municipalities [2026-03-09 16:39:01] Scraping: City of Surrey (pdf) [2026-03-09 16:39:01] City of Surrey: PDF unchanged, skipping parse [2026-03-09 16:39:01] → City of Surrey: no changes detected [2026-03-09 16:39:02] Scraping: Township of Langley (html_portal) [2026-03-09 16:39:04] Langley: extracted 0 permits from portal [2026-03-09 16:39:04] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-09 16:39:05] Scraping: City of Abbotsford (arcgis) [2026-03-09 16:39:05] City of Abbotsford: 0 records from ArcGIS API [2026-03-09 16:39:05] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-09 16:39:06] Scraping: City of Chilliwack (html_weekly) [2026-03-09 16:39:13] Chilliwack total: 4 permits [2026-03-09 16:39:13] → 0 new permits for City of Chilliwack (4 total scraped) [2026-03-09 16:39:14] Scraping: City of Burnaby (pdf) [2026-03-09 16:39:14] City of Burnaby: PDF unchanged, skipping parse [2026-03-09 16:39:14] → City of Burnaby: no changes detected [2026-03-09 16:39:15] Scraping: City of Richmond (pdf) [2026-03-09 16:39:16] City of Richmond: PDF unchanged, skipping parse [2026-03-09 16:39:16] → City of Richmond: no changes detected [2026-03-09 16:39:17] Scraping: City of Coquitlam (arcgis) [2026-03-09 16:39:17] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-09 16:39:17] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-09 16:39:18] Scraping: City of Delta (civicweb) [2026-03-09 16:39:19] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-09 16:39:19] Delta: 0 permits from public pages [2026-03-09 16:39:19] → City of Delta: no permits parsed (site may be unavailable) [2026-03-09 16:39:19] Database: 909 total permits across all municipalities [2026-03-09 16:39:19] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (909 permits, 6 sheets) [2026-03-09 16:39:19] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-09 16:39:19] No new permits this run — no email sent. [2026-03-09 16:39:19] Agent run complete. [2026-03-09 16:39:19] ================================================================= [2026-03-10 10:15:23] ================================================================= [2026-03-10 10:15:23] BC Multi-Municipality Permit Agent starting... [2026-03-10 10:15:23] Monitoring 8 municipalities [2026-03-10 10:15:24] Scraping: City of Surrey (pdf) [2026-03-10 10:15:25] Surrey PDF: parsed 731 permits [2026-03-10 10:15:25] → 731 new permits for City of Surrey (731 total scraped) [2026-03-10 10:15:26] Scraping: Township of Langley (html_portal) [2026-03-10 10:15:29] Langley: extracted 0 permits from portal [2026-03-10 10:15:29] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-10 10:15:30] Scraping: City of Abbotsford (arcgis) [2026-03-10 10:15:30] City of Abbotsford: 0 records from ArcGIS API [2026-03-10 10:15:30] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-10 10:15:31] Scraping: City of Chilliwack (html_weekly) [2026-03-10 10:15:38] Chilliwack total: 4 permits [2026-03-10 10:15:38] → 4 new permits for City of Chilliwack (4 total scraped) [2026-03-10 10:15:39] Scraping: City of Burnaby (pdf) [2026-03-10 10:15:40] → 21 new permits for City of Burnaby (21 total scraped) [2026-03-10 10:15:41] Scraping: City of Richmond (pdf) [2026-03-10 10:15:43] → 351 new permits for City of Richmond (351 total scraped) [2026-03-10 10:15:44] Scraping: City of Coquitlam (arcgis) [2026-03-10 10:15:44] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-10 10:15:44] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-10 10:15:45] Scraping: City of Delta (civicweb) [2026-03-10 10:15:48] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-10 10:15:48] Delta: 0 permits from public pages [2026-03-10 10:15:48] → City of Delta: no permits parsed (site may be unavailable) [2026-03-10 10:15:48] Database: 1107 total permits across all municipalities [2026-03-10 10:15:49] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1107 permits, 6 sheets) [2026-03-10 10:15:49] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-10 10:15:49] Sending email alert for 1107 new permits... [2026-03-10 10:15:54] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4P223CA0029.NAMP223.PROD.OUTLOOK.COM 2026-03-10T17:15:51.719Z 08DE7E84421DC1C0]') [2026-03-10 10:15:54] Agent run complete. [2026-03-10 10:15:54] ================================================================= [2026-03-16 09:26:51] ================================================================= [2026-03-16 09:26:51] BC Multi-Municipality Permit Agent starting... [2026-03-16 09:26:51] Monitoring 8 municipalities [2026-03-16 09:26:52] Scraping: City of Surrey (pdf) [2026-03-16 09:26:52] City of Surrey: PDF unchanged, skipping parse [2026-03-16 09:26:52] → City of Surrey: no changes detected [2026-03-16 09:26:53] Scraping: Township of Langley (html_portal) [2026-03-16 09:26:55] Langley: extracted 0 permits from portal [2026-03-16 09:26:55] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 09:26:56] Scraping: City of Abbotsford (arcgis) [2026-03-16 09:26:56] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 09:26:56] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 09:26:57] Scraping: City of Chilliwack (html_weekly) [2026-03-16 09:26:58] Chilliwack total: 3 permits [2026-03-16 09:26:58] → 1 new permits for City of Chilliwack (3 total scraped) [2026-03-16 09:26:59] Scraping: City of Burnaby (pdf) [2026-03-16 09:27:01] → 0 new permits for City of Burnaby (21 total scraped) [2026-03-16 09:27:02] Scraping: City of Richmond (pdf) [2026-03-16 09:27:02] City of Richmond: PDF unchanged, skipping parse [2026-03-16 09:27:02] → City of Richmond: no changes detected [2026-03-16 09:27:03] Scraping: City of Coquitlam (arcgis) [2026-03-16 09:27:03] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 09:27:03] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 09:27:04] Scraping: City of Delta (civicweb) [2026-03-16 09:27:06] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 09:27:06] Delta: 0 permits from public pages [2026-03-16 09:27:06] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 09:27:06] Database: 1108 total permits across all municipalities [2026-03-16 09:27:07] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1108 permits, 6 sheets) [2026-03-16 09:27:07] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 09:27:07] Sending email alert for 1 new permits... [2026-03-16 09:27:13] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR03CA0229.namprd03.prod.outlook.com 2026-03-16T16:27:01.668Z 08DE831C9D1D8329]') [2026-03-16 09:27:13] Agent run complete. [2026-03-16 09:27:13] ================================================================= [2026-03-16 11:14:06] ================================================================= [2026-03-16 11:14:06] BC Multi-Municipality Permit Agent starting... [2026-03-16 11:14:06] Monitoring 8 municipalities [2026-03-16 11:14:07] Scraping: City of Surrey (pdf) [2026-03-16 11:14:08] City of Surrey: PDF unchanged, skipping parse [2026-03-16 11:14:08] → City of Surrey: no changes detected [2026-03-16 11:14:09] Scraping: Township of Langley (html_portal) [2026-03-16 11:14:11] Langley: extracted 0 permits from portal [2026-03-16 11:14:11] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 11:14:12] Scraping: City of Abbotsford (arcgis) [2026-03-16 11:14:12] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 11:14:12] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 11:14:13] Scraping: City of Chilliwack (html_weekly) [2026-03-16 11:14:15] Chilliwack total: 3 permits [2026-03-16 11:14:15] → 1 new permits for City of Chilliwack (3 total scraped) [2026-03-16 11:14:16] Scraping: City of Burnaby (pdf) [2026-03-16 11:14:16] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 11:14:16] → City of Burnaby: no changes detected [2026-03-16 11:14:17] Scraping: City of Richmond (pdf) [2026-03-16 11:14:17] City of Richmond: PDF unchanged, skipping parse [2026-03-16 11:14:17] → City of Richmond: no changes detected [2026-03-16 11:14:18] Scraping: City of Coquitlam (arcgis) [2026-03-16 11:14:18] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 11:14:18] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 11:14:19] Scraping: City of Delta (civicweb) [2026-03-16 11:14:22] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 11:14:22] Delta: 0 permits from public pages [2026-03-16 11:14:22] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 11:14:22] Database: 1109 total permits across all municipalities [2026-03-16 11:14:22] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1109 permits, 6 sheets) [2026-03-16 11:14:22] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 11:14:22] Sending email alert for 1 new permits... [2026-03-16 11:14:28] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4P223CA0024.NAMP223.PROD.OUTLOOK.COM 2026-03-16T18:14:11.340Z 08DE830E274DEAFE]') [2026-03-16 11:14:28] Agent run complete. [2026-03-16 11:14:28] ================================================================= [2026-03-16 11:46:53] ================================================================= [2026-03-16 11:46:53] BC Multi-Municipality Permit Agent starting... [2026-03-16 11:46:53] Monitoring 8 municipalities [2026-03-16 11:46:54] Scraping: City of Surrey (pdf) [2026-03-16 11:46:55] City of Surrey: PDF unchanged, skipping parse [2026-03-16 11:46:55] → City of Surrey: no changes detected [2026-03-16 11:46:56] Scraping: Township of Langley (html_portal) [2026-03-16 11:46:58] Langley: extracted 0 permits from portal [2026-03-16 11:46:58] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 11:46:59] Scraping: City of Abbotsford (arcgis) [2026-03-16 11:46:59] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 11:46:59] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 11:47:00] Scraping: City of Chilliwack (html_weekly) [2026-03-16 11:47:01] Chilliwack: downloading latest report (attachID=8384) [2026-03-16 11:47:01] Chilliwack total: 0 permits [2026-03-16 11:47:01] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 11:47:02] Scraping: City of Burnaby (pdf) [2026-03-16 11:47:03] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 11:47:03] → City of Burnaby: no changes detected [2026-03-16 11:47:04] Scraping: City of Richmond (pdf) [2026-03-16 11:47:04] City of Richmond: PDF unchanged, skipping parse [2026-03-16 11:47:04] → City of Richmond: no changes detected [2026-03-16 11:47:05] Scraping: City of Coquitlam (arcgis) [2026-03-16 11:47:05] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 11:47:05] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 11:47:06] Scraping: City of Delta (civicweb) [2026-03-16 11:47:07] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 11:47:07] Delta: 0 permits from public pages [2026-03-16 11:47:07] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 11:47:07] Database: 1109 total permits across all municipalities [2026-03-16 11:47:07] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1109 permits, 10 sheets) [2026-03-16 11:47:07] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 11:47:07] No new permits this run — no email sent. [2026-03-16 11:47:07] Agent run complete. [2026-03-16 11:47:07] ================================================================= [2026-03-16 12:15:06] ================================================================= [2026-03-16 12:15:06] BC Multi-Municipality Permit Agent starting... [2026-03-16 12:15:06] Monitoring 8 municipalities [2026-03-16 12:15:07] Scraping: City of Surrey (pdf) [2026-03-16 12:15:07] City of Surrey: PDF unchanged, skipping parse [2026-03-16 12:15:07] → City of Surrey: no changes detected [2026-03-16 12:15:08] Scraping: Township of Langley (html_portal) [2026-03-16 12:15:10] Langley: extracted 0 permits from portal [2026-03-16 12:15:10] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 12:15:11] Scraping: City of Abbotsford (arcgis) [2026-03-16 12:15:11] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 12:15:11] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 12:15:12] Scraping: City of Chilliwack (html_weekly) [2026-03-16 12:15:12] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 12:15:12] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 12:15:12] Chilliwack: skipping — OCR dependencies not available [2026-03-16 12:15:12] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 12:15:13] Scraping: City of Burnaby (pdf) [2026-03-16 12:15:13] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 12:15:14] Burnaby PDF: parsed 5 permits [2026-03-16 12:15:14] → 5 new permits for City of Burnaby (5 total scraped) [2026-03-16 12:15:15] Scraping: City of Richmond (pdf) [2026-03-16 12:15:15] City of Richmond: PDF unchanged, skipping parse [2026-03-16 12:15:15] → City of Richmond: no changes detected [2026-03-16 12:15:16] Scraping: City of Coquitlam (arcgis) [2026-03-16 12:15:17] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 12:15:17] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 12:15:18] Scraping: City of Delta (civicweb) [2026-03-16 12:15:19] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 12:15:19] Delta: 0 permits from public pages [2026-03-16 12:15:19] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 12:15:19] Database: 1114 total permits across all municipalities [2026-03-16 12:15:19] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1114 permits, 10 sheets) [2026-03-16 12:15:19] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 12:15:19] Sending email alert for 5 new permits... [2026-03-16 12:15:25] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0385.namprd04.prod.outlook.com 2026-03-16T19:15:18.439Z 08DE834BCE3E7D84]') [2026-03-16 12:15:25] Agent run complete. [2026-03-16 12:15:25] ================================================================= [2026-03-16 13:03:26] ================================================================= [2026-03-16 13:03:26] BC Multi-Municipality Permit Agent starting... [2026-03-16 13:03:26] Monitoring 8 municipalities [2026-03-16 13:03:27] Scraping: City of Surrey (pdf) [2026-03-16 13:03:27] City of Surrey: PDF unchanged, skipping parse [2026-03-16 13:03:27] → City of Surrey: no changes detected [2026-03-16 13:03:28] Scraping: Township of Langley (html_portal) [2026-03-16 13:03:30] Langley: extracted 0 permits from portal [2026-03-16 13:03:30] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 13:03:31] Scraping: City of Abbotsford (arcgis) [2026-03-16 13:03:31] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 13:03:31] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 13:03:32] Scraping: City of Chilliwack (html_weekly) [2026-03-16 13:03:32] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 13:03:32] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 13:03:32] Chilliwack: skipping — OCR dependencies not available [2026-03-16 13:03:32] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 13:03:33] Scraping: City of Burnaby (pdf) [2026-03-16 13:03:34] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 13:03:35] Burnaby PDF: parsed 129 permits [2026-03-16 13:03:35] → 125 new permits for City of Burnaby (129 total scraped) [2026-03-16 13:03:36] Scraping: City of Richmond (pdf) [2026-03-16 13:03:36] City of Richmond: PDF unchanged, skipping parse [2026-03-16 13:03:36] → City of Richmond: no changes detected [2026-03-16 13:03:37] Scraping: City of Coquitlam (arcgis) [2026-03-16 13:03:37] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 13:03:37] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 13:03:38] Scraping: City of Delta (civicweb) [2026-03-16 13:03:39] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 13:03:39] Delta: 0 permits from public pages [2026-03-16 13:03:39] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 13:03:39] Database: 1239 total permits across all municipalities [2026-03-16 13:03:40] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1239 permits, 10 sheets) [2026-03-16 13:03:40] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 13:03:40] Sending email alert for 125 new permits... [2026-03-16 13:03:45] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0370.namprd04.prod.outlook.com 2026-03-16T20:03:43.689Z 08DE82CFDF61DDED]') [2026-03-16 13:03:45] Agent run complete. [2026-03-16 13:03:45] ================================================================= [2026-03-16 13:22:27] ================================================================= [2026-03-16 13:22:27] BC Multi-Municipality Permit Agent starting... [2026-03-16 13:22:27] Monitoring 8 municipalities [2026-03-16 13:22:28] Scraping: City of Surrey (pdf) [2026-03-16 13:22:28] City of Surrey: PDF unchanged, skipping parse [2026-03-16 13:22:28] → City of Surrey: no changes detected [2026-03-16 13:22:29] Scraping: Township of Langley (html_portal) [2026-03-16 13:22:31] Langley: extracted 0 permits from portal [2026-03-16 13:22:31] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 13:22:32] Scraping: City of Abbotsford (arcgis) [2026-03-16 13:22:32] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 13:22:32] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 13:22:33] Scraping: City of Chilliwack (html_weekly) [2026-03-16 13:22:33] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 13:22:33] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 13:22:33] Chilliwack: skipping — OCR dependencies not available [2026-03-16 13:22:33] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 13:22:34] Scraping: City of Burnaby (pdf) [2026-03-16 13:22:35] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 13:22:36] Burnaby PDF: parsed 0 permits [2026-03-16 13:22:36] → City of Burnaby: no permits parsed (site may be unavailable) [2026-03-16 13:22:37] Scraping: City of Richmond (pdf) [2026-03-16 13:22:37] City of Richmond: PDF unchanged, skipping parse [2026-03-16 13:22:37] → City of Richmond: no changes detected [2026-03-16 13:22:38] Scraping: City of Coquitlam (arcgis) [2026-03-16 13:22:38] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 13:22:38] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 13:22:39] Scraping: City of Delta (civicweb) [2026-03-16 13:22:40] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 13:22:40] Delta: 0 permits from public pages [2026-03-16 13:22:40] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 13:22:40] Database: 1088 total permits across all municipalities [2026-03-16 13:22:40] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1088 permits, 10 sheets) [2026-03-16 13:22:40] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 13:22:40] No new permits this run — no email sent. [2026-03-16 13:22:40] Agent run complete. [2026-03-16 13:22:40] ================================================================= [2026-03-16 13:38:48] ================================================================= [2026-03-16 13:38:48] BC Multi-Municipality Permit Agent starting... [2026-03-16 13:38:48] Monitoring 8 municipalities [2026-03-16 13:38:49] Scraping: City of Surrey (pdf) [2026-03-16 13:38:50] City of Surrey: PDF unchanged, skipping parse [2026-03-16 13:38:50] → City of Surrey: no changes detected [2026-03-16 13:38:51] Scraping: Township of Langley (html_portal) [2026-03-16 13:38:53] Langley: extracted 0 permits from portal [2026-03-16 13:38:53] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 13:38:54] Scraping: City of Abbotsford (arcgis) [2026-03-16 13:38:54] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 13:38:54] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 13:38:55] Scraping: City of Chilliwack (html_weekly) [2026-03-16 13:38:55] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 13:38:55] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 13:38:55] Chilliwack: skipping — OCR dependencies not available [2026-03-16 13:38:55] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 13:38:56] Scraping: City of Burnaby (pdf) [2026-03-16 13:38:56] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 13:38:57] Burnaby PDF: parsed 62 permits [2026-03-16 13:38:57] → 62 new permits for City of Burnaby (62 total scraped) [2026-03-16 13:38:58] Scraping: City of Richmond (pdf) [2026-03-16 13:38:58] City of Richmond: PDF unchanged, skipping parse [2026-03-16 13:38:58] → City of Richmond: no changes detected [2026-03-16 13:38:59] Scraping: City of Coquitlam (arcgis) [2026-03-16 13:38:59] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 13:38:59] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 13:39:00] Scraping: City of Delta (civicweb) [2026-03-16 13:39:01] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 13:39:01] Delta: 0 permits from public pages [2026-03-16 13:39:01] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 13:39:01] Database: 1150 total permits across all municipalities [2026-03-16 13:39:02] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1150 permits, 10 sheets) [2026-03-16 13:39:02] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 13:39:02] Sending email alert for 62 new permits... [2026-03-16 13:39:07] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR03CA0110.namprd03.prod.outlook.com 2026-03-16T20:39:02.923Z 08DE8356C1D8F1F9]') [2026-03-16 13:39:07] Agent run complete. [2026-03-16 13:39:07] ================================================================= [2026-03-16 13:48:53] ================================================================= [2026-03-16 13:48:53] BC Multi-Municipality Permit Agent starting... [2026-03-16 13:48:53] Monitoring 8 municipalities [2026-03-16 13:48:54] Scraping: City of Surrey (pdf) [2026-03-16 13:48:54] City of Surrey: PDF unchanged, skipping parse [2026-03-16 13:48:54] → City of Surrey: no changes detected [2026-03-16 13:48:55] Scraping: Township of Langley (html_portal) [2026-03-16 13:48:57] Langley: extracted 0 permits from portal [2026-03-16 13:48:57] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 13:48:58] Scraping: City of Abbotsford (arcgis) [2026-03-16 13:48:58] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 13:48:58] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 13:48:59] Scraping: City of Chilliwack (html_weekly) [2026-03-16 13:48:59] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 13:48:59] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 13:48:59] Chilliwack: skipping — OCR dependencies not available [2026-03-16 13:48:59] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 13:49:00] Scraping: City of Burnaby (pdf) [2026-03-16 13:49:01] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 13:49:02] Burnaby PDF: parsed 134 permits [2026-03-16 13:49:02] → 133 new permits for City of Burnaby (134 total scraped) [2026-03-16 13:49:03] Scraping: City of Richmond (pdf) [2026-03-16 13:49:03] City of Richmond: PDF unchanged, skipping parse [2026-03-16 13:49:03] → City of Richmond: no changes detected [2026-03-16 13:49:04] Scraping: City of Coquitlam (arcgis) [2026-03-16 13:49:04] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 13:49:04] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 13:49:05] Scraping: City of Delta (civicweb) [2026-03-16 13:49:05] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 13:49:05] Delta: 0 permits from public pages [2026-03-16 13:49:05] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 13:49:05] Database: 1283 total permits across all municipalities [2026-03-16 13:49:06] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1283 permits, 10 sheets) [2026-03-16 13:49:06] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 13:49:06] Sending email alert for 133 new permits... [2026-03-16 13:49:12] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4P221CA0001.NAMP221.PROD.OUTLOOK.COM 2026-03-16T20:49:06.625Z 08DE835BFAF85683]') [2026-03-16 13:49:12] Agent run complete. [2026-03-16 13:49:12] ================================================================= [2026-03-16 13:54:53] ================================================================= [2026-03-16 13:54:53] BC Multi-Municipality Permit Agent starting... [2026-03-16 13:54:53] Monitoring 8 municipalities [2026-03-16 13:54:54] Scraping: City of Surrey (pdf) [2026-03-16 13:54:54] City of Surrey: PDF unchanged, skipping parse [2026-03-16 13:54:54] → City of Surrey: no changes detected [2026-03-16 13:54:55] Scraping: Township of Langley (html_portal) [2026-03-16 13:54:57] Langley: extracted 0 permits from portal [2026-03-16 13:54:57] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 13:54:58] Scraping: City of Abbotsford (arcgis) [2026-03-16 13:54:58] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 13:54:58] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 13:54:59] Scraping: City of Chilliwack (html_weekly) [2026-03-16 13:54:59] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 13:54:59] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 13:54:59] Chilliwack: skipping — OCR dependencies not available [2026-03-16 13:54:59] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 13:55:00] Scraping: City of Burnaby (pdf) [2026-03-16 13:55:01] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 13:55:01] → City of Burnaby: no changes detected [2026-03-16 13:55:02] Scraping: City of Richmond (pdf) [2026-03-16 13:55:02] City of Richmond: PDF unchanged, skipping parse [2026-03-16 13:55:02] → City of Richmond: no changes detected [2026-03-16 13:55:03] Scraping: City of Coquitlam (arcgis) [2026-03-16 13:55:03] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 13:55:03] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 13:55:04] Scraping: City of Delta (civicweb) [2026-03-16 13:55:04] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 13:55:04] Delta: 0 permits from public pages [2026-03-16 13:55:04] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 13:55:04] Database: 1222 total permits across all municipalities [2026-03-16 13:55:05] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 13:55:05] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 13:55:05] No new permits this run — no email sent. [2026-03-16 13:55:05] Agent run complete. [2026-03-16 13:55:05] ================================================================= [2026-03-16 14:07:08] ================================================================= [2026-03-16 14:07:08] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:07:08] Monitoring 8 municipalities [2026-03-16 14:07:09] Scraping: City of Surrey (pdf) [2026-03-16 14:07:09] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:07:09] → City of Surrey: no changes detected [2026-03-16 14:07:10] Scraping: Township of Langley (html_portal) [2026-03-16 14:07:12] Langley: extracted 0 permits from portal [2026-03-16 14:07:12] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:07:13] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:07:13] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:07:13] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:07:14] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:07:14] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:07:14] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:07:14] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:07:14] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:07:15] Scraping: City of Burnaby (pdf) [2026-03-16 14:07:15] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 14:07:15] → City of Burnaby: no changes detected [2026-03-16 14:07:16] Scraping: City of Richmond (pdf) [2026-03-16 14:07:17] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:07:17] → City of Richmond: no changes detected [2026-03-16 14:07:18] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:07:18] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:07:18] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:07:19] Scraping: City of Delta (civicweb) [2026-03-16 14:07:20] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:07:20] Delta: 0 permits from public pages [2026-03-16 14:07:20] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:07:20] Database: 1222 total permits across all municipalities [2026-03-16 14:07:21] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:07:21] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:07:21] No new permits this run — no email sent. [2026-03-16 14:07:21] Agent run complete. [2026-03-16 14:07:21] ================================================================= [2026-03-16 14:14:40] ================================================================= [2026-03-16 14:14:40] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:14:40] Monitoring 8 municipalities [2026-03-16 14:14:41] Scraping: City of Surrey (pdf) [2026-03-16 14:14:41] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:14:41] → City of Surrey: no changes detected [2026-03-16 14:14:42] Scraping: Township of Langley (html_portal) [2026-03-16 14:14:44] Langley: extracted 0 permits from portal [2026-03-16 14:14:44] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:14:45] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:14:45] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:14:45] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:14:46] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:14:46] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:14:46] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:14:46] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:14:46] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:14:47] Scraping: City of Burnaby (pdf) [2026-03-16 14:14:48] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 14:14:49] Burnaby PDF: parsed 134 permits [2026-03-16 14:14:49] → 0 new permits for City of Burnaby (134 total scraped) [2026-03-16 14:14:50] Scraping: City of Richmond (pdf) [2026-03-16 14:14:50] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:14:50] → City of Richmond: no changes detected [2026-03-16 14:14:51] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:14:51] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:14:51] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:14:52] Scraping: City of Delta (civicweb) [2026-03-16 14:14:53] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:14:53] Delta: 0 permits from public pages [2026-03-16 14:14:53] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:14:53] Database: 1222 total permits across all municipalities [2026-03-16 14:14:53] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:14:53] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:14:53] No new permits this run — no email sent. [2026-03-16 14:14:53] Agent run complete. [2026-03-16 14:14:53] ================================================================= [2026-03-16 14:25:09] ================================================================= [2026-03-16 14:25:09] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:25:09] Monitoring 8 municipalities [2026-03-16 14:25:10] Scraping: City of Surrey (pdf) [2026-03-16 14:25:10] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:25:10] → City of Surrey: no changes detected [2026-03-16 14:25:11] Scraping: Township of Langley (html_portal) [2026-03-16 14:25:13] Langley: extracted 0 permits from portal [2026-03-16 14:25:13] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:25:14] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:25:14] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:25:14] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:25:15] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:25:15] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:25:15] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:25:15] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:25:15] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:25:16] Scraping: City of Burnaby (pdf) [2026-03-16 14:25:17] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 14:25:17] Burnaby PDF: parsed 134 permits [2026-03-16 14:25:17] → 0 new permits for City of Burnaby (134 total scraped) [2026-03-16 14:25:18] Scraping: City of Richmond (pdf) [2026-03-16 14:25:19] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:25:19] → City of Richmond: no changes detected [2026-03-16 14:25:20] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:25:20] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:25:20] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:25:21] Scraping: City of Delta (civicweb) [2026-03-16 14:25:21] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:25:21] Delta: 0 permits from public pages [2026-03-16 14:25:21] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:25:21] Database: 1222 total permits across all municipalities [2026-03-16 14:25:22] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:25:22] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:25:22] No new permits this run — no email sent. [2026-03-16 14:25:22] Agent run complete. [2026-03-16 14:25:22] ================================================================= [2026-03-16 14:29:14] ================================================================= [2026-03-16 14:29:14] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:29:14] Monitoring 8 municipalities [2026-03-16 14:29:15] Scraping: City of Surrey (pdf) [2026-03-16 14:29:15] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:29:15] → City of Surrey: no changes detected [2026-03-16 14:29:16] Scraping: Township of Langley (html_portal) [2026-03-16 14:29:19] Langley: extracted 0 permits from portal [2026-03-16 14:29:19] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:29:20] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:29:20] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:29:20] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:29:21] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:29:21] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:29:21] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:29:21] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:29:21] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:29:22] Scraping: City of Burnaby (pdf) [2026-03-16 14:29:22] City of Burnaby: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 14:29:23] Burnaby PDF: parsed 134 permits [2026-03-16 14:29:23] → 0 new permits for City of Burnaby (134 total scraped) [2026-03-16 14:29:24] Scraping: City of Richmond (pdf) [2026-03-16 14:29:24] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:29:24] → City of Richmond: no changes detected [2026-03-16 14:29:25] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:29:25] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:29:25] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:29:26] Scraping: City of Delta (civicweb) [2026-03-16 14:29:27] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:29:27] Delta: 0 permits from public pages [2026-03-16 14:29:27] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:29:27] Database: 1222 total permits across all municipalities [2026-03-16 14:29:28] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:29:28] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:29:28] No new permits this run — no email sent. [2026-03-16 14:29:28] Agent run complete. [2026-03-16 14:29:28] ================================================================= [2026-03-16 14:38:51] ================================================================= [2026-03-16 14:38:51] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:38:51] Monitoring 8 municipalities [2026-03-16 14:38:52] Scraping: City of Surrey (pdf) [2026-03-16 14:38:52] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:38:52] → City of Surrey: no changes detected [2026-03-16 14:38:53] Scraping: Township of Langley (html_portal) [2026-03-16 14:38:55] Langley: extracted 0 permits from portal [2026-03-16 14:38:55] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:38:56] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:38:56] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:38:56] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:38:57] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:38:57] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:38:57] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:38:57] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:38:57] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:38:58] Scraping: City of Burnaby (pdf) [2026-03-16 14:38:59] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 14:38:59] → City of Burnaby: no changes detected [2026-03-16 14:39:00] Scraping: City of Richmond (pdf) [2026-03-16 14:39:00] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:39:00] → City of Richmond: no changes detected [2026-03-16 14:39:01] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:39:01] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:39:01] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:39:02] Scraping: City of Delta (civicweb) [2026-03-16 14:39:03] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:39:03] Delta: 0 permits from public pages [2026-03-16 14:39:03] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:39:03] Database: 1222 total permits across all municipalities [2026-03-16 14:39:04] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:39:04] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:39:04] No new permits this run — no email sent. [2026-03-16 14:39:04] Agent run complete. [2026-03-16 14:39:04] ================================================================= [2026-03-16 14:39:45] ================================================================= [2026-03-16 14:39:45] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:39:45] Monitoring 8 municipalities [2026-03-16 14:39:46] Scraping: City of Surrey (pdf) [2026-03-16 14:39:46] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:39:46] → City of Surrey: no changes detected [2026-03-16 14:39:47] Scraping: Township of Langley (html_portal) [2026-03-16 14:39:49] Langley: extracted 0 permits from portal [2026-03-16 14:39:49] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:39:50] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:39:50] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:39:50] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:39:51] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:39:51] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:39:51] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:39:51] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:39:51] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:39:52] Scraping: City of Burnaby (pdf) [2026-03-16 14:39:53] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 14:39:53] → City of Burnaby: no changes detected [2026-03-16 14:39:54] Scraping: City of Richmond (pdf) [2026-03-16 14:39:54] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:39:54] → City of Richmond: no changes detected [2026-03-16 14:39:55] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:39:55] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:39:55] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:39:56] Scraping: City of Delta (civicweb) [2026-03-16 14:39:59] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:39:59] Delta: 0 permits from public pages [2026-03-16 14:39:59] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:39:59] Database: 1222 total permits across all municipalities [2026-03-16 14:40:00] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:40:00] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:40:00] No new permits this run — no email sent. [2026-03-16 14:40:00] Agent run complete. [2026-03-16 14:40:00] ================================================================= [2026-03-16 14:50:44] ================================================================= [2026-03-16 14:50:44] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:50:44] Monitoring 8 municipalities [2026-03-16 14:50:45] Scraping: City of Surrey (pdf) [2026-03-16 14:50:45] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:50:45] → City of Surrey: no changes detected [2026-03-16 14:50:46] Scraping: Township of Langley (html_portal) [2026-03-16 14:50:48] Langley: extracted 0 permits from portal [2026-03-16 14:50:48] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:50:49] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:50:49] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:50:49] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:50:50] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:50:50] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:50:50] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:50:50] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:50:50] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:50:51] Scraping: City of Burnaby (pdf) [2026-03-16 14:50:52] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 14:50:52] → City of Burnaby: no changes detected [2026-03-16 14:50:53] Scraping: City of Richmond (pdf) [2026-03-16 14:50:53] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:50:53] → City of Richmond: no changes detected [2026-03-16 14:50:54] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:50:54] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:50:54] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:50:55] Scraping: City of Delta (civicweb) [2026-03-16 14:50:58] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:50:58] Delta: 0 permits from public pages [2026-03-16 14:50:58] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:50:58] Database: 1222 total permits across all municipalities [2026-03-16 14:50:59] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:50:59] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:50:59] No new permits this run — no email sent. [2026-03-16 14:50:59] Agent run complete. [2026-03-16 14:50:59] ================================================================= [2026-03-16 14:51:35] ================================================================= [2026-03-16 14:51:35] BC Multi-Municipality Permit Agent starting... [2026-03-16 14:51:35] Monitoring 8 municipalities [2026-03-16 14:51:36] Scraping: City of Surrey (pdf) [2026-03-16 14:51:36] City of Surrey: PDF unchanged, skipping parse [2026-03-16 14:51:36] → City of Surrey: no changes detected [2026-03-16 14:51:37] Scraping: Township of Langley (html_portal) [2026-03-16 14:51:39] Langley: extracted 0 permits from portal [2026-03-16 14:51:39] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 14:51:40] Scraping: City of Abbotsford (arcgis) [2026-03-16 14:51:40] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 14:51:40] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 14:51:41] Scraping: City of Chilliwack (html_weekly) [2026-03-16 14:51:41] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 14:51:41] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 14:51:41] Chilliwack: skipping — OCR dependencies not available [2026-03-16 14:51:41] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 14:51:42] Scraping: City of Burnaby (pdf) [2026-03-16 14:51:42] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 14:51:42] → City of Burnaby: no changes detected [2026-03-16 14:51:43] Scraping: City of Richmond (pdf) [2026-03-16 14:51:43] City of Richmond: PDF unchanged, skipping parse [2026-03-16 14:51:43] → City of Richmond: no changes detected [2026-03-16 14:51:44] Scraping: City of Coquitlam (arcgis) [2026-03-16 14:51:44] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 14:51:44] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 14:51:45] Scraping: City of Delta (civicweb) [2026-03-16 14:51:46] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 14:51:46] Delta: 0 permits from public pages [2026-03-16 14:51:46] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 14:51:46] Database: 1222 total permits across all municipalities [2026-03-16 14:51:47] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1222 permits, 10 sheets) [2026-03-16 14:51:47] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 14:51:47] No new permits this run — no email sent. [2026-03-16 14:51:47] Agent run complete. [2026-03-16 14:51:47] ================================================================= [2026-03-16 15:07:50] ================================================================= [2026-03-16 15:07:50] BC Multi-Municipality Permit Agent starting... [2026-03-16 15:07:50] Monitoring 8 municipalities [2026-03-16 15:07:51] Scraping: City of Surrey (pdf) [2026-03-16 15:07:51] City of Surrey: PDF unchanged, skipping parse [2026-03-16 15:07:51] → City of Surrey: no changes detected [2026-03-16 15:07:52] Scraping: Township of Langley (html_portal) [2026-03-16 15:07:54] Langley: extracted 0 permits from portal [2026-03-16 15:07:54] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 15:07:55] Scraping: City of Abbotsford (arcgis) [2026-03-16 15:07:55] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 15:07:55] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 15:07:56] Scraping: City of Chilliwack (html_weekly) [2026-03-16 15:07:56] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 15:07:56] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 15:07:56] Chilliwack: skipping — OCR dependencies not available [2026-03-16 15:07:56] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 15:07:57] Scraping: City of Burnaby (pdf) [2026-03-16 15:07:57] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 15:07:57] → City of Burnaby: no changes detected [2026-03-16 15:07:58] Scraping: City of Richmond (pdf) [2026-03-16 15:07:58] City of Richmond: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 15:08:01] Richmond PDF: parsed 596 permits [2026-03-16 15:08:01] → 0 new permits for City of Richmond (596 total scraped) [2026-03-16 15:08:02] Scraping: City of Coquitlam (arcgis) [2026-03-16 15:08:02] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 15:08:02] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 15:08:03] Scraping: City of Delta (civicweb) [2026-03-16 15:08:05] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 15:08:05] Delta: 0 permits from public pages [2026-03-16 15:08:05] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 15:08:05] Database: 1467 total permits across all municipalities [2026-03-16 15:08:06] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1467 permits, 10 sheets) [2026-03-16 15:08:06] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 15:08:06] No new permits this run — no email sent. [2026-03-16 15:08:06] Agent run complete. [2026-03-16 15:08:06] ================================================================= [2026-03-16 15:08:34] ================================================================= [2026-03-16 15:08:34] BC Multi-Municipality Permit Agent starting... [2026-03-16 15:08:34] Monitoring 8 municipalities [2026-03-16 15:08:35] Scraping: City of Surrey (pdf) [2026-03-16 15:08:35] City of Surrey: PDF unchanged, skipping parse [2026-03-16 15:08:35] → City of Surrey: no changes detected [2026-03-16 15:08:36] Scraping: Township of Langley (html_portal) [2026-03-16 15:08:38] Langley: extracted 0 permits from portal [2026-03-16 15:08:38] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 15:08:39] Scraping: City of Abbotsford (arcgis) [2026-03-16 15:08:39] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 15:08:39] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 15:08:40] Scraping: City of Chilliwack (html_weekly) [2026-03-16 15:08:40] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 15:08:40] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 15:08:40] Chilliwack: skipping — OCR dependencies not available [2026-03-16 15:08:40] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 15:08:42] Scraping: City of Burnaby (pdf) [2026-03-16 15:08:42] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 15:08:42] → City of Burnaby: no changes detected [2026-03-16 15:08:43] Scraping: City of Richmond (pdf) [2026-03-16 15:08:43] City of Richmond: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 15:08:45] Richmond PDF: parsed 596 permits [2026-03-16 15:08:45] → 0 new permits for City of Richmond (596 total scraped) [2026-03-16 15:08:46] Scraping: City of Coquitlam (arcgis) [2026-03-16 15:08:46] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 15:08:46] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 15:08:47] Scraping: City of Delta (civicweb) [2026-03-16 15:08:48] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 15:08:48] Delta: 0 permits from public pages [2026-03-16 15:08:48] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 15:08:48] Database: 1467 total permits across all municipalities [2026-03-16 15:08:49] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1467 permits, 10 sheets) [2026-03-16 15:08:49] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 15:08:49] No new permits this run — no email sent. [2026-03-16 15:08:49] Agent run complete. [2026-03-16 15:08:49] ================================================================= [2026-03-16 15:19:08] ================================================================= [2026-03-16 15:19:08] BC Multi-Municipality Permit Agent starting... [2026-03-16 15:19:08] Monitoring 8 municipalities [2026-03-16 15:19:09] Scraping: City of Surrey (pdf) [2026-03-16 15:19:09] City of Surrey: PDF unchanged, skipping parse [2026-03-16 15:19:09] → City of Surrey: no changes detected [2026-03-16 15:19:10] Scraping: Township of Langley (html_portal) [2026-03-16 15:19:12] Langley: extracted 0 permits from portal [2026-03-16 15:19:12] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 15:19:13] Scraping: City of Abbotsford (arcgis) [2026-03-16 15:19:14] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 15:19:14] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 15:19:15] Scraping: City of Chilliwack (html_weekly) [2026-03-16 15:19:15] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 15:19:15] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 15:19:15] Chilliwack: skipping — OCR dependencies not available [2026-03-16 15:19:15] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 15:19:16] Scraping: City of Burnaby (pdf) [2026-03-16 15:19:16] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 15:19:16] → City of Burnaby: no changes detected [2026-03-16 15:19:17] Scraping: City of Richmond (pdf) [2026-03-16 15:19:17] City of Richmond: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 15:19:20] Richmond PDF: parsed 596 permits [2026-03-16 15:19:20] → 0 new permits for City of Richmond (596 total scraped) [2026-03-16 15:19:21] Scraping: City of Coquitlam (arcgis) [2026-03-16 15:19:21] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 15:19:21] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 15:19:22] Scraping: City of Delta (civicweb) [2026-03-16 15:19:23] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 15:19:23] Delta: 0 permits from public pages [2026-03-16 15:19:23] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 15:19:23] Database: 1467 total permits across all municipalities [2026-03-16 15:19:24] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1467 permits, 10 sheets) [2026-03-16 15:19:24] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 15:19:24] No new permits this run — no email sent. [2026-03-16 15:19:24] Agent run complete. [2026-03-16 15:19:24] ================================================================= [2026-03-16 15:28:21] ================================================================= [2026-03-16 15:28:21] BC Multi-Municipality Permit Agent starting... [2026-03-16 15:28:21] Monitoring 8 municipalities [2026-03-16 15:28:22] Scraping: City of Surrey (pdf) [2026-03-16 15:28:22] City of Surrey: PDF unchanged, skipping parse [2026-03-16 15:28:22] → City of Surrey: no changes detected [2026-03-16 15:28:23] Scraping: Township of Langley (html_portal) [2026-03-16 15:28:25] Langley: extracted 0 permits from portal [2026-03-16 15:28:25] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-16 15:28:26] Scraping: City of Abbotsford (arcgis) [2026-03-16 15:28:27] City of Abbotsford: 0 records from ArcGIS API [2026-03-16 15:28:27] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-16 15:28:28] Scraping: City of Chilliwack (html_weekly) [2026-03-16 15:28:28] Installing OCR dependencies (one-time, may take a minute)... [2026-03-16 15:28:28] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-16 15:28:28] Chilliwack: skipping — OCR dependencies not available [2026-03-16 15:28:28] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-16 15:28:29] Scraping: City of Burnaby (pdf) [2026-03-16 15:28:29] City of Burnaby: PDF unchanged, skipping parse [2026-03-16 15:28:29] → City of Burnaby: no changes detected [2026-03-16 15:28:30] Scraping: City of Richmond (pdf) [2026-03-16 15:28:30] City of Richmond: no saved hash — find_new() will deduplicate against existing DB [2026-03-16 15:28:33] Richmond PDF: parsed 596 permits [2026-03-16 15:28:33] → 0 new permits for City of Richmond (596 total scraped) [2026-03-16 15:28:34] Scraping: City of Coquitlam (arcgis) [2026-03-16 15:28:34] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-16 15:28:34] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-16 15:28:35] Scraping: City of Delta (civicweb) [2026-03-16 15:28:37] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-16 15:28:37] Delta: 0 permits from public pages [2026-03-16 15:28:37] → City of Delta: no permits parsed (site may be unavailable) [2026-03-16 15:28:37] Database: 1467 total permits across all municipalities [2026-03-16 15:28:38] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1467 permits, 10 sheets) [2026-03-16 15:28:38] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-16 15:28:38] No new permits this run — no email sent. [2026-03-16 15:28:38] Agent run complete. [2026-03-16 15:28:38] ================================================================= [2026-03-26 15:46:05] ================================================================= [2026-03-26 15:46:05] BC Multi-Municipality Permit Agent starting... [2026-03-26 15:46:05] Monitoring 8 municipalities [2026-03-26 15:46:06] Scraping: City of Surrey (pdf) [2026-03-26 15:46:07] City of Surrey: PDF unchanged, skipping parse [2026-03-26 15:46:07] → City of Surrey: no changes detected [2026-03-26 15:46:08] Scraping: Township of Langley (html_portal) [2026-03-26 15:46:10] Langley: extracted 0 permits from portal [2026-03-26 15:46:10] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-26 15:46:11] Scraping: City of Abbotsford (arcgis) [2026-03-26 15:46:11] City of Abbotsford: 0 records from ArcGIS API [2026-03-26 15:46:11] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-26 15:46:12] Scraping: City of Chilliwack (html_weekly) [2026-03-26 15:46:12] Installing OCR dependencies (one-time, may take a minute)... [2026-03-26 15:46:12] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-26 15:46:12] Chilliwack: skipping — OCR dependencies not available [2026-03-26 15:46:12] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-26 15:46:13] Scraping: City of Burnaby (pdf) [2026-03-26 15:46:14] Burnaby PDF: parsed 135 permits [2026-03-26 15:46:14] → 5 new permits for City of Burnaby (135 total scraped) [2026-03-26 15:46:15] Scraping: City of Richmond (pdf) [2026-03-26 15:46:16] City of Richmond: PDF unchanged, skipping parse [2026-03-26 15:46:16] → City of Richmond: no changes detected [2026-03-26 15:46:17] Scraping: City of Coquitlam (arcgis) [2026-03-26 15:46:17] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-26 15:46:17] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-26 15:46:18] Scraping: City of Delta (civicweb) [2026-03-26 15:46:19] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-26 15:46:19] Delta: 0 permits from public pages [2026-03-26 15:46:19] → City of Delta: no permits parsed (site may be unavailable) [2026-03-26 15:46:19] Geocoding 1472 permits (this may take a minute)... [2026-03-26 16:13:24] Geocoded 0 of 1472 permits [2026-03-26 16:13:24] Database: 1472 total permits across all municipalities [2026-03-26 16:13:25] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1472 permits, 10 sheets) [2026-03-26 16:13:25] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-26 16:13:25] Sending email alert for 5 new permits... [2026-03-26 16:14:05] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0340.namprd04.prod.outlook.com 2026-03-26T23:14:05.907Z 08DE8AC2D55CA9C2]') [2026-03-26 16:14:05] Agent run complete. [2026-03-26 16:14:05] ================================================================= [2026-03-27 08:05:43] ================================================================= [2026-03-27 08:05:43] BC Multi-Municipality Permit Agent starting... [2026-03-27 08:05:43] Monitoring 8 municipalities [2026-03-27 08:05:44] Scraping: City of Surrey (pdf) [2026-03-27 08:05:44] City of Surrey: PDF unchanged, skipping parse [2026-03-27 08:05:44] → City of Surrey: no changes detected [2026-03-27 08:05:45] Scraping: Township of Langley (html_portal) [2026-03-27 08:05:47] Langley: extracted 0 permits from portal [2026-03-27 08:05:47] → Township of Langley: no permits parsed (site may be unavailable) [2026-03-27 08:05:48] Scraping: City of Abbotsford (arcgis) [2026-03-27 08:05:48] City of Abbotsford: 0 records from ArcGIS API [2026-03-27 08:05:48] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-27 08:05:49] Scraping: City of Chilliwack (html_weekly) [2026-03-27 08:05:49] Installing OCR dependencies (one-time, may take a minute)... [2026-03-27 08:05:49] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-27 08:05:49] Chilliwack: skipping — OCR dependencies not available [2026-03-27 08:05:49] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-27 08:05:50] Scraping: City of Burnaby (pdf) [2026-03-27 08:05:51] City of Burnaby: PDF unchanged, skipping parse [2026-03-27 08:05:51] → City of Burnaby: no changes detected [2026-03-27 08:05:52] Scraping: City of Richmond (pdf) [2026-03-27 08:05:52] City of Richmond: PDF unchanged, skipping parse [2026-03-27 08:05:52] → City of Richmond: no changes detected [2026-03-27 08:05:53] Scraping: City of Coquitlam (arcgis) [2026-03-27 08:05:53] HTTP GET failed for https://gis.coquitlam.ca/arcgis/rest/services/Public/Development_Applications/Ma: [2026-03-27 08:05:53] → City of Coquitlam: no permits parsed (site may be unavailable) [2026-03-27 08:05:54] Scraping: City of Delta (civicweb) [2026-03-27 08:05:55] HTTP GET failed for https://www.delta.ca/building-development/development-applications: HTTP Error 404: Not Found [2026-03-27 08:05:55] Delta: 0 permits from public pages [2026-03-27 08:05:55] → City of Delta: no permits parsed (site may be unavailable) [2026-03-27 08:05:55] Geocoding 1472 permits (this may take a minute)... [2026-03-27 08:32:59] Geocoded 0 of 1472 permits [2026-03-27 08:32:59] Database: 1472 total permits across all municipalities [2026-03-27 08:33:00] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (1472 permits, 10 sheets) [2026-03-27 08:33:00] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-27 08:33:00] No new permits this run — no email sent. [2026-03-27 08:33:00] Agent run complete. [2026-03-27 08:33:00] ================================================================= [2026-03-29 20:23:59] ================================================================= [2026-03-29 20:23:59] Orion Permit Agent starting (BC + Calgary)... [2026-03-29 20:23:59] Monitoring 9 municipalities [2026-03-29 20:24:00] Scraping: City of Surrey (pdf) [2026-03-29 20:24:00] City of Surrey: PDF unchanged, skipping parse [2026-03-29 20:24:00] → City of Surrey: no changes detected [2026-03-29 20:24:01] Scraping: Township of Langley (html_portal) [2026-03-29 20:24:03] Langley: extracted 776 permits from FeatureServer [2026-03-29 20:24:03] → 776 new permits for Township of Langley (776 total scraped) [2026-03-29 20:24:04] Scraping: City of Abbotsford (arcgis) [2026-03-29 20:24:04] City of Abbotsford: 0 records from ArcGIS API [2026-03-29 20:24:04] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-03-29 20:24:05] Scraping: City of Chilliwack (html_weekly) [2026-03-29 20:24:05] Installing OCR dependencies (one-time, may take a minute)... [2026-03-29 20:24:05] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-29 20:24:05] Chilliwack: skipping — OCR dependencies not available [2026-03-29 20:24:05] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-29 20:24:06] Scraping: City of Burnaby (pdf) [2026-03-29 20:24:07] City of Burnaby: PDF unchanged, skipping parse [2026-03-29 20:24:07] → City of Burnaby: no changes detected [2026-03-29 20:24:08] Scraping: City of Richmond (pdf) [2026-03-29 20:24:08] City of Richmond: PDF unchanged, skipping parse [2026-03-29 20:24:08] → City of Richmond: no changes detected [2026-03-29 20:24:09] Scraping: City of Coquitlam (arcgis_coq) [2026-03-29 20:24:09] Coquitlam: extracted 475 permits from FeatureServer [2026-03-29 20:24:09] → 475 new permits for City of Coquitlam (475 total scraped) [2026-03-29 20:24:10] Scraping: City of Delta (civicweb) [2026-03-29 20:24:12] Delta: no /media/ links found — no PDF data available this run [2026-03-29 20:24:12] → City of Delta: no permits parsed (site may be unavailable) [2026-03-29 20:24:13] Scraping: City of Calgary (soda) [2026-03-29 20:24:33] Calgary: 205 qualifying permits from SODA API [2026-03-29 20:24:33] → 205 new permits for City of Calgary (205 total scraped) [2026-03-29 20:24:33] Geocoding 2725 permits (this may take a minute)... [2026-03-29 22:11:46] Geocoded 798 of 2725 permits [2026-03-29 22:11:46] Database: 2928 total permits across all municipalities [2026-03-29 22:11:48] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (2928 permits, 11 sheets) [2026-03-29 22:11:48] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-29 22:11:48] Sending email alert for 1456 new permits... [2026-03-29 22:11:53] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0278.namprd04.prod.outlook.com 2026-03-30T05:11:53.685Z 08DE8E04826BDD96]') [2026-03-29 22:11:53] Agent run complete. [2026-03-29 22:11:53] ================================================================= [2026-03-29 22:18:13] ================================================================= [2026-03-29 22:18:13] Orion Permit Agent starting (BC + Calgary)... [2026-03-29 22:18:13] Monitoring 9 municipalities [2026-03-29 22:18:14] Scraping: City of Surrey (pdf) [2026-03-29 22:18:14] City of Surrey: PDF unchanged, skipping parse [2026-03-29 22:18:14] → City of Surrey: no changes detected [2026-03-29 22:18:15] Scraping: Township of Langley (html_portal) [2026-03-29 22:18:16] → Township of Langley: no changes detected [2026-03-29 22:18:17] Scraping: City of Abbotsford (arcgis) [2026-03-29 22:18:18] City of Abbotsford: 521 records from ArcGIS API [2026-03-29 22:18:18] → 521 new permits for City of Abbotsford (521 total scraped) [2026-03-29 22:18:19] Scraping: City of Chilliwack (html_weekly) [2026-03-29 22:18:19] Installing OCR dependencies (one-time, may take a minute)... [2026-03-29 22:18:19] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-03-29 22:18:19] Chilliwack: skipping — OCR dependencies not available [2026-03-29 22:18:19] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-03-29 22:18:20] Scraping: City of Burnaby (pdf) [2026-03-29 22:18:20] City of Burnaby: PDF unchanged, skipping parse [2026-03-29 22:18:20] → City of Burnaby: no changes detected [2026-03-29 22:18:21] Scraping: City of Richmond (pdf) [2026-03-29 22:18:21] City of Richmond: PDF unchanged, skipping parse [2026-03-29 22:18:21] → City of Richmond: no changes detected [2026-03-29 22:18:22] Scraping: City of Coquitlam (arcgis_coq) [2026-03-29 22:18:23] Coquitlam: extracted 475 permits from FeatureServer [2026-03-29 22:18:23] → 0 new permits for City of Coquitlam (475 total scraped) [2026-03-29 22:18:24] Scraping: City of Delta (civicweb) [2026-03-29 22:18:25] Delta: no /media/ links found — no PDF data available this run [2026-03-29 22:18:25] → City of Delta: no permits parsed (site may be unavailable) [2026-03-29 22:18:26] Scraping: City of Calgary (soda) [2026-03-29 22:18:43] Calgary: 205 qualifying permits from SODA API [2026-03-29 22:18:43] → 0 new permits for City of Calgary (205 total scraped) [2026-03-29 22:18:43] Geocoding 2448 permits (this may take a minute)... [2026-03-30 09:03:20] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:03:51] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:03:51] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:03:51] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:35:08] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:36:42] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:47:45] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-03-30 09:54:11] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 10:58:07] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 13:28:22] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 13:32:20] Geocoding 1927 permits (this may take a minute)... [2026-04-09 15:16:39] Geocoding 1927 permits... [2026-04-09 15:16:43] ...50/1927 geocoded so far (0 hits) [2026-04-09 15:16:48] ...100/1927 geocoded so far (0 hits) [2026-04-09 15:16:49] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 15:16:52] ...150/1927 geocoded so far (0 hits) [2026-04-09 15:16:56] ...200/1927 geocoded so far (0 hits) [2026-04-09 15:17:00] ...250/1927 geocoded so far (0 hits) [2026-04-09 15:17:04] ...300/1927 geocoded so far (0 hits) [2026-04-09 15:17:09] ...350/1927 geocoded so far (0 hits) [2026-04-09 15:17:13] ...400/1927 geocoded so far (0 hits) [2026-04-09 15:17:17] ...450/1927 geocoded so far (0 hits) [2026-04-09 15:17:21] ...500/1927 geocoded so far (0 hits) [2026-04-09 15:17:26] ...550/1927 geocoded so far (0 hits) [2026-04-09 15:17:30] ...600/1927 geocoded so far (0 hits) [2026-04-09 15:17:34] ...650/1927 geocoded so far (0 hits) [2026-04-09 15:17:38] ...700/1927 geocoded so far (0 hits) [2026-04-09 15:17:43] ...750/1927 geocoded so far (0 hits) [2026-04-09 15:17:47] ...800/1927 geocoded so far (0 hits) [2026-04-09 15:17:51] ...850/1927 geocoded so far (0 hits) [2026-04-09 15:17:55] ...900/1927 geocoded so far (0 hits) [2026-04-09 15:17:59] ...950/1927 geocoded so far (0 hits) [2026-04-09 15:18:04] ...1000/1927 geocoded so far (0 hits) [2026-04-09 15:18:08] ...1050/1927 geocoded so far (0 hits) [2026-04-09 15:18:12] ...1100/1927 geocoded so far (0 hits) [2026-04-09 15:18:16] ...1150/1927 geocoded so far (0 hits) [2026-04-09 15:18:21] ...1200/1927 geocoded so far (0 hits) [2026-04-09 15:18:25] ...1250/1927 geocoded so far (0 hits) [2026-04-09 15:18:29] ...1300/1927 geocoded so far (0 hits) [2026-04-09 15:18:33] ...1350/1927 geocoded so far (0 hits) [2026-04-09 15:18:37] ...1400/1927 geocoded so far (0 hits) [2026-04-09 15:18:42] ...1450/1927 geocoded so far (0 hits) [2026-04-09 15:18:46] ...1500/1927 geocoded so far (0 hits) [2026-04-09 15:18:50] ...1550/1927 geocoded so far (0 hits) [2026-04-09 15:18:54] ...1600/1927 geocoded so far (0 hits) [2026-04-09 15:18:58] ...1650/1927 geocoded so far (0 hits) [2026-04-09 15:19:03] ...1700/1927 geocoded so far (0 hits) [2026-04-09 15:19:07] ...1750/1927 geocoded so far (0 hits) [2026-04-09 15:19:11] ...1800/1927 geocoded so far (0 hits) [2026-04-09 15:19:15] ...1850/1927 geocoded so far (0 hits) [2026-04-09 15:19:20] ...1900/1927 geocoded so far (0 hits) [2026-04-09 15:19:23] Geocoded 0 of 1927 permits [2026-04-09 15:19:23] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 15:20:21] Geocoding 1927 permits... [2026-04-09 15:20:27] ...50/1927 geocoded so far (50 hits) [2026-04-09 15:20:34] ...100/1927 geocoded so far (100 hits) [2026-04-09 15:20:41] ...150/1927 geocoded so far (150 hits) [2026-04-09 15:20:47] ...200/1927 geocoded so far (200 hits) [2026-04-09 15:20:54] ...250/1927 geocoded so far (250 hits) [2026-04-09 15:21:01] ...300/1927 geocoded so far (300 hits) [2026-04-09 15:21:07] ...350/1927 geocoded so far (350 hits) [2026-04-09 15:21:14] ...400/1927 geocoded so far (400 hits) [2026-04-09 15:21:21] ...450/1927 geocoded so far (450 hits) [2026-04-09 15:21:27] ...500/1927 geocoded so far (500 hits) [2026-04-09 15:21:34] ...550/1927 geocoded so far (550 hits) [2026-04-09 15:21:40] ...600/1927 geocoded so far (600 hits) [2026-04-09 15:21:47] ...650/1927 geocoded so far (650 hits) [2026-04-09 15:21:53] ...700/1927 geocoded so far (700 hits) [2026-04-09 15:22:00] ...750/1927 geocoded so far (749 hits) [2026-04-09 15:22:07] ...800/1927 geocoded so far (798 hits) [2026-04-09 15:22:13] ...850/1927 geocoded so far (846 hits) [2026-04-09 15:22:20] ...900/1927 geocoded so far (895 hits) [2026-04-09 15:22:26] ...950/1927 geocoded so far (945 hits) [2026-04-09 15:22:32] ...1000/1927 geocoded so far (995 hits) [2026-04-09 15:22:38] ...1050/1927 geocoded so far (1044 hits) [2026-04-09 15:22:44] ...1100/1927 geocoded so far (1094 hits) [2026-04-09 15:22:50] ...1150/1927 geocoded so far (1144 hits) [2026-04-09 15:22:56] ...1200/1927 geocoded so far (1194 hits) [2026-04-09 15:23:02] ...1250/1927 geocoded so far (1244 hits) [2026-04-09 15:23:08] ...1300/1927 geocoded so far (1294 hits) [2026-04-09 15:23:14] ...1350/1927 geocoded so far (1344 hits) [2026-04-09 15:23:20] ...1400/1927 geocoded so far (1394 hits) [2026-04-09 15:23:26] ...1450/1927 geocoded so far (1444 hits) [2026-04-09 15:23:33] ...1500/1927 geocoded so far (1494 hits) [2026-04-09 15:23:40] ...1550/1927 geocoded so far (1544 hits) [2026-04-09 15:23:46] ...1600/1927 geocoded so far (1594 hits) [2026-04-09 15:23:51] ...1650/1927 geocoded so far (1644 hits) [2026-04-09 15:23:56] ...1700/1927 geocoded so far (1694 hits) [2026-04-09 15:24:01] ...1750/1927 geocoded so far (1744 hits) [2026-04-09 15:24:06] ...1800/1927 geocoded so far (1794 hits) [2026-04-09 15:24:13] ...1850/1927 geocoded so far (1844 hits) [2026-04-09 15:24:19] ...1900/1927 geocoded so far (1894 hits) [2026-04-09 15:24:24] Geocoded 1920 of 1927 permits [2026-04-09 15:24:24] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 15:26:38] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-09 15:48:55] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-10 10:11:11] ================================================================= [2026-04-10 10:11:11] Orion Permit Agent starting (BC + Calgary)... [2026-04-10 10:11:11] Monitoring 9 municipalities [2026-04-10 10:11:12] Scraping: City of Surrey (pdf) [2026-04-10 10:11:12] City of Surrey: PDF unchanged, skipping parse [2026-04-10 10:11:12] → City of Surrey: no changes detected [2026-04-10 10:11:13] Scraping: Township of Langley (html_portal) [2026-04-10 10:11:14] Langley: extracted 770 permits from FeatureServer [2026-04-10 10:11:14] → 2 new permits for Township of Langley (770 total scraped) [2026-04-10 10:11:15] Scraping: City of Abbotsford (arcgis) [2026-04-10 10:11:16] City of Abbotsford: 525 records from ArcGIS API [2026-04-10 10:11:16] → 525 new permits for City of Abbotsford (525 total scraped) [2026-04-10 10:11:17] Scraping: City of Chilliwack (html_weekly) [2026-04-10 10:11:17] Installing OCR dependencies (one-time, may take a minute)... [2026-04-10 10:11:17] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-10 10:11:17] Chilliwack: skipping — OCR dependencies not available [2026-04-10 10:11:17] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-10 10:11:18] Scraping: City of Burnaby (pdf) [2026-04-10 10:11:18] ERROR scraping City of Burnaby: No module named 'pdfplumber' [2026-04-10 10:11:18] → City of Burnaby: no changes detected [2026-04-10 10:11:19] Scraping: City of Richmond (pdf) [2026-04-10 10:11:19] ERROR scraping City of Richmond: No module named 'pdfplumber' [2026-04-10 10:11:19] → City of Richmond: no changes detected [2026-04-10 10:11:20] Scraping: City of Coquitlam (arcgis_coq) [2026-04-10 10:11:21] Coquitlam: extracted 486 permits from FeatureServer [2026-04-10 10:11:21] → 13 new permits for City of Coquitlam (486 total scraped) [2026-04-10 10:11:22] Scraping: City of Delta (arcgis_delta) [2026-04-10 10:11:22] Delta: extracted 1064 permits from ArcGIS FeatureServer [2026-04-10 10:11:22] → 1064 new permits for City of Delta (1064 total scraped) [2026-04-10 10:11:23] Scraping: City of Calgary (soda) [2026-04-10 10:11:28] Calgary: 207 qualifying permits from SODA API [2026-04-10 10:11:28] → 7 new permits for City of Calgary (207 total scraped) [2026-04-10 10:11:28] Coordinate cleanup: nulled 81 cache entries, cleared 144 permit coordinates for re-geocoding [2026-04-10 10:11:28] Geocoding 1755 permits... [2026-04-10 10:11:32] ...50/1755 geocoded so far (0 hits) [2026-04-10 10:11:36] ...100/1755 geocoded so far (0 hits) [2026-04-10 10:11:41] ...150/1755 geocoded so far (0 hits) [2026-04-10 10:11:42] Geocoder OOB: '19700 Block of 84 Avenue' (Langley) score=86 (54.0538,-124.8491) rejected [2026-04-10 10:11:46] ...200/1755 geocoded so far (1 hits) [2026-04-10 10:11:50] ...250/1755 geocoded so far (1 hits) [2026-04-10 10:11:54] ...300/1755 geocoded so far (1 hits) [2026-04-10 10:11:59] ...350/1755 geocoded so far (1 hits) [2026-04-10 10:12:03] ...400/1755 geocoded so far (1 hits) [2026-04-10 10:12:07] ...450/1755 geocoded so far (1 hits) [2026-04-10 10:12:11] ...500/1755 geocoded so far (1 hits) [2026-04-10 10:12:16] ...550/1755 geocoded so far (1 hits) [2026-04-10 10:12:20] ...600/1755 geocoded so far (1 hits) [2026-04-10 10:12:24] ...650/1755 geocoded so far (1 hits) [2026-04-10 10:12:30] ...700/1755 geocoded so far (23 hits) [2026-04-10 10:12:32] Geocoder OOB: 'A 9300 EBOR RD' (Delta) score=100 (49.1723,-122.9146) rejected [2026-04-10 10:12:33] Geocoder OOB: 'A 9312 EBOR RD' (Delta) score=100 (49.1725,-122.9145) rejected [2026-04-10 10:12:33] Geocoder OOB: 'A 9320 EBOR RD' (Delta) score=100 (49.1726,-122.9145) rejected [2026-04-10 10:12:34] Geocoder OOB: '8844 DELVISTA DR' (Delta) score=100 (49.1637,-122.9286) rejected [2026-04-10 10:12:34] Geocoder OOB: '8838 DELVISTA DR' (Delta) score=100 (49.1637,-122.9285) rejected [2026-04-10 10:12:34] Geocoder OOB: '8472 BROOKE RD' (Delta) score=100 (49.1573,-122.9206) rejected [2026-04-10 10:12:35] Geocoder OOB: '8464 BROOKE RD' (Delta) score=100 (49.1572,-122.9206) rejected [2026-04-10 10:12:35] Geocoder OOB: '11781 82B AVE' (Delta) score=100 (49.1539,-122.8966) rejected [2026-04-10 10:12:35] ...750/1755 geocoded so far (58 hits) [2026-04-10 10:12:36] Geocoder OOB: '11785 82B AVE' (Delta) score=100 (49.1539,-122.8965) rejected [2026-04-10 10:12:36] Geocoder OOB: '9452 118 ST' (Delta) score=100 (49.1745,-122.8952) rejected [2026-04-10 10:12:37] Geocoder OOB: '11683 74A AVE' (Delta) score=100 (49.1385,-122.8991) rejected [2026-04-10 10:12:37] Geocoder OOB: '11689 74A AVE' (Delta) score=100 (49.1385,-122.8989) rejected [2026-04-10 10:12:38] Geocoder OOB: '7728 119A ST' (Delta) score=100 (49.1436,-122.8911) rejected [2026-04-10 10:12:41] Geocoder OOB: '7550 119A ST' (Delta) score=100 (49.1408,-122.8911) rejected [2026-04-10 10:12:41] Geocoder OOB: '9181 NAGASAKA LANE' (Delta) score=100 (49.1701,-122.9052) rejected [2026-04-10 10:12:41] Geocoder OOB: '9175 NAGASAKA LANE' (Delta) score=100 (49.1700,-122.9052) rejected [2026-04-10 10:12:41] Geocoder OOB: '9171 NAGASAKA LANE' (Delta) score=100 (49.1698,-122.9052) rejected [2026-04-10 10:12:41] ...800/1755 geocoded so far (95 hits) [2026-04-10 10:12:41] Geocoder OOB: '9180 NAGASAKA LANE' (Delta) score=100 (49.1701,-122.9047) rejected [2026-04-10 10:12:41] Geocoder OOB: '9174 NAGASAKA LANE' (Delta) score=100 (49.1700,-122.9046) rejected [2026-04-10 10:12:42] Geocoder OOB: '9170 NAGASAKA LANE' (Delta) score=100 (49.1698,-122.9046) rejected [2026-04-10 10:12:42] Geocoder OOB: '7763 115 ST' (Delta) score=100 (49.1442,-122.9046) rejected [2026-04-10 10:12:42] Geocoder OOB: '11319 80 AVE' (Delta) score=100 (49.1489,-122.9091) rejected [2026-04-10 10:12:42] Geocoder OOB: '11325 80 AVE' (Delta) score=100 (49.1489,-122.9089) rejected [2026-04-10 10:12:42] Geocoder OOB: '7657 117 ST' (Delta) score=100 (49.1424,-122.8991) rejected [2026-04-10 10:12:42] Geocoder OOB: '7653 117 ST' (Delta) score=100 (49.1423,-122.8991) rejected [2026-04-10 10:12:43] Geocoder OOB: '8152 113B ST' (Delta) score=100 (49.1514,-122.9077) rejected [2026-04-10 10:12:43] Geocoder OOB: '8148 113B ST' (Delta) score=100 (49.1513,-122.9077) rejected [2026-04-10 10:12:43] Geocoder OOB: '8335 115 ST' (Delta) score=100 (49.1546,-122.9047) rejected [2026-04-10 10:12:44] Geocoder OOB: '11501 72A AVE' (Delta) score=100 (49.1350,-122.9042) rejected [2026-04-10 10:12:44] Geocoder OOB: '11509 72A AVE' (Delta) score=100 (49.1350,-122.9040) rejected [2026-04-10 10:12:44] Geocoder OOB: '8408 BROOKE RD' (Delta) score=100 (49.1563,-122.9204) rejected [2026-04-10 10:12:44] Geocoder OOB: '8400 BROOKE RD' (Delta) score=100 (49.1562,-122.9204) rejected [2026-04-10 10:12:45] Geocoder OOB: '11630 94 AVE' (Delta) score=100 (49.1734,-122.9005) rejected [2026-04-10 10:12:46] Geocoder OOB: '11989 93A AVE' (Delta) score=100 (49.1733,-122.8909) rejected [2026-04-10 10:12:46] Geocoder OOB: '11679 74 AVE' (Delta) score=100 (49.1377,-122.8992) rejected [2026-04-10 10:12:46] Geocoder OOB: '1 9015 120 ST' (Delta) score=100 (49.1673,-122.8910) rejected [2026-04-10 10:12:47] ...850/1755 geocoded so far (111 hits) [2026-04-10 10:12:47] Geocoder OOB: '11462 92 AVE' (Delta) score=100 (49.1704,-122.9053) rejected [2026-04-10 10:12:48] Geocoder OOB: '11470 92 AVE' (Delta) score=100 (49.1704,-122.9051) rejected [2026-04-10 10:12:48] Geocoder OOB: '1365 DERWENT WAY' (Delta) score=100 (49.1625,-122.9520) rejected [2026-04-10 10:12:48] Geocoder OOB: '11235 81A AVE' (Delta) score=100 (49.1517,-122.9116) rejected [2026-04-10 10:12:49] Geocoder OOB: '11741 64 AVE' (Delta) score=100 (49.1197,-122.8977) rejected [2026-04-10 10:12:50] Geocoder OOB: '11692 96 AVE' (Delta) score=100 (49.1768,-122.8985) rejected [2026-04-10 10:12:50] Geocoder OOB: '7684 115A ST' (Delta) score=100 (49.1427,-122.9023) rejected [2026-04-10 10:12:50] Geocoder OOB: '8645 SUNBURY PL' (Delta) score=100 (49.1606,-122.9325) rejected [2026-04-10 10:12:51] Geocoder OOB: '8659 120 ST' (Delta) score=100 (49.1611,-122.8916) rejected [2026-04-10 10:12:51] Geocoder OOB: '101 7511 120 ST' (Delta) score=100 (49.1396,-122.8910) rejected [2026-04-10 10:12:51] Geocoder OOB: '10725 82 AVE' (Delta) score=100 (49.1525,-122.9257) rejected [2026-04-10 10:12:52] Geocoder OOB: '11842 95A AVE' (Delta) score=100 (49.1760,-122.8944) rejected [2026-04-10 10:12:52] Geocoder OOB: 'A 11128 80A AVE' (Delta) score=100 (49.1496,-122.9146) rejected [2026-04-10 10:12:52] Geocoder OOB: '11357 88 AVE' (Delta) score=100 (49.1636,-122.9082) rejected [2026-04-10 10:12:53] Geocoder OOB: '11361 88 AVE' (Delta) score=100 (49.1636,-122.9081) rejected [2026-04-10 10:12:53] Geocoder OOB: '11761 92 AVE' (Delta) score=100 (49.1708,-122.8971) rejected [2026-04-10 10:12:53] Geocoder OOB: '55 6712 BAKER RD' (Delta) score=100 (49.1250,-122.8915) rejected [2026-04-10 10:12:53] ...900/1755 geocoded so far (139 hits) [2026-04-10 10:12:53] Geocoder OOB: '11041 RIVER RD' (Delta) score=100 (49.1703,-122.9166) rejected [2026-04-10 10:12:53] Geocoder OOB: '11544 92A AVE' (Delta) score=100 (49.1711,-122.9027) rejected [2026-04-10 10:12:54] Geocoder OOB: '11725 94A AVE' (Delta) score=100 (49.1744,-122.8977) rejected [2026-04-10 10:12:55] Geocoder OOB: '8238 WADHAM DR' (Delta) score=100 (49.1533,-122.9216) rejected [2026-04-10 10:12:55] Geocoder OOB: '8268 WADHAM DR' (Delta) score=100 (49.1541,-122.9223) rejected [2026-04-10 10:12:55] Geocoder OOB: '10759 VISTA PL' (Delta) score=100 (49.1496,-122.9253) rejected [2026-04-10 10:12:55] Geocoder OOB: '11050 81A AVE' (Delta) score=100 (49.1512,-122.9165) rejected [2026-04-10 10:12:55] Geocoder OOB: '11725 83A AVE' (Delta) score=100 (49.1553,-122.8981) rejected [2026-04-10 10:12:56] Geocoder OOB: '7555 112 ST' (Delta) score=100 (49.1411,-122.9130) rejected [2026-04-10 10:12:56] Geocoder OOB: '11015 81A AVE' (Delta) score=100 (49.1517,-122.9176) rejected [2026-04-10 10:12:56] Geocoder OOB: '11456 82 AVE' (Delta) score=100 (49.1519,-122.9054) rejected [2026-04-10 10:12:56] Geocoder OOB: '8068 113A ST' (Delta) score=100 (49.1498,-122.9089) rejected [2026-04-10 10:12:56] Geocoder OOB: '11798 79A AVE' (Delta) score=100 (49.1475,-122.8963) rejected [2026-04-10 10:12:57] Geocoder OOB: '11960 84 AVE' (Delta) score=100 (49.1557,-122.8915) rejected [2026-04-10 10:12:57] Geocoder OOB: '7907 120 ST' (Delta) score=100 (49.1472,-122.8913) rejected [2026-04-10 10:12:57] Geocoder OOB: '7864 119 ST' (Delta) score=100 (49.1461,-122.8929) rejected [2026-04-10 10:12:57] Geocoder OOB: '10757 DELSOM CRES' (Delta) score=100 (49.1554,-122.9260) rejected [2026-04-10 10:12:57] Geocoder OOB: '8805 SHEPHERD WAY' (Delta) score=100 (49.1635,-122.9178) rejected [2026-04-10 10:12:58] Geocoder OOB: '7824 110A ST' (Delta) score=100 (49.1457,-122.9171) rejected [2026-04-10 10:12:58] Geocoder OOB: '11024 78 AVE' (Delta) score=100 (49.1449,-122.9175) rejected [2026-04-10 10:12:58] Geocoder OOB: '7700 115 ST' (Delta) score=100 (49.1431,-122.9037) rejected [2026-04-10 10:12:59] Geocoder OOB: '10896 83 AVE' (Delta) score=100 (49.1537,-122.9206) rejected [2026-04-10 10:12:59] ...950/1755 geocoded so far (153 hits) [2026-04-10 10:12:59] Geocoder OOB: '11372 77 AVE' (Delta) score=100 (49.1429,-122.9079) rejected [2026-04-10 10:12:59] Geocoder OOB: '11342 77 AVE' (Delta) score=100 (49.1429,-122.9089) rejected [2026-04-10 10:13:00] Geocoder OOB: '100 11881 88 AVE' (Delta) score=100 (49.1636,-122.8934) rejected [2026-04-10 10:13:00] Geocoder OOB: '11679 75A AVE' (Delta) score=100 (49.1404,-122.8992) rejected [2026-04-10 10:13:00] Geocoder OOB: '11968 74 AVE' (Delta) score=100 (49.1376,-122.8923) rejected [2026-04-10 10:13:01] Geocoder OOB: '7672 115A ST' (Delta) score=100 (49.1424,-122.9023) rejected [2026-04-10 10:13:01] Geocoder OOB: '9400 119 ST' (Delta) score=100 (49.1735,-122.8939) rejected [2026-04-10 10:13:01] Geocoder OOB: '7510 BARRYMORE DR' (Delta) score=100 (49.1397,-122.9195) rejected [2026-04-10 10:13:01] Geocoder OOB: '10630 RIVER RD' (Delta) score=100 (49.1644,-122.9284) rejected [2026-04-10 10:13:01] Geocoder OOB: '10634 RIVER RD' (Delta) score=100 (49.1645,-122.9283) rejected [2026-04-10 10:13:03] Geocoder OOB: '11873 95A AVE' (Delta) score=100 (49.1765,-122.8935) rejected [2026-04-10 10:13:03] Geocoder OOB: '8130 113B ST' (Delta) score=100 (49.1510,-122.9077) rejected [2026-04-10 10:13:03] Geocoder OOB: '11478 92 AVE' (Delta) score=100 (49.1704,-122.9048) rejected [2026-04-10 10:13:03] Geocoder OOB: '11488 92 AVE' (Delta) score=100 (49.1704,-122.9046) rejected [2026-04-10 10:13:04] Geocoder OOB: '11715 93 AVE' (Delta) score=100 (49.1728,-122.8982) rejected [2026-04-10 10:13:04] Geocoder OOB: '6465 LYON RD' (Delta) score=100 (49.1205,-122.9203) rejected [2026-04-10 10:13:04] Geocoder OOB: '8099 NORDEL WAY' (Delta) score=99 (49.1451,-122.9422) rejected [2026-04-10 10:13:04] Geocoder OOB: '7496 118A ST' (Delta) score=100 (49.1395,-122.8945) rejected [2026-04-10 10:13:04] ...1000/1755 geocoded so far (176 hits) [2026-04-10 10:13:05] Geocoder OOB: '6496 MCKENZIE DR' (Delta) score=100 (49.1212,-122.9108) rejected [2026-04-10 10:13:05] Geocoder OOB: '11065 LAWRIE CRES' (Delta) score=100 (49.1214,-122.9166) rejected [2026-04-10 10:13:05] Geocoder OOB: '11370 89 AVE' (Delta) score=100 (49.1648,-122.9077) rejected [2026-04-10 10:13:05] Geocoder OOB: '8860 117A ST' (Delta) score=100 (49.1643,-122.8970) rejected [2026-04-10 10:13:05] Geocoder OOB: '8942 EMWOOD PL' (Delta) score=100 (49.1657,-122.8985) rejected [2026-04-10 10:13:05] Geocoder OOB: '11276 88A AVE' (Delta) score=100 (49.1640,-122.9103) rejected [2026-04-10 10:13:06] Geocoder OOB: '8852 SHEPHERD WAY' (Delta) score=100 (49.1641,-122.9165) rejected [2026-04-10 10:13:06] Geocoder OOB: '8659 110A ST' (Delta) score=100 (49.1607,-122.9167) rejected [2026-04-10 10:13:06] Geocoder OOB: '8671 SHEPHERD WAY' (Delta) score=100 (49.1610,-122.9178) rejected [2026-04-10 10:13:06] Geocoder OOB: '7445 118 ST' (Delta) score=100 (49.1386,-122.8964) rejected [2026-04-10 10:13:07] Geocoder OOB: '11888 86A AVE' (Delta) score=100 (49.1601,-122.8935) rejected [2026-04-10 10:13:07] Geocoder OOB: '8350 112 ST' (Delta) score=100 (49.1551,-122.9118) rejected [2026-04-10 10:13:07] Geocoder OOB: '11109 83A AVE' (Delta) score=100 (49.1555,-122.9150) rejected [2026-04-10 10:13:07] Geocoder OOB: '7112 BREWSTER DR E' (Delta) score=100 (49.1325,-122.8945) rejected [2026-04-10 10:13:08] Geocoder OOB: '8267 114 ST' (Delta) score=100 (49.1536,-122.9073) rejected [2026-04-10 10:13:08] Geocoder OOB: '11854 83 AVE' (Delta) score=100 (49.1539,-122.8943) rejected [2026-04-10 10:13:08] Geocoder OOB: '11886 WOODHURST DR' (Delta) score=100 (49.1051,-122.8936) rejected [2026-04-10 10:13:09] Geocoder OOB: '11910 88 AVE' (Delta) score=100 (49.1625,-122.8918) rejected [2026-04-10 10:13:09] Geocoder OOB: '11893 87 AVE' (Delta) score=100 (49.1613,-122.8933) rejected [2026-04-10 10:13:09] Geocoder OOB: '8693 DELNOVA DR' (Delta) score=100 (49.1622,-122.9310) rejected [2026-04-10 10:13:09] Geocoder OOB: '456 HUMBER PL' (Delta) score=100 (49.1641,-122.9424) rejected [2026-04-10 10:13:09] Geocoder OOB: '8298 110 ST' (Delta) score=100 (49.1541,-122.9176) rejected [2026-04-10 10:13:10] Geocoder OOB: '8773 DELWOOD DR' (Delta) score=100 (49.1620,-122.9259) rejected [2026-04-10 10:13:10] Geocoder OOB: '11418 86A AVE' (Delta) score=100 (49.1601,-122.9068) rejected [2026-04-10 10:13:10] Geocoder OOB: '11365 86 AVE' (Delta) score=100 (49.1598,-122.9079) rejected [2026-04-10 10:13:10] Geocoder OOB: '11488 87A AVE' (Delta) score=100 (49.1621,-122.9046) rejected [2026-04-10 10:13:10] Geocoder OOB: '8144 111B ST' (Delta) score=100 (49.1511,-122.9132) rejected [2026-04-10 10:13:10] Geocoder OOB: '8219 111B ST' (Delta) score=100 (49.1526,-122.9139) rejected [2026-04-10 10:13:11] ...1050/1755 geocoded so far (186 hits) [2026-04-10 10:13:11] Geocoder OOB: '7893 116A ST' (Delta) score=100 (49.1466,-122.9005) rejected [2026-04-10 10:13:11] Geocoder OOB: '11760 86 AVE' (Delta) score=100 (49.1593,-122.8971) rejected [2026-04-10 10:13:11] Geocoder OOB: '8628 SUNBURY PL' (Delta) score=100 (49.1606,-122.9315) rejected [2026-04-10 10:13:11] Geocoder OOB: '9226 119A ST' (Delta) score=100 (49.1711,-122.8916) rejected [2026-04-10 10:13:11] Geocoder OOB: '7981 MODESTO DR' (Delta) score=100 (49.1480,-122.9266) rejected [2026-04-10 10:13:11] Geocoder OOB: '8541 TERRACE DR' (Delta) score=100 (49.1596,-122.9295) rejected [2026-04-10 10:13:12] Geocoder OOB: '10564 SUNCREST DR' (Delta) score=100 (49.1596,-122.9300) rejected [2026-04-10 10:13:12] Geocoder OOB: '10119 SWENSON WAY' (Delta) score=100 (49.1523,-122.9423) rejected [2026-04-10 10:13:12] Geocoder OOB: '7981 112A ST' (Delta) score=100 (49.1480,-122.9118) rejected [2026-04-10 10:13:12] Geocoder OOB: '7980 112 ST' (Delta) score=100 (49.1480,-122.9122) rejected [2026-04-10 10:13:12] Geocoder OOB: '9084 117 ST' (Delta) score=100 (49.1683,-122.8975) rejected [2026-04-10 10:13:12] Geocoder OOB: '7765 114A ST' (Delta) score=100 (49.1442,-122.9058) rejected [2026-04-10 10:13:13] Geocoder OOB: '11496 85A AVE' (Delta) score=100 (49.1586,-122.9046) rejected [2026-04-10 10:13:13] Geocoder OOB: '11252 78A AVE' (Delta) score=100 (49.1451,-122.9110) rejected [2026-04-10 10:13:13] Geocoder OOB: '11751 83 AVE' (Delta) score=100 (49.1546,-122.8973) rejected [2026-04-10 10:13:13] Geocoder OOB: '7735 118 ST' (Delta) score=100 (49.1438,-122.8964) rejected [2026-04-10 10:13:13] Geocoder OOB: '9063 112A ST' (Delta) score=100 (49.1681,-122.9107) rejected [2026-04-10 10:13:13] Geocoder OOB: '11497 87A AVE' (Delta) score=100 (49.1628,-122.9043) rejected [2026-04-10 10:13:14] Geocoder OOB: '11472 88 AVE' (Delta) score=100 (49.1630,-122.9049) rejected [2026-04-10 10:13:14] Geocoder OOB: '11852 CASCADE DR' (Delta) score=100 (49.1285,-122.8947) rejected [2026-04-10 10:13:15] Geocoder OOB: '11070 CANYON CRES' (Delta) score=100 (49.1311,-122.9155) rejected [2026-04-10 10:13:16] Geocoder OOB: '11620 RIDGECREST DR' (Delta) score=100 (49.1215,-122.9011) rejected [2026-04-10 10:13:16] Geocoder OOB: '11701 SUMMIT CRES' (Delta) score=100 (49.1246,-122.8992) rejected [2026-04-10 10:13:16] Geocoder OOB: '11745 SUMMIT CRES' (Delta) score=100 (49.1238,-122.8968) rejected [2026-04-10 10:13:16] Geocoder OOB: '11073 LAWRIE CRES' (Delta) score=100 (49.1211,-122.9166) rejected [2026-04-10 10:13:16] Geocoder OOB: '6435 120 ST' (Delta) score=100 (49.1202,-122.8917) rejected [2026-04-10 10:13:17] Geocoder OOB: '7921 110 ST' (Delta) score=100 (49.1470,-122.9192) rejected [2026-04-10 10:13:17] ...1100/1755 geocoded so far (203 hits) [2026-04-10 10:13:17] Geocoder OOB: '7001 WESTVIEW DR' (Delta) score=100 (49.1302,-122.9194) rejected [2026-04-10 10:13:17] Geocoder OOB: '11958 SUNWOOD PL' (Delta) score=100 (49.1134,-122.8919) rejected [2026-04-10 10:13:18] Geocoder OOB: '11920 70 AVE' (Delta) score=100 (49.1300,-122.8924) rejected [2026-04-10 10:13:18] Geocoder OOB: '7040 BARKLEY DR' (Delta) score=100 (49.1311,-122.8982) rejected [2026-04-10 10:13:18] Geocoder OOB: '11794 COWLEY DR S' (Delta) score=100 (49.1315,-122.8967) rejected [2026-04-10 10:13:18] Geocoder OOB: '11007 64A AVE' (Delta) score=100 (49.1206,-122.9179) rejected [2026-04-10 10:13:18] Geocoder OOB: '9168 DELVIEW LANE' (Delta) score=100 (49.1699,-122.9042) rejected [2026-04-10 10:13:19] Geocoder OOB: '6742 BAKER RD' (Delta) score=100 (49.1253,-122.8923) rejected [2026-04-10 10:13:19] Geocoder OOB: '11746 CARLEY PL' (Delta) score=100 (49.1325,-122.8975) rejected [2026-04-10 10:13:19] Geocoder OOB: '6539 SUNSHINE DR' (Delta) score=100 (49.1213,-122.9103) rejected [2026-04-10 10:13:19] Geocoder OOB: '6621 ALBION WAY' (Delta) score=100 (49.1234,-122.9191) rejected [2026-04-10 10:13:19] Geocoder OOB: '11662 64A AVE' (Delta) score=100 (49.1200,-122.8996) rejected [2026-04-10 10:13:20] Geocoder OOB: '7540 MINSTER DR E' (Delta) score=100 (49.1403,-122.9134) rejected [2026-04-10 10:13:20] Geocoder OOB: '7533 MALTON DR' (Delta) score=100 (49.1398,-122.9155) rejected [2026-04-10 10:13:21] Geocoder OOB: '7385 BATES RD' (Delta) score=100 (49.1371,-122.9187) rejected [2026-04-10 10:13:21] Geocoder OOB: '11422 72A AVE' (Delta) score=100 (49.1345,-122.9062) rejected [2026-04-10 10:13:22] Geocoder OOB: '5450 104 ST' (Delta) score=100 (49.1018,-122.9321) rejected [2026-04-10 10:13:22] Geocoder OOB: '11659 LYON RD' (Delta) score=100 (49.1270,-122.9003) rejected [2026-04-10 10:13:23] Geocoder OOB: '11848 71A AVE' (Delta) score=100 (49.1330,-122.8952) rejected [2026-04-10 10:13:23] ...1150/1755 geocoded so far (229 hits) [2026-04-10 10:13:24] Geocoder OOB: '11970 64 AVE' (Delta) score=100 (49.1191,-122.8913) rejected [2026-04-10 10:13:25] Geocoder OOB: '7660 116A ST' (Delta) score=100 (49.1423,-122.8996) rejected [2026-04-10 10:13:28] Geocoder OOB: '10875 64 AVE' (Delta) score=100 (49.1195,-122.9217) rejected [2026-04-10 10:13:28] Geocoder OOB: '11791 95A AVE' (Delta) score=100 (49.1764,-122.8962) rejected [2026-04-10 10:13:29] Geocoder OOB: '6575 CABELDU CRES' (Delta) score=100 (49.1222,-122.9080) rejected [2026-04-10 10:13:29] ...1200/1755 geocoded so far (270 hits) [2026-04-10 10:13:29] Geocoder OOB: '11896 GILMOUR CRES' (Delta) score=100 (49.1409,-122.8940) rejected [2026-04-10 10:13:30] Geocoder OOB: '5640 CADDELL DR' (Delta) score=100 (49.1055,-122.8925) rejected [2026-04-10 10:13:30] Geocoder OOB: '6255 SUNWOOD DR' (Delta) score=100 (49.1164,-122.8936) rejected [2026-04-10 10:13:30] Geocoder OOB: '11903 GILMOUR CRES' (Delta) score=100 (49.1413,-122.8937) rejected [2026-04-10 10:13:30] Geocoder OOB: '9557 120 ST' (Delta) score=100 (49.1764,-122.8906) rejected [2026-04-10 10:13:31] Geocoder OOB: '11726 94A AVE' (Delta) score=100 (49.1740,-122.8977) rejected [2026-04-10 10:13:31] Geocoder OOB: '11727 ALDERWOOD CRES' (Delta) score=100 (49.1174,-122.8971) rejected [2026-04-10 10:13:31] Geocoder OOB: '7719 117 ST' (Delta) score=100 (49.1437,-122.8991) rejected [2026-04-10 10:13:31] Geocoder OOB: '6739 TODD PL' (Delta) score=100 (49.1253,-122.8963) rejected [2026-04-10 10:13:31] Geocoder OOB: '5989 BRIARWOOD CRES' (Delta) score=100 (49.1120,-122.8951) rejected [2026-04-10 10:13:31] Geocoder OOB: '11981 74 AVE' (Delta) score=100 (49.1381,-122.8920) rejected [2026-04-10 10:13:32] Geocoder OOB: '6446 WADE RD' (Delta) score=100 (49.1203,-122.8957) rejected [2026-04-10 10:13:32] Geocoder OOB: '11682 71A AVE' (Delta) score=100 (49.1329,-122.8989) rejected [2026-04-10 10:13:32] Geocoder OOB: '6477 SUMMIT CRES' (Delta) score=100 (49.1209,-122.9020) rejected [2026-04-10 10:13:32] Geocoder OOB: '11117 80A AVE' (Delta) score=100 (49.1501,-122.9149) rejected [2026-04-10 10:13:33] Geocoder OOB: '7682 118 ST' (Delta) score=100 (49.1429,-122.8955) rejected [2026-04-10 10:13:33] Geocoder OOB: '7437 118A ST' (Delta) score=100 (49.1383,-122.8953) rejected [2026-04-10 10:13:33] Geocoder OOB: '11902 78B AVE' (Delta) score=100 (49.1456,-122.8931) rejected [2026-04-10 10:13:33] Geocoder OOB: '11912 78B AVE' (Delta) score=100 (49.1456,-122.8928) rejected [2026-04-10 10:13:33] Geocoder OOB: '11764 83A AVE' (Delta) score=100 (49.1549,-122.8970) rejected [2026-04-10 10:13:34] Geocoder OOB: '8974 116 ST' (Delta) score=100 (49.1663,-122.9016) rejected [2026-04-10 10:13:34] Geocoder OOB: '11823 82 AVE' (Delta) score=100 (49.1525,-122.8954) rejected [2026-04-10 10:13:34] Geocoder OOB: '11801 83A AVE' (Delta) score=100 (49.1554,-122.8959) rejected [2026-04-10 10:13:34] Geocoder OOB: '11706 82A AVE' (Delta) score=100 (49.1528,-122.8985) rejected [2026-04-10 10:13:34] Geocoder OOB: '11775 90 AVE' (Delta) score=100 (49.1671,-122.8968) rejected [2026-04-10 10:13:34] Geocoder OOB: '7885 118 ST' (Delta) score=100 (49.1466,-122.8963) rejected [2026-04-10 10:13:35] Geocoder OOB: '11751 CASCADE DR' (Delta) score=100 (49.1291,-122.8970) rejected [2026-04-10 10:13:35] Geocoder OOB: '6185 COTTONWOOD ST' (Delta) score=100 (49.1155,-122.8916) rejected [2026-04-10 10:13:35] Geocoder OOB: '11665 CORY DR' (Delta) score=100 (49.1308,-122.8996) rejected [2026-04-10 10:13:35] Geocoder OOB: '7058 115A ST' (Delta) score=100 (49.1313,-122.9017) rejected [2026-04-10 10:13:35] ...1250/1755 geocoded so far (275 hits) [2026-04-10 10:13:35] Geocoder OOB: '9074 116 ST' (Delta) score=100 (49.1682,-122.9009) rejected [2026-04-10 10:13:35] Geocoder OOB: '11789 83 AVE' (Delta) score=100 (49.1546,-122.8965) rejected [2026-04-10 10:13:36] Geocoder OOB: '7023 BARKLEY DR' (Delta) score=100 (49.1309,-122.8989) rejected [2026-04-10 10:13:36] Geocoder OOB: '11638 83 AVE' (Delta) score=100 (49.1539,-122.9004) rejected [2026-04-10 10:13:36] Geocoder OOB: '7862 109A ST' (Delta) score=100 (49.1459,-122.9197) rejected [2026-04-10 10:13:36] Geocoder OOB: '7017 120 ST' (Delta) score=100 (49.1308,-122.8930) rejected [2026-04-10 10:13:36] Geocoder OOB: '11755 79A AVE' (Delta) score=100 (49.1480,-122.8971) rejected [2026-04-10 10:13:37] Geocoder OOB: '7953 120 ST' (Delta) score=100 (49.1478,-122.8913) rejected [2026-04-10 10:13:37] Geocoder OOB: '11866 75A AVE' (Delta) score=100 (49.1398,-122.8941) rejected [2026-04-10 10:13:37] Geocoder OOB: '11632 80A AVE' (Delta) score=100 (49.1494,-122.9004) rejected [2026-04-10 10:13:37] Geocoder OOB: '11880 78 AVE' (Delta) score=100 (49.1447,-122.8937) rejected [2026-04-10 10:13:37] Geocoder OOB: '11787 72A AVE' (Delta) score=100 (49.1351,-122.8963) rejected [2026-04-10 10:13:37] Geocoder OOB: '11298 78B AVE' (Delta) score=100 (49.1459,-122.9094) rejected [2026-04-10 10:13:38] Geocoder OOB: '6684 RYALL PL' (Delta) score=100 (49.1251,-122.9079) rejected [2026-04-10 10:13:38] Geocoder OOB: '9175 117 ST' (Delta) score=100 (49.1701,-122.8982) rejected [2026-04-10 10:13:38] Geocoder OOB: '9441 119 ST' (Delta) score=100 (49.1744,-122.8946) rejected [2026-04-10 10:13:38] Geocoder OOB: '4345 104 ST' (Delta) score=100 (49.0799,-122.9424) rejected [2026-04-10 10:13:38] Geocoder OOB: '11835 90 AVE' (Delta) score=100 (49.1671,-122.8948) rejected [2026-04-10 10:13:38] Geocoder OOB: '11769 83 AVE' (Delta) score=100 (49.1546,-122.8970) rejected [2026-04-10 10:13:39] Geocoder OOB: '11696 95A AVE' (Delta) score=100 (49.1760,-122.8986) rejected [2026-04-10 10:13:39] Geocoder OOB: '4103 104 ST' (Delta) score=100 (49.0772,-122.9405) rejected [2026-04-10 10:13:39] Geocoder OOB: '11696 95 AVE' (Delta) score=100 (49.1747,-122.8980) rejected [2026-04-10 10:13:39] Geocoder OOB: '11159 MASON PL' (Delta) score=100 (49.1202,-122.9134) rejected [2026-04-10 10:13:39] Geocoder OOB: '9530 119A ST' (Delta) score=100 (49.1758,-122.8931) rejected [2026-04-10 10:13:39] Geocoder OOB: '6425 KNIGHT DR' (Delta) score=100 (49.1198,-122.9035) rejected [2026-04-10 10:13:40] Geocoder OOB: '9525 116 ST' (Delta) score=100 (49.1758,-122.9016) rejected [2026-04-10 10:13:40] Geocoder OOB: '9465 117A ST' (Delta) score=100 (49.1749,-122.8972) rejected [2026-04-10 10:13:40] Geocoder OOB: '6594 ALBION WAY' (Delta) score=100 (49.1224,-122.9187) rejected [2026-04-10 10:13:40] Geocoder OOB: '11855 90A AVE' (Delta) score=100 (49.1684,-122.8945) rejected [2026-04-10 10:13:40] Geocoder OOB: '11768 73A AVE' (Delta) score=100 (49.1361,-122.8968) rejected [2026-04-10 10:13:41] Geocoder OOB: '9293 FOREST PL' (Delta) score=100 (49.1719,-122.8933) rejected [2026-04-10 10:13:41] Geocoder OOB: '11374 NORTHVIEW CRES' (Delta) score=100 (49.1260,-122.9082) rejected [2026-04-10 10:13:41] Geocoder OOB: '11889 86A AVE' (Delta) score=100 (49.1605,-122.8934) rejected [2026-04-10 10:13:41] ...1300/1755 geocoded so far (275 hits) [2026-04-10 10:13:41] Geocoder OOB: '11299 72 AVE' (Delta) score=100 (49.1341,-122.9088) rejected [2026-04-10 10:13:41] Geocoder OOB: '7641 BARRYMORE DR' (Delta) score=100 (49.1418,-122.9217) rejected [2026-04-10 10:13:42] Geocoder OOB: '9497 118 ST' (Delta) score=100 (49.1754,-122.8960) rejected [2026-04-10 10:13:42] Geocoder OOB: '9482 118 ST' (Delta) score=100 (49.1750,-122.8953) rejected [2026-04-10 10:13:42] Geocoder OOB: '11824 95 AVE' (Delta) score=100 (49.1753,-122.8949) rejected [2026-04-10 10:13:42] Geocoder OOB: '11304 91 AVE' (Delta) score=100 (49.1682,-122.9096) rejected [2026-04-10 10:13:43] Geocoder OOB: '9045 114 ST' (Delta) score=100 (49.1677,-122.9093) rejected [2026-04-10 10:13:43] Geocoder OOB: '11403 HEATH CRES' (Delta) score=100 (49.1360,-122.9075) rejected [2026-04-10 10:13:43] Geocoder OOB: '7695 115A ST' (Delta) score=100 (49.1430,-122.9031) rejected [2026-04-10 10:13:43] Geocoder OOB: '11011 WARWICK RD' (Delta) score=100 (49.1410,-122.9180) rejected [2026-04-10 10:13:43] Geocoder OOB: '7745 115A ST' (Delta) score=100 (49.1439,-122.9031) rejected [2026-04-10 10:13:43] Geocoder OOB: '11096 92A AVE' (Delta) score=100 (49.1721,-122.9152) rejected [2026-04-10 10:13:44] Geocoder OOB: '11411 72 AVE' (Delta) score=100 (49.1342,-122.9065) rejected [2026-04-10 10:13:44] Geocoder OOB: '4505 112 ST' (Delta) score=100 (49.0844,-122.9158) rejected [2026-04-10 10:13:44] Geocoder OOB: '11180 MASON PL' (Delta) score=100 (49.1204,-122.9127) rejected [2026-04-10 10:13:44] Geocoder OOB: '9359 119A ST' (Delta) score=100 (49.1731,-122.8929) rejected [2026-04-10 10:13:44] Geocoder OOB: '11107 BOND BLVD' (Delta) score=100 (49.1229,-122.9160) rejected [2026-04-10 10:13:44] Geocoder OOB: '11424 BURR PL' (Delta) score=100 (49.1414,-122.9061) rejected [2026-04-10 10:13:45] Geocoder OOB: '7835 108 ST' (Delta) score=100 (49.1458,-122.9240) rejected [2026-04-10 10:13:45] Geocoder OOB: '11041 WARWICK RD' (Delta) score=100 (49.1411,-122.9170) rejected [2026-04-10 10:13:45] Geocoder OOB: '7411 115 ST' (Delta) score=100 (49.1377,-122.9047) rejected [2026-04-10 10:13:45] Geocoder OOB: '10312 MAIN ST' (Delta) score=100 (49.1568,-122.9375) rejected [2026-04-10 10:13:45] Geocoder OOB: '7002 BROOKDALE PL' (Delta) score=100 (49.1298,-122.9066) rejected [2026-04-10 10:13:46] Geocoder OOB: '7587 115 ST' (Delta) score=100 (49.1409,-122.9047) rejected [2026-04-10 10:13:46] Geocoder OOB: '11199 LYON RD' (Delta) score=100 (49.1287,-122.9134) rejected [2026-04-10 10:13:46] Geocoder OOB: '11085 LINCOLN DR' (Delta) score=100 (49.1219,-122.9147) rejected [2026-04-10 10:13:46] Geocoder OOB: '11425 COMMONWEALTH CRES' (Delta) score=100 (49.1293,-122.9072) rejected [2026-04-10 10:13:46] Geocoder OOB: '6666 KNIGHT DR' (Delta) score=100 (49.1244,-122.9035) rejected [2026-04-10 10:13:47] Geocoder OOB: '9418 DAWSON CRES' (Delta) score=100 (49.1741,-122.9083) rejected [2026-04-10 10:13:47] Geocoder OOB: '6521 BRADFORD PL' (Delta) score=100 (49.1217,-122.9133) rejected [2026-04-10 10:13:47] Geocoder OOB: '11401 87A AVE' (Delta) score=100 (49.1628,-122.9069) rejected [2026-04-10 10:13:47] ...1350/1755 geocoded so far (275 hits) [2026-04-10 10:13:47] Geocoder OOB: '11545 81A AVE' (Delta) score=100 (49.1516,-122.9030) rejected [2026-04-10 10:13:47] Geocoder OOB: '10481 SANTA MONICA DR' (Delta) score=100 (49.1500,-122.9321) rejected [2026-04-10 10:13:47] Geocoder OOB: '6847 RYALL CRES' (Delta) score=100 (49.1273,-122.9090) rejected [2026-04-10 10:13:48] Geocoder OOB: '7738 114A ST' (Delta) score=100 (49.1437,-122.9051) rejected [2026-04-10 10:13:48] Geocoder OOB: '11494 79A AVE' (Delta) score=100 (49.1475,-122.9045) rejected [2026-04-10 10:13:48] Geocoder OOB: '7441 113 ST' (Delta) score=100 (49.1382,-122.9097) rejected [2026-04-10 10:13:48] Geocoder OOB: '7421 113 ST' (Delta) score=100 (49.1379,-122.9097) rejected [2026-04-10 10:13:49] Geocoder OOB: '11520 75A AVE' (Delta) score=100 (49.1399,-122.9038) rejected [2026-04-10 10:13:49] Geocoder OOB: '10670 WESTSIDE DR' (Delta) score=100 (49.1474,-122.9274) rejected [2026-04-10 10:13:49] Geocoder OOB: '6638 LYON RD' (Delta) score=100 (49.1238,-122.9196) rejected [2026-04-10 10:13:49] Geocoder OOB: '6618 LYON RD' (Delta) score=100 (49.1234,-122.9196) rejected [2026-04-10 10:13:49] Geocoder OOB: '7840 110 ST' (Delta) score=100 (49.1455,-122.9184) rejected [2026-04-10 10:13:50] Geocoder OOB: '11498 79 AVE' (Delta) score=100 (49.1468,-122.9045) rejected [2026-04-10 10:13:50] Geocoder OOB: '7910 115 ST' (Delta) score=100 (49.1470,-122.9038) rejected [2026-04-10 10:13:50] Geocoder OOB: '8142 TURNER PL' (Delta) score=100 (49.1503,-122.9159) rejected [2026-04-10 10:13:50] Geocoder OOB: '7981 115 ST' (Delta) score=100 (49.1483,-122.9044) rejected [2026-04-10 10:13:50] Geocoder OOB: '10922 79A AVE' (Delta) score=100 (49.1475,-122.9205) rejected [2026-04-10 10:13:50] Geocoder OOB: '11069 LAWRIE CRES' (Delta) score=100 (49.1212,-122.9166) rejected [2026-04-10 10:13:51] Geocoder OOB: '10600 WESTSIDE DR' (Delta) score=100 (49.1482,-122.9294) rejected [2026-04-10 10:13:51] Geocoder OOB: '11004 78 AVE' (Delta) score=100 (49.1449,-122.9180) rejected [2026-04-10 10:13:51] Geocoder OOB: '10964 78 AVE' (Delta) score=100 (49.1449,-122.9190) rejected [2026-04-10 10:13:51] Geocoder OOB: '6947 RYALL CRES' (Delta) score=100 (49.1290,-122.9084) rejected [2026-04-10 10:13:52] Geocoder OOB: '11374 LYON RD' (Delta) score=100 (49.1289,-122.9078) rejected [2026-04-10 10:13:52] Geocoder OOB: '11359 LYON RD' (Delta) score=100 (49.1293,-122.9075) rejected [2026-04-10 10:13:52] Geocoder OOB: '8320 115 ST' (Delta) score=100 (49.1545,-122.9037) rejected [2026-04-10 10:13:52] Geocoder OOB: '11466 81A AVE' (Delta) score=100 (49.1508,-122.9051) rejected [2026-04-10 10:13:52] Geocoder OOB: '11333 82A AVE' (Delta) score=100 (49.1535,-122.9088) rejected [2026-04-10 10:13:53] ...1400/1755 geocoded so far (276 hits) [2026-04-10 10:13:53] Geocoder OOB: '11075 BRIDLINGTON DR' (Delta) score=100 (49.1437,-122.9162) rejected [2026-04-10 10:13:53] Geocoder OOB: '7911 112A ST' (Delta) score=100 (49.1468,-122.9118) rejected [2026-04-10 10:13:53] Geocoder OOB: '11425 84 AVE' (Delta) score=100 (49.1569,-122.9071) rejected [2026-04-10 10:13:53] Geocoder OOB: '10310 RIVER RD' (Delta) score=100 (49.1588,-122.9370) rejected [2026-04-10 10:13:53] Geocoder OOB: '7454 CAYTON PL' (Delta) score=100 (49.1386,-122.9160) rejected [2026-04-10 10:13:54] Geocoder OOB: '8883 DELWOOD DR' (Delta) score=100 (49.1624,-122.9311) rejected [2026-04-10 10:13:54] Geocoder OOB: '11563 84A AVE' (Delta) score=100 (49.1569,-122.9027) rejected [2026-04-10 10:13:54] Geocoder OOB: '10388 NORDEL CRT' (Delta) score=100 (49.1491,-122.9367) rejected [2026-04-10 10:13:54] Geocoder OOB: '10463 SUNCREST DR' (Delta) score=100 (49.1575,-122.9334) rejected [2026-04-10 10:13:55] Geocoder OOB: '1299 DERWENT WAY' (Delta) score=100 (49.1662,-122.9542) rejected [2026-04-10 10:13:55] Geocoder OOB: '10965 86A AVE' (Delta) score=100 (49.1610,-122.9184) rejected [2026-04-10 10:13:55] Geocoder OOB: '10831 BRANDY DR' (Delta) score=100 (49.1537,-122.9213) rejected [2026-04-10 10:13:55] Geocoder OOB: '10219 SHEAVES CRT' (Delta) score=100 (49.1557,-122.9399) rejected [2026-04-10 10:13:55] Geocoder OOB: '11153 81 AVE' (Delta) score=100 (49.1509,-122.9139) rejected [2026-04-10 10:13:55] Geocoder OOB: '11266 82 AVE' (Delta) score=100 (49.1520,-122.9106) rejected [2026-04-10 10:13:55] Geocoder OOB: '8253 109B ST' (Delta) score=100 (49.1533,-122.9195) rejected [2026-04-10 10:13:56] Geocoder OOB: '11439 80 AVE' (Delta) score=100 (49.1489,-122.9060) rejected [2026-04-10 10:13:56] Geocoder OOB: '7755 114A ST' (Delta) score=100 (49.1441,-122.9058) rejected [2026-04-10 10:13:56] Geocoder OOB: '11045 84 AVE' (Delta) score=100 (49.1563,-122.9165) rejected [2026-04-10 10:13:57] Geocoder OOB: '11146 84 AVE' (Delta) score=100 (49.1553,-122.9132) rejected [2026-04-10 10:13:57] Geocoder OOB: '11342 87A AVE' (Delta) score=100 (49.1622,-122.9084) rejected [2026-04-10 10:13:57] Geocoder OOB: '11327 81A AVE' (Delta) score=100 (49.1517,-122.9089) rejected [2026-04-10 10:13:57] Geocoder OOB: '10604 RIVER RD' (Delta) score=100 (49.1639,-122.9293) rejected [2026-04-10 10:13:57] Geocoder OOB: '8988 RUSSELL DR' (Delta) score=100 (49.1668,-122.9168) rejected [2026-04-10 10:13:57] Geocoder OOB: '11122 90 AVE' (Delta) score=100 (49.1678,-122.9149) rejected [2026-04-10 10:13:58] Geocoder OOB: '8981 COLLINGS WAY' (Delta) score=100 (49.1669,-122.9197) rejected [2026-04-10 10:13:58] Geocoder OOB: '11007 NORUM CRES' (Delta) score=100 (49.1692,-122.9179) rejected [2026-04-10 10:13:58] Geocoder OOB: '10743 DUNLOP RD' (Delta) score=100 (49.1607,-122.9258) rejected [2026-04-10 10:13:58] Geocoder OOB: '8943 RUSSELL DR' (Delta) score=100 (49.1659,-122.9162) rejected [2026-04-10 10:13:58] Geocoder OOB: '10360 IVERSON CRES' (Delta) score=100 (49.1577,-122.9349) rejected [2026-04-10 10:13:58] Geocoder OOB: '9195 112 ST' (Delta) score=100 (49.1706,-122.9120) rejected [2026-04-10 10:13:58] Geocoder OOB: '8770 RUSSELL DR' (Delta) score=100 (49.1629,-122.9158) rejected [2026-04-10 10:13:58] Geocoder OOB: '8905 WATSON DR' (Delta) score=100 (49.1659,-122.9148) rejected [2026-04-10 10:13:59] Geocoder OOB: '1035 DERWENT WAY' (Delta) score=100 (49.1705,-122.9394) rejected [2026-04-10 10:13:59] ...1450/1755 geocoded so far (283 hits) [2026-04-10 10:13:59] Geocoder OOB: '8404 CENTRE ST' (Delta) score=100 (49.1563,-122.9369) rejected [2026-04-10 10:13:59] Geocoder OOB: '8922 SHEPHERD WAY' (Delta) score=100 (49.1657,-122.9166) rejected [2026-04-10 10:13:59] Geocoder OOB: '10345 SHEAVES PL' (Delta) score=100 (49.1551,-122.9381) rejected [2026-04-10 10:13:59] Geocoder OOB: '8479 BROOKE RD' (Delta) score=100 (49.1575,-122.9214) rejected [2026-04-10 10:14:00] Geocoder OOB: '11089 FULLER CRES S' (Delta) score=100 (49.1532,-122.9156) rejected [2026-04-10 10:14:00] Geocoder OOB: '11397 85A AVE' (Delta) score=100 (49.1590,-122.9073) rejected [2026-04-10 10:14:00] Geocoder OOB: '10599 HARROGATE DR' (Delta) score=100 (49.1582,-122.9282) rejected [2026-04-10 10:14:01] Geocoder OOB: '11160 RIVER RD' (Delta) score=100 (49.1758,-122.9136) rejected [2026-04-10 10:14:01] Geocoder OOB: '7514 115A ST' (Delta) score=100 (49.1396,-122.9025) rejected [2026-04-10 10:14:01] Geocoder OOB: '11520 95 AVE' (Delta) score=100 (49.1752,-122.9035) rejected [2026-04-10 10:14:02] Geocoder OOB: '8495 116 ST' (Delta) score=100 (49.1578,-122.9024) rejected [2026-04-10 10:14:02] Geocoder OOB: '9261 114A ST' (Delta) score=100 (49.1716,-122.9065) rejected [2026-04-10 10:14:02] Geocoder OOB: '11112 DOWNS RD' (Delta) score=99 (49.1642,-122.9150) rejected [2026-04-10 10:14:02] Geocoder OOB: '11362 89 AVE' (Delta) score=100 (49.1648,-122.9079) rejected [2026-04-10 10:14:03] Geocoder OOB: '785 DERWENT WAY' (Delta) score=100 (49.1768,-122.9337) rejected [2026-04-10 10:14:03] Geocoder OOB: '11471 94A AVE' (Delta) score=100 (49.1748,-122.9049) rejected [2026-04-10 10:14:04] Geocoder OOB: '9445 114 ST' (Delta) score=100 (49.1745,-122.9072) rejected [2026-04-10 10:14:04] Geocoder OOB: '9362 114 ST' (Delta) score=100 (49.1732,-122.9064) rejected [2026-04-10 10:14:04] Geocoder OOB: '11067 RIVER RD' (Delta) score=100 (49.1717,-122.9162) rejected [2026-04-10 10:14:05] ...1500/1755 geocoded so far (307 hits) [2026-04-10 10:14:07] Geocoder OOB: '11238 KENDALE VIEW' (Delta) score=100 (49.1734,-122.9114) rejected [2026-04-10 10:14:08] Geocoder OOB: '9530 DAWSON CRES' (Delta) score=100 (49.1759,-122.9087) rejected [2026-04-10 10:14:09] Geocoder OOB: '11462 94A AVE' (Delta) score=100 (49.1743,-122.9051) rejected [2026-04-10 10:14:09] Geocoder OOB: '11474 94 AVE' (Delta) score=100 (49.1734,-122.9047) rejected [2026-04-10 10:14:11] ...1550/1755 geocoded so far (352 hits) [2026-04-10 10:14:17] ...1600/1755 geocoded so far (402 hits) [2026-04-10 10:14:23] ...1650/1755 geocoded so far (452 hits) [2026-04-10 10:14:29] ...1700/1755 geocoded so far (502 hits) [2026-04-10 10:14:33] Geocoder OOB: '10938 COLLINGS CLOSE' (Delta) score=100 (49.1671,-122.9224) rejected [2026-04-10 10:14:33] Geocoder OOB: '8821 120 ST' (Delta) score=100 (49.1636,-122.8911) rejected [2026-04-10 10:14:33] Geocoder OOB: '8992 112 ST' (Delta) score=100 (49.1667,-122.9119) rejected [2026-04-10 10:14:34] Geocoder OOB: '10556 64 AVE' (Delta) score=100 (49.1185,-122.9274) rejected [2026-04-10 10:14:34] Geocoder OOB: '10771 LADNER TRUNK RD' (Delta) score=100 (49.0972,-122.9245) rejected [2026-04-10 10:14:35] Geocoder OOB: '6015 112 ST' (Delta) score=100 (49.1132,-122.9151) rejected [2026-04-10 10:14:35] ...1750/1755 geocoded so far (545 hits) [2026-04-10 10:14:35] Geocoder OOB: '8327 120 ST' (Delta) score=100 (49.1547,-122.8908) rejected [2026-04-10 10:14:35] Geocoded 549 of 1755 permits [2026-04-10 10:14:36] Database: 4539 total permits across all municipalities [2026-04-10 15:20:53] ================================================================= [2026-04-10 15:20:53] Orion Permit Agent starting (BC + Calgary)... [2026-04-10 15:20:53] Monitoring 9 municipalities [2026-04-10 15:20:54] Scraping: City of Surrey (pdf) [2026-04-10 15:20:54] City of Surrey: PDF unchanged, skipping parse [2026-04-10 15:20:54] → City of Surrey: no changes detected [2026-04-10 15:20:55] Scraping: Township of Langley (html_portal) [2026-04-10 15:20:55] → Township of Langley: no changes detected [2026-04-10 15:20:56] Scraping: City of Abbotsford (arcgis) [2026-04-10 15:20:57] City of Abbotsford: 525 records from ArcGIS API [2026-04-10 15:20:57] → 0 new permits for City of Abbotsford (525 total scraped) [2026-04-10 15:20:58] Scraping: City of Chilliwack (html_weekly) [2026-04-10 15:20:58] Installing OCR dependencies (one-time, may take a minute)... [2026-04-10 15:20:58] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-10 15:20:58] Chilliwack: skipping — OCR dependencies not available [2026-04-10 15:20:58] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-10 15:20:59] Scraping: City of Burnaby (pdf) [2026-04-10 15:20:59] City of Burnaby: PDF unchanged, skipping parse [2026-04-10 15:20:59] → City of Burnaby: no changes detected [2026-04-10 15:21:00] Scraping: City of Richmond (pdf) [2026-04-10 15:21:01] City of Richmond: PDF unchanged, skipping parse [2026-04-10 15:21:01] → City of Richmond: no changes detected [2026-04-10 15:21:02] Scraping: City of Coquitlam (arcgis_coq) [2026-04-10 15:21:02] Coquitlam: extracted 486 permits from FeatureServer [2026-04-10 15:21:02] → 0 new permits for City of Coquitlam (486 total scraped) [2026-04-10 15:21:03] Scraping: City of Delta (arcgis_delta) [2026-04-10 15:21:03] Delta: extracted 1064 permits from ArcGIS FeatureServer [2026-04-10 15:21:03] → 0 new permits for City of Delta (1064 total scraped) [2026-04-10 15:21:04] Scraping: City of Calgary (soda) [2026-04-10 15:21:12] Calgary: 206 qualifying permits from SODA API [2026-04-10 15:21:12] → 0 new permits for City of Calgary (206 total scraped) [2026-04-10 15:21:13] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-04-10 15:21:13] Geocoding 1206 permits... [2026-04-10 15:21:17] ...50/1206 geocoded so far (0 hits) [2026-04-10 15:21:21] ...100/1206 geocoded so far (0 hits) [2026-04-10 15:21:25] ...150/1206 geocoded so far (0 hits) [2026-04-10 15:21:31] ...200/1206 geocoded so far (0 hits) [2026-04-10 15:21:35] ...250/1206 geocoded so far (0 hits) [2026-04-10 15:21:39] ...300/1206 geocoded so far (0 hits) [2026-04-10 15:21:43] ...350/1206 geocoded so far (0 hits) [2026-04-10 15:21:48] ...400/1206 geocoded so far (0 hits) [2026-04-10 15:21:52] ...450/1206 geocoded so far (0 hits) [2026-04-10 15:21:56] ...500/1206 geocoded so far (0 hits) [2026-04-10 15:22:00] ...550/1206 geocoded so far (0 hits) [2026-04-10 15:22:04] ...600/1206 geocoded so far (0 hits) [2026-04-10 15:22:09] ...650/1206 geocoded so far (0 hits) [2026-04-10 15:22:13] ...700/1206 geocoded so far (0 hits) [2026-04-10 15:22:17] ...750/1206 geocoded so far (0 hits) [2026-04-10 15:22:21] ...800/1206 geocoded so far (0 hits) [2026-04-10 15:22:26] ...850/1206 geocoded so far (0 hits) [2026-04-10 15:22:30] ...900/1206 geocoded so far (0 hits) [2026-04-10 15:22:34] ...950/1206 geocoded so far (0 hits) [2026-04-10 15:22:38] ...1000/1206 geocoded so far (0 hits) [2026-04-10 15:22:43] ...1050/1206 geocoded so far (0 hits) [2026-04-10 15:22:47] ...1100/1206 geocoded so far (0 hits) [2026-04-10 15:22:51] ...1150/1206 geocoded so far (0 hits) [2026-04-10 15:22:55] ...1200/1206 geocoded so far (0 hits) [2026-04-10 15:22:56] Geocoded 0 of 1206 permits [2026-04-10 15:22:56] Database: 4539 total permits across all municipalities [2026-04-10 16:19:28] ================================================================= [2026-04-10 16:19:28] Orion Permit Agent starting (BC + Calgary)... [2026-04-10 16:19:28] Monitoring 9 municipalities [2026-04-10 16:19:29] Scraping: City of Surrey (pdf) [2026-04-10 16:19:29] City of Surrey: PDF unchanged, skipping parse [2026-04-10 16:19:29] → City of Surrey: no changes detected [2026-04-10 16:19:30] Scraping: Township of Langley (html_portal) [2026-04-10 16:19:31] → Township of Langley: no changes detected [2026-04-10 16:19:32] Scraping: City of Abbotsford (arcgis) [2026-04-10 16:19:33] City of Abbotsford: 525 records from ArcGIS API [2026-04-10 16:19:33] → 0 new permits for City of Abbotsford (525 total scraped) [2026-04-10 16:19:34] Scraping: City of Chilliwack (html_weekly) [2026-04-10 16:19:34] Installing OCR dependencies (one-time, may take a minute)... [2026-04-10 16:19:34] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-10 16:19:34] Chilliwack: skipping — OCR dependencies not available [2026-04-10 16:19:34] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-10 16:19:35] Scraping: City of Burnaby (pdf) [2026-04-10 16:19:35] City of Burnaby: PDF unchanged, skipping parse [2026-04-10 16:19:35] → City of Burnaby: no changes detected [2026-04-10 16:19:36] Scraping: City of Richmond (pdf) [2026-04-10 16:19:36] City of Richmond: PDF unchanged, skipping parse [2026-04-10 16:19:36] → City of Richmond: no changes detected [2026-04-10 16:19:37] Scraping: City of Coquitlam (arcgis_coq) [2026-04-10 16:19:38] Coquitlam: extracted 486 permits from FeatureServer [2026-04-10 16:19:38] → 0 new permits for City of Coquitlam (486 total scraped) [2026-04-10 16:19:39] Scraping: City of Delta (arcgis_delta) [2026-04-10 16:19:39] Delta: extracted 1064 permits from ArcGIS FeatureServer [2026-04-10 16:19:39] → 0 new permits for City of Delta (1064 total scraped) [2026-04-10 16:19:40] Scraping: City of Calgary (soda) [2026-04-10 16:19:52] Calgary: 206 qualifying permits from SODA API [2026-04-10 16:19:52] → 0 new permits for City of Calgary (206 total scraped) [2026-04-10 16:19:52] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-04-10 16:19:52] Geocoding 1206 permits... [2026-04-10 16:19:56] ...50/1206 geocoded so far (0 hits) [2026-04-10 16:20:00] ...100/1206 geocoded so far (0 hits) [2026-04-10 16:20:05] ...150/1206 geocoded so far (0 hits) [2026-04-10 16:20:10] ...200/1206 geocoded so far (0 hits) [2026-04-10 16:20:14] ...250/1206 geocoded so far (0 hits) [2026-04-10 16:20:18] ...300/1206 geocoded so far (0 hits) [2026-04-10 16:20:23] ...350/1206 geocoded so far (0 hits) [2026-04-10 16:20:27] ...400/1206 geocoded so far (0 hits) [2026-04-10 16:20:31] ...450/1206 geocoded so far (0 hits) [2026-04-10 16:20:35] ...500/1206 geocoded so far (0 hits) [2026-04-10 16:20:39] ...550/1206 geocoded so far (0 hits) [2026-04-10 16:20:44] ...600/1206 geocoded so far (0 hits) [2026-04-10 16:20:48] ...650/1206 geocoded so far (0 hits) [2026-04-10 16:20:53] ...700/1206 geocoded so far (23 hits) [2026-04-10 16:20:59] ...750/1206 geocoded so far (73 hits) [2026-04-10 16:21:05] ...800/1206 geocoded so far (123 hits) [2026-04-10 16:21:10] ...850/1206 geocoded so far (173 hits) [2026-04-10 16:21:17] ...900/1206 geocoded so far (223 hits) [2026-04-10 16:21:23] ...950/1206 geocoded so far (273 hits) [2026-04-10 16:21:28] ...1000/1206 geocoded so far (323 hits) [2026-04-10 16:21:34] ...1050/1206 geocoded so far (373 hits) [2026-04-10 16:21:40] ...1100/1206 geocoded so far (423 hits) [2026-04-10 16:21:46] ...1150/1206 geocoded so far (473 hits) [2026-04-10 16:21:52] ...1200/1206 geocoded so far (523 hits) [2026-04-10 16:21:53] Geocoded 529 of 1206 permits [2026-04-10 16:21:53] Database: 4539 total permits across all municipalities [2026-04-10 16:21:53] Excel export skipped — openpyxl not installed (pip3 install openpyxl) [2026-04-10 16:21:53] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-10 16:21:53] No new permits this run — no email sent. [2026-04-10 16:21:53] Agent run complete. [2026-04-10 16:21:53] ================================================================= [2026-04-13 08:07:58] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-13 09:07:45] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-13 09:09:25] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-13 16:25:40] ================================================================= [2026-04-13 16:25:40] Orion Permit Agent starting (BC + Calgary)... [2026-04-13 16:25:40] Monitoring 12 municipalities [2026-04-13 16:25:41] Scraping: City of Surrey (pdf) [2026-04-13 16:25:41] City of Surrey: PDF unchanged, skipping parse [2026-04-13 16:25:41] → City of Surrey: no changes detected [2026-04-13 16:25:42] Scraping: Township of Langley (html_portal) [2026-04-13 16:25:44] Langley: extracted 770 permits from FeatureServer [2026-04-13 16:25:44] → 0 new permits for Township of Langley (770 total scraped) [2026-04-13 16:25:45] Scraping: City of Abbotsford (arcgis) [2026-04-13 16:25:45] City of Abbotsford: 526 records from ArcGIS API [2026-04-13 16:25:45] → 1 new permits for City of Abbotsford (526 total scraped) [2026-04-13 16:25:46] Scraping: City of Chilliwack (html_weekly) [2026-04-13 16:25:46] Installing OCR dependencies (one-time, may take a minute)... [2026-04-13 16:25:46] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-13 16:25:46] Chilliwack: skipping — OCR dependencies not available [2026-04-13 16:25:46] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-13 16:25:47] Scraping: City of Burnaby (pdf) [2026-04-13 16:25:48] City of Burnaby: PDF unchanged, skipping parse [2026-04-13 16:25:48] → City of Burnaby: no changes detected [2026-04-13 16:25:49] Scraping: City of Richmond (pdf) [2026-04-13 16:25:49] City of Richmond: PDF unchanged, skipping parse [2026-04-13 16:25:49] → City of Richmond: no changes detected [2026-04-13 16:25:50] Scraping: City of Coquitlam (arcgis_coq) [2026-04-13 16:25:51] Coquitlam: extracted 484 permits from FeatureServer [2026-04-13 16:25:51] → 0 new permits for City of Coquitlam (484 total scraped) [2026-04-13 16:25:52] Scraping: City of Delta (arcgis_delta) [2026-04-13 16:25:52] Delta: extracted 1062 permits from ArcGIS FeatureServer [2026-04-13 16:25:52] → 3 new permits for City of Delta (1062 total scraped) [2026-04-13 16:25:53] Scraping: City of Calgary (soda) [2026-04-13 16:25:54] Calgary: 209 qualifying permits from SODA API [2026-04-13 16:25:54] → 3 new permits for City of Calgary (209 total scraped) [2026-04-13 16:25:56] Scraping: City of Victoria (arcgis_victoria) [2026-04-13 16:25:56] Victoria: extracted 260 active applications from MapServer [2026-04-13 16:25:56] → 260 new permits for City of Victoria (260 total scraped) [2026-04-13 16:25:57] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-04-13 16:25:57] Nanaimo layer 21: 36 records [2026-04-13 16:25:57] Nanaimo layer 22: 28 records [2026-04-13 16:25:57] Nanaimo total: 64 permits [2026-04-13 16:25:57] → 64 new permits for City of Nanaimo (64 total scraped) [2026-04-13 16:25:58] Scraping: District of Squamish (arcgis_squamish) [2026-04-13 16:26:28] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-13 16:26:28] Squamish layer 5 (RZ): no response [2026-04-13 16:26:58] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-13 16:26:58] Squamish layer 6 (SD): no response [2026-04-13 16:26:58] Squamish total: 0 permits [2026-04-13 16:26:58] → District of Squamish: no permits parsed (site may be unavailable) [2026-04-13 16:26:58] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-04-13 16:26:58] Geocoding 681 permits... [2026-04-13 16:27:02] ...50/681 geocoded so far (0 hits) [2026-04-13 16:27:07] ...100/681 geocoded so far (0 hits) [2026-04-13 16:27:11] ...150/681 geocoded so far (0 hits) [2026-04-13 16:27:16] ...200/681 geocoded so far (0 hits) [2026-04-13 16:27:20] ...250/681 geocoded so far (0 hits) [2026-04-13 16:27:25] ...300/681 geocoded so far (0 hits) [2026-04-13 16:27:29] ...350/681 geocoded so far (0 hits) [2026-04-13 16:27:33] ...400/681 geocoded so far (0 hits) [2026-04-13 16:27:37] ...450/681 geocoded so far (0 hits) [2026-04-13 16:27:41] ...500/681 geocoded so far (0 hits) [2026-04-13 16:27:46] ...550/681 geocoded so far (0 hits) [2026-04-13 16:27:50] ...600/681 geocoded so far (0 hits) [2026-04-13 16:27:54] ...650/681 geocoded so far (0 hits) [2026-04-13 16:27:57] Geocoded 3 of 681 permits [2026-04-13 16:27:57] Database: 4870 total permits across all municipalities [2026-04-13 16:28:01] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (4870 permits, 14 sheets) [2026-04-13 16:28:01] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-13 16:28:01] Sending email alert for 331 new permits... [2026-04-13 16:28:06] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW3PR05CA0003.namprd05.prod.outlook.com 2026-04-13T23:28:06.482Z 08DE989C0A528A36]') [2026-04-13 16:28:06] Agent run complete. [2026-04-13 16:28:06] ================================================================= [2026-04-14 11:02:32] Kamloops: 68 active development records [2026-04-14 11:02:33] City of Langley: 24 permits [2026-04-14 11:14:36] City of Langley: 24 permits [2026-04-14 11:15:08] City of Langley: 24 permits [2026-04-14 11:15:50] ================================================================= [2026-04-14 11:15:50] Orion Permit Agent starting (BC + Calgary)... [2026-04-14 11:15:50] Monitoring 14 municipalities [2026-04-14 11:15:51] Scraping: City of Surrey (pdf) [2026-04-14 11:15:51] City of Surrey: PDF unchanged, skipping parse [2026-04-14 11:15:51] → City of Surrey: no changes detected [2026-04-14 11:15:52] Scraping: Township of Langley (html_portal) [2026-04-14 11:15:54] Langley: extracted 771 permits from FeatureServer [2026-04-14 11:15:54] → 2 new permits for Township of Langley (771 total scraped) [2026-04-14 11:15:55] Scraping: City of Abbotsford (arcgis) [2026-04-14 11:15:57] City of Abbotsford: 526 records from ArcGIS API [2026-04-14 11:15:57] → 1 new permits for City of Abbotsford (526 total scraped) [2026-04-14 11:15:58] Scraping: City of Chilliwack (html_weekly) [2026-04-14 11:15:58] Installing OCR dependencies (one-time, may take a minute)... [2026-04-14 11:15:58] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-14 11:15:58] Chilliwack: skipping — OCR dependencies not available [2026-04-14 11:15:58] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-14 11:15:59] Scraping: City of Burnaby (pdf) [2026-04-14 11:16:00] City of Burnaby: PDF unchanged, skipping parse [2026-04-14 11:16:00] → City of Burnaby: no changes detected [2026-04-14 11:16:01] Scraping: City of Richmond (pdf) [2026-04-14 11:16:01] City of Richmond: PDF unchanged, skipping parse [2026-04-14 11:16:01] → City of Richmond: no changes detected [2026-04-14 11:16:02] Scraping: City of Coquitlam (arcgis_coq) [2026-04-14 11:16:03] Coquitlam: extracted 484 permits from FeatureServer [2026-04-14 11:16:03] → 0 new permits for City of Coquitlam (484 total scraped) [2026-04-14 11:16:04] Scraping: City of Delta (arcgis_delta) [2026-04-14 11:16:04] Delta: extracted 1061 permits from ArcGIS FeatureServer [2026-04-14 11:16:04] → 2 new permits for City of Delta (1061 total scraped) [2026-04-14 11:16:05] Scraping: City of Calgary (soda) [2026-04-14 11:16:19] Calgary: 209 qualifying permits from SODA API [2026-04-14 11:16:19] → 0 new permits for City of Calgary (209 total scraped) [2026-04-14 11:16:20] Scraping: City of Victoria (arcgis_victoria) [2026-04-14 11:16:21] Victoria: extracted 260 active applications from MapServer [2026-04-14 11:16:21] → 0 new permits for City of Victoria (260 total scraped) [2026-04-14 11:16:22] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-04-14 11:16:22] Nanaimo layer 21: 36 records [2026-04-14 11:16:22] Nanaimo layer 22: 28 records [2026-04-14 11:16:22] Nanaimo total: 64 permits [2026-04-14 11:16:22] → 0 new permits for City of Nanaimo (64 total scraped) [2026-04-14 11:16:23] Scraping: District of Squamish (arcgis_squamish) [2026-04-14 11:16:53] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-14 11:16:53] Squamish layer 5 (RZ): no response [2026-04-14 11:17:23] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-14 11:17:23] Squamish layer 6 (SD): no response [2026-04-14 11:17:23] Squamish total: 0 permits [2026-04-14 11:17:23] → District of Squamish: no permits parsed (site may be unavailable) [2026-04-14 11:17:24] Scraping: City of Kamloops (arcgis_kamloops) [2026-04-14 11:17:25] Kamloops: 68 active development records [2026-04-14 11:17:25] → 68 new permits for City of Kamloops (68 total scraped) [2026-04-14 11:17:26] Scraping: City of Langley (html_langley_city) [2026-04-14 11:17:27] City of Langley: 24 permits [2026-04-14 11:17:27] → 24 new permits for City of Langley (24 total scraped) [2026-04-14 11:17:27] Coordinate cleanup: nulled 0 cache entries, cleared 6 permit coordinates for re-geocoding [2026-04-14 11:17:27] Geocoding 713 permits... [2026-04-14 11:17:31] ...50/713 geocoded so far (0 hits) [2026-04-14 11:17:35] ...100/713 geocoded so far (0 hits) [2026-04-14 11:17:40] ...150/713 geocoded so far (0 hits) [2026-04-14 11:17:45] ...200/713 geocoded so far (0 hits) [2026-04-14 11:17:49] ...250/713 geocoded so far (0 hits) [2026-04-14 11:17:53] ...300/713 geocoded so far (0 hits) [2026-04-14 11:17:58] ...350/713 geocoded so far (0 hits) [2026-04-14 11:18:02] ...400/713 geocoded so far (0 hits) [2026-04-14 11:18:06] ...450/713 geocoded so far (0 hits) [2026-04-14 11:18:10] ...500/713 geocoded so far (0 hits) [2026-04-14 11:18:14] ...550/713 geocoded so far (0 hits) [2026-04-14 11:18:19] ...600/713 geocoded so far (0 hits) [2026-04-14 11:18:23] ...650/713 geocoded so far (0 hits) [2026-04-14 11:18:29] ...700/713 geocoded so far (21 hits) [2026-04-14 11:18:31] Geocoded 34 of 713 permits [2026-04-14 11:18:31] Database: 4967 total permits across all municipalities [2026-04-14 11:18:35] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (4967 permits, 16 sheets) [2026-04-14 11:18:35] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-14 11:18:35] Sending email alert for 97 new permits... [2026-04-14 11:18:41] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR03CA0224.namprd03.prod.outlook.com 2026-04-14T18:18:41.177Z 08DE99C5C70AD0C5]') [2026-04-14 11:18:41] Agent run complete. [2026-04-14 11:18:41] ================================================================= [2026-04-15 14:56:00] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-16 14:43:38] City of Langford — meeting 2026-03-09 (Sustainable Development Advisory Committee): 2 permit items [2026-04-16 14:43:39] City of Langford — meeting 2026-04-07 (Council Meeting): 1 permit items [2026-04-16 14:43:39] City of Langford — meeting 2026-04-13 (Sustainable Development Advisory Committee): 2 permit items [2026-04-16 14:43:39] City of Langford — meeting 2026-04-07 (Special Council Meeting): 1 permit items [2026-04-16 14:43:40] City of Langford — meeting 2026-03-16 (Council Meeting): 2 permit items [2026-04-16 14:43:40] City of Langford — meeting 2026-03-23 (Special Council Meeting): 0 permit items [2026-04-16 14:43:40] City of Langford — meeting 2026-03-30 (Special Council Meeting): 1 permit items [2026-04-16 14:43:40] City of Langford total: 8 new permit agenda items [2026-04-16 14:43:48] eScribe fetch failed https://pub-kelowna.escribemeetings.com/feed.rss: [2026-04-23 09:49:50] ================================================================= [2026-04-23 09:49:50] Orion Permit Agent starting (BC + Calgary)... [2026-04-23 09:49:50] Monitoring 15 municipalities [2026-04-23 09:49:51] Scraping: City of Surrey (pdf) [2026-04-23 09:49:51] City of Surrey: PDF unchanged, skipping parse [2026-04-23 09:49:51] → City of Surrey: no changes detected [2026-04-23 09:49:52] Scraping: Township of Langley (html_portal) [2026-04-23 09:49:54] Langley: extracted 774 permits from FeatureServer [2026-04-23 09:49:54] → 2 new permits for Township of Langley (774 total scraped) [2026-04-23 09:49:55] Scraping: City of Abbotsford (arcgis) [2026-04-23 09:49:55] City of Abbotsford: 528 records from ArcGIS API [2026-04-23 09:49:55] → 3 new permits for City of Abbotsford (528 total scraped) [2026-04-23 09:49:56] Scraping: City of Chilliwack (html_weekly) [2026-04-23 09:49:56] Installing OCR dependencies (one-time, may take a minute)... [2026-04-23 09:49:56] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-23 09:49:56] Chilliwack: skipping — OCR dependencies not available [2026-04-23 09:49:56] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-23 09:49:57] Scraping: City of Burnaby (pdf) [2026-04-23 09:49:59] Burnaby PDF: parsed 138 permits [2026-04-23 09:49:59] → 21 new permits for City of Burnaby (138 total scraped) [2026-04-23 09:50:00] Scraping: City of Richmond (pdf) [2026-04-23 09:50:00] City of Richmond: PDF unchanged, skipping parse [2026-04-23 09:50:00] → City of Richmond: no changes detected [2026-04-23 09:50:01] Scraping: City of Coquitlam (arcgis_coq) [2026-04-23 09:50:02] Coquitlam: extracted 484 permits from FeatureServer [2026-04-23 09:50:02] → 1 new permits for City of Coquitlam (484 total scraped) [2026-04-23 09:50:03] Scraping: City of Delta (arcgis_delta) [2026-04-23 09:50:03] Delta: extracted 1054 permits from ArcGIS FeatureServer [2026-04-23 09:50:03] → 21 new permits for City of Delta (1054 total scraped) [2026-04-23 09:50:04] Scraping: City of Calgary (soda) [2026-04-23 09:50:07] Calgary: 218 qualifying permits from SODA API [2026-04-23 09:50:07] → 15 new permits for City of Calgary (218 total scraped) [2026-04-23 09:50:08] Scraping: City of Victoria (arcgis_victoria) [2026-04-23 09:50:08] Victoria: extracted 261 active applications from MapServer [2026-04-23 09:50:08] → 3 new permits for City of Victoria (261 total scraped) [2026-04-23 09:50:09] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-04-23 09:50:09] Nanaimo layer 21: 37 records [2026-04-23 09:50:09] Nanaimo layer 22: 28 records [2026-04-23 09:50:09] Nanaimo total: 65 permits [2026-04-23 09:50:09] → 1 new permits for City of Nanaimo (65 total scraped) [2026-04-23 09:50:10] Scraping: District of Squamish (arcgis_squamish) [2026-04-23 09:50:41] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-23 09:50:41] Squamish layer 5 (RZ): no response [2026-04-23 09:51:11] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-23 09:51:11] Squamish layer 6 (SD): no response [2026-04-23 09:51:11] Squamish total: 0 permits [2026-04-23 09:51:11] → District of Squamish: no permits parsed (site may be unavailable) [2026-04-23 09:51:12] Scraping: City of Kamloops (arcgis_kamloops) [2026-04-23 09:51:12] Kamloops: 68 active development records [2026-04-23 09:51:12] → 0 new permits for City of Kamloops (68 total scraped) [2026-04-23 09:51:13] Scraping: City of Langley (html_langley_city) [2026-04-23 09:51:14] City of Langley: 24 permits [2026-04-23 09:51:14] → 1 new permits for City of Langley (24 total scraped) [2026-04-23 09:51:15] Scraping: City of Langford (escribemeetings_langford) [2026-04-23 09:51:16] City of Langford — meeting 2026-04-20 (Council Meeting): 2 permit items [2026-04-23 09:51:16] City of Langford total: 2 new permit agenda items [2026-04-23 09:51:16] → 2 new permits for City of Langford (2 total scraped) [2026-04-23 09:51:16] Normalised permit_type for 15 permits [2026-04-23 09:51:16] Scored 5037 permits [2026-04-23 09:51:16] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-04-23 09:51:16] Geocoding 730 permits... [2026-04-23 09:51:20] ...50/730 geocoded so far (0 hits) [2026-04-23 09:51:24] ...100/730 geocoded so far (0 hits) [2026-04-23 09:51:29] ...150/730 geocoded so far (0 hits) [2026-04-23 09:51:34] ...200/730 geocoded so far (0 hits) [2026-04-23 09:51:38] ...250/730 geocoded so far (0 hits) [2026-04-23 09:51:42] ...300/730 geocoded so far (0 hits) [2026-04-23 09:51:47] ...350/730 geocoded so far (0 hits) [2026-04-23 09:51:51] ...400/730 geocoded so far (0 hits) [2026-04-23 09:51:55] ...450/730 geocoded so far (0 hits) [2026-04-23 09:51:59] ...500/730 geocoded so far (0 hits) [2026-04-23 09:52:03] ...550/730 geocoded so far (0 hits) [2026-04-23 09:52:08] ...600/730 geocoded so far (0 hits) [2026-04-23 09:52:12] ...650/730 geocoded so far (0 hits) [2026-04-23 09:52:15] Geocoder OOB: 'Highway' (Burnaby) score=73 (49.3054,-123.0253) rejected [2026-04-23 09:52:17] ...700/730 geocoded so far (14 hits) [2026-04-23 09:52:21] Geocoder OOB: 'DVP 01-26, Langley, BC' (Langley) score=75 (50.1242,-120.8484) rejected [2026-04-23 09:52:22] Geocoded 42 of 730 permits [2026-04-23 09:52:22] Database: 5037 total permits across all municipalities [2026-04-23 09:52:25] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (5037 permits, 17 sheets) [2026-04-23 09:52:25] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-23 09:52:25] Sending email alert for 70 new permits... [2026-04-23 09:52:31] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0225.namprd04.prod.outlook.com 2026-04-23T16:52:31.605Z 08DEA11050B10667]') [2026-04-23 09:52:31] Agent run complete. [2026-04-23 09:52:31] ================================================================= [2026-04-23 10:08:42] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:19:20] ================================================================= [2026-04-30 12:19:20] Orion Permit Agent starting (BC + Calgary)... [2026-04-30 12:19:20] Monitoring 15 municipalities [2026-04-30 12:19:21] Scraping: City of Surrey (pdf) [2026-04-30 12:19:21] City of Surrey: PDF unchanged, skipping parse [2026-04-30 12:19:21] → City of Surrey: no changes detected [2026-04-30 12:19:22] Scraping: Township of Langley (html_portal) [2026-04-30 12:19:24] Langley: extracted 779 permits from FeatureServer [2026-04-30 12:19:24] → 4 new permits for Township of Langley (779 total scraped) [2026-04-30 12:19:25] Scraping: City of Abbotsford (arcgis) [2026-04-30 12:19:25] City of Abbotsford: 527 records from ArcGIS API [2026-04-30 12:19:25] → 1 new permits for City of Abbotsford (527 total scraped) [2026-04-30 12:19:26] Scraping: City of Chilliwack (html_weekly) [2026-04-30 12:19:26] Installing OCR dependencies (one-time, may take a minute)... [2026-04-30 12:19:26] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-04-30 12:19:26] Chilliwack: skipping — OCR dependencies not available [2026-04-30 12:19:26] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-04-30 12:19:27] Scraping: City of Burnaby (pdf) [2026-04-30 12:19:28] City of Burnaby: PDF unchanged, skipping parse [2026-04-30 12:19:28] → City of Burnaby: no changes detected [2026-04-30 12:19:29] Scraping: City of Richmond (pdf) [2026-04-30 12:19:29] City of Richmond: PDF unchanged, skipping parse [2026-04-30 12:19:29] → City of Richmond: no changes detected [2026-04-30 12:19:30] Scraping: City of Coquitlam (arcgis_coq) [2026-04-30 12:19:31] Coquitlam: extracted 482 permits from FeatureServer [2026-04-30 12:19:31] → 5 new permits for City of Coquitlam (482 total scraped) [2026-04-30 12:19:32] Scraping: City of Delta (arcgis_delta) [2026-04-30 12:19:32] Delta: extracted 1056 permits from ArcGIS FeatureServer [2026-04-30 12:19:32] → 23 new permits for City of Delta (1056 total scraped) [2026-04-30 12:19:33] Scraping: City of Calgary (soda) [2026-04-30 12:19:35] Calgary: 219 qualifying permits from SODA API [2026-04-30 12:19:35] → 8 new permits for City of Calgary (219 total scraped) [2026-04-30 12:19:36] Scraping: City of Victoria (arcgis_victoria) [2026-04-30 12:19:37] Victoria: extracted 255 active applications from MapServer [2026-04-30 12:19:37] → 2 new permits for City of Victoria (255 total scraped) [2026-04-30 12:19:38] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-04-30 12:19:38] Nanaimo layer 21: 37 records [2026-04-30 12:19:38] Nanaimo layer 22: 28 records [2026-04-30 12:19:38] Nanaimo total: 65 permits [2026-04-30 12:19:38] → 0 new permits for City of Nanaimo (65 total scraped) [2026-04-30 12:19:39] Scraping: District of Squamish (arcgis_squamish) [2026-04-30 12:20:00] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:20:09] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-30 12:20:09] Squamish layer 5 (RZ): no response [2026-04-30 12:20:39] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-04-30 12:20:39] Squamish layer 6 (SD): no response [2026-04-30 12:20:39] Squamish total: 0 permits [2026-04-30 12:20:39] → District of Squamish: no permits parsed (site may be unavailable) [2026-04-30 12:20:40] Scraping: City of Kamloops (arcgis_kamloops) [2026-04-30 12:20:40] Kamloops: 68 active development records [2026-04-30 12:20:40] → 0 new permits for City of Kamloops (68 total scraped) [2026-04-30 12:20:41] Scraping: City of Langley (html_langley_city) [2026-04-30 12:20:44] City of Langley: 24 permits [2026-04-30 12:20:44] → 0 new permits for City of Langley (24 total scraped) [2026-04-30 12:20:45] Scraping: City of Langford (escribemeetings_langford) [2026-04-30 12:20:45] City of Langford total: 0 new permit agenda items [2026-04-30 12:20:45] → City of Langford: no changes detected [2026-04-30 12:20:45] Scored 5080 permits [2026-04-30 12:20:45] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-04-30 12:20:45] Geocoding 721 permits... [2026-04-30 12:20:49] ...50/721 geocoded so far (0 hits) [2026-04-30 12:20:54] ...100/721 geocoded so far (0 hits) [2026-04-30 12:20:58] ...150/721 geocoded so far (0 hits) [2026-04-30 12:21:03] ...200/721 geocoded so far (0 hits) [2026-04-30 12:21:08] ...250/721 geocoded so far (0 hits) [2026-04-30 12:21:12] ...300/721 geocoded so far (0 hits) [2026-04-30 12:21:16] ...350/721 geocoded so far (0 hits) [2026-04-30 12:21:20] ...400/721 geocoded so far (0 hits) [2026-04-30 12:21:24] ...450/721 geocoded so far (0 hits) [2026-04-30 12:21:29] ...500/721 geocoded so far (0 hits) [2026-04-30 12:21:33] ...550/721 geocoded so far (0 hits) [2026-04-30 12:21:37] ...600/721 geocoded so far (0 hits) [2026-04-30 12:21:41] ...650/721 geocoded so far (0 hits) [2026-04-30 12:21:46] ...700/721 geocoded so far (11 hits) [2026-04-30 12:21:48] Geocoded 32 of 721 permits [2026-04-30 12:21:48] Database: 5080 total permits across all municipalities [2026-04-30 12:21:52] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (5080 permits, 17 sheets) [2026-04-30 12:21:52] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:21:52] Sending email alert for 43 new permits... [2026-04-30 12:21:58] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR03CA0232.namprd03.prod.outlook.com 2026-04-30T19:21:58.036Z 08DEA5E02517A1C6]') [2026-04-30 12:21:58] Agent run complete. [2026-04-30 12:21:58] ================================================================= [2026-04-30 12:29:49] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:33:54] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:44:26] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:51:07] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 12:59:21] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-04-30 13:02:58] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-05-01 08:30:22] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-08-11 09:38:32] Kelowna: curl_cffi not installed — run: pip3 install curl_cffi [2026-08-11 09:40:52] Kelowna: 273 qualifying permits from 855 map markers (filtered to Development Permits / Rezoning / OCP Amendments) [2026-08-11 09:41:02] ================================================================= [2026-08-11 09:41:02] Orion Permit Agent starting (BC + Calgary)... [2026-08-11 09:41:02] Monitoring 16 municipalities [2026-08-11 09:41:02] Database after dedup: 4875 permits [2026-08-11 09:41:03] Scraping: City of Surrey (pdf) [2026-08-11 09:41:03] City of Surrey: PDF unchanged, skipping parse [2026-08-11 09:41:03] → City of Surrey: no changes detected [2026-08-11 09:41:04] Scraping: Township of Langley (html_portal) [2026-08-11 09:41:05] Langley: extracted 798 permits from FeatureServer [2026-08-11 09:41:05] → 51 new permits for Township of Langley (798 total scraped) [2026-08-11 09:41:06] Scraping: City of Abbotsford (arcgis) [2026-08-11 09:41:06] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-08-11 09:41:06] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-08-11 09:41:07] Scraping: City of Chilliwack (html_weekly) [2026-08-11 09:41:07] Installing OCR dependencies (one-time, may take a minute)... [2026-08-11 09:41:07] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-08-11 09:41:07] Chilliwack: skipping — OCR dependencies not available [2026-08-11 09:41:07] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-08-11 09:41:08] Scraping: City of Burnaby (pdf) [2026-08-11 09:41:09] ================================================================= [2026-08-11 09:41:09] Orion Permit Agent starting (BC + Calgary)... [2026-08-11 09:41:09] Monitoring 16 municipalities [2026-08-11 09:41:09] Database after dedup: 4875 permits [2026-08-11 09:41:10] Scraping: City of Surrey (pdf) [2026-08-11 09:41:10] City of Surrey: PDF unchanged, skipping parse [2026-08-11 09:41:10] → City of Surrey: no changes detected [2026-08-11 09:41:10] Burnaby PDF: parsed 143 permits [2026-08-11 09:41:10] → 143 new permits for City of Burnaby (143 total scraped) [2026-08-11 09:41:11] Scraping: Township of Langley (html_portal) [2026-08-11 09:41:11] → Township of Langley: no changes detected [2026-08-11 09:41:11] Scraping: City of Richmond (pdf) [2026-08-11 09:41:12] Scraping: City of Abbotsford (arcgis) [2026-08-11 09:41:12] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-08-11 09:41:12] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-08-11 09:41:13] Scraping: City of Chilliwack (html_weekly) [2026-08-11 09:41:13] Installing OCR dependencies (one-time, may take a minute)... [2026-08-11 09:41:14] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-08-11 09:41:14] Chilliwack: skipping — OCR dependencies not available [2026-08-11 09:41:14] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-08-11 09:41:14] → 340 new permits for City of Richmond (340 total scraped) [2026-08-11 09:41:15] Scraping: City of Burnaby (pdf) [2026-08-11 09:41:15] City of Burnaby: PDF unchanged, skipping parse [2026-08-11 09:41:15] → City of Burnaby: no changes detected [2026-08-11 09:41:15] Scraping: City of Coquitlam (arcgis_coq) [2026-08-11 09:41:15] Coquitlam: extracted 482 permits from FeatureServer [2026-08-11 09:41:15] → 55 new permits for City of Coquitlam (482 total scraped) [2026-08-11 09:41:16] Scraping: City of Richmond (pdf) [2026-08-11 09:41:16] City of Richmond: PDF unchanged, skipping parse [2026-08-11 09:41:16] → City of Richmond: no changes detected [2026-08-11 09:41:16] Scraping: City of Delta (arcgis_delta) [2026-08-11 09:41:17] Delta: extracted 1034 permits from ArcGIS FeatureServer [2026-08-11 09:41:17] → 181 new permits for City of Delta (1034 total scraped) [2026-08-11 09:41:17] Scraping: City of Coquitlam (arcgis_coq) [2026-08-11 09:41:17] Coquitlam: extracted 482 permits from FeatureServer [2026-08-11 09:41:17] → 55 new permits for City of Coquitlam (482 total scraped) [2026-08-11 09:41:18] Scraping: City of Calgary (soda) [2026-08-11 09:41:18] Scraping: City of Delta (arcgis_delta) [2026-08-11 09:41:18] Delta: extracted 1034 permits from ArcGIS FeatureServer [2026-08-11 09:41:18] → 181 new permits for City of Delta (1034 total scraped) [2026-08-11 09:41:19] Calgary: 214 qualifying permits from SODA API [2026-08-11 09:41:19] → 69 new permits for City of Calgary (214 total scraped) [2026-08-11 09:41:19] Scraping: City of Calgary (soda) [2026-08-11 09:41:20] Scraping: City of Victoria (arcgis_victoria) [2026-08-11 09:41:20] Calgary: 214 qualifying permits from SODA API [2026-08-11 09:41:20] → 69 new permits for City of Calgary (214 total scraped) [2026-08-11 09:41:20] Victoria: extracted 254 active applications from MapServer [2026-08-11 09:41:20] → 37 new permits for City of Victoria (254 total scraped) [2026-08-11 09:41:21] Scraping: City of Victoria (arcgis_victoria) [2026-08-11 09:41:21] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-08-11 09:41:21] Nanaimo layer 21: 43 records [2026-08-11 09:41:21] Nanaimo layer 22: 32 records [2026-08-11 09:41:21] Nanaimo total: 75 permits [2026-08-11 09:41:21] → 18 new permits for City of Nanaimo (75 total scraped) [2026-08-11 09:41:22] Victoria: extracted 254 active applications from MapServer [2026-08-11 09:41:22] → 37 new permits for City of Victoria (254 total scraped) [2026-08-11 09:41:22] Scraping: District of Squamish (arcgis_squamish) [2026-08-11 09:41:23] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-08-11 09:41:23] Nanaimo layer 21: 43 records [2026-08-11 09:41:23] Nanaimo layer 22: 32 records [2026-08-11 09:41:23] Nanaimo total: 75 permits [2026-08-11 09:41:23] → 18 new permits for City of Nanaimo (75 total scraped) [2026-08-11 09:41:24] Scraping: District of Squamish (arcgis_squamish) [2026-08-11 09:41:31] ================================================================= [2026-08-11 09:41:31] Orion Permit Agent starting (BC + Calgary)... [2026-08-11 09:41:31] Monitoring 16 municipalities [2026-08-11 09:41:31] Database after dedup: 4875 permits [2026-08-11 09:41:32] Scraping: City of Surrey (pdf) [2026-08-11 09:41:32] City of Surrey: PDF unchanged, skipping parse [2026-08-11 09:41:32] → City of Surrey: no changes detected [2026-08-11 09:41:33] Scraping: Township of Langley (html_portal) [2026-08-11 09:41:33] → Township of Langley: no changes detected [2026-08-11 09:41:34] Scraping: City of Abbotsford (arcgis) [2026-08-11 09:41:34] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-08-11 09:41:34] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-08-11 09:41:35] Scraping: City of Chilliwack (html_weekly) [2026-08-11 09:41:35] Installing OCR dependencies (one-time, may take a minute)... [2026-08-11 09:41:35] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-08-11 09:41:35] Chilliwack: skipping — OCR dependencies not available [2026-08-11 09:41:35] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-08-11 09:41:36] Scraping: City of Burnaby (pdf) [2026-08-11 09:41:36] City of Burnaby: PDF unchanged, skipping parse [2026-08-11 09:41:36] → City of Burnaby: no changes detected [2026-08-11 09:41:37] Scraping: City of Richmond (pdf) [2026-08-11 09:41:37] City of Richmond: PDF unchanged, skipping parse [2026-08-11 09:41:37] → City of Richmond: no changes detected [2026-08-11 09:41:38] Scraping: City of Coquitlam (arcgis_coq) [2026-08-11 09:41:39] Coquitlam: extracted 482 permits from FeatureServer [2026-08-11 09:41:39] → 55 new permits for City of Coquitlam (482 total scraped) [2026-08-11 09:41:40] Scraping: City of Delta (arcgis_delta) [2026-08-11 09:41:40] Delta: extracted 1034 permits from ArcGIS FeatureServer [2026-08-11 09:41:40] → 181 new permits for City of Delta (1034 total scraped) [2026-08-11 09:41:41] Scraping: City of Calgary (soda) [2026-08-11 09:41:42] Calgary: 214 qualifying permits from SODA API [2026-08-11 09:41:42] → 69 new permits for City of Calgary (214 total scraped) [2026-08-11 09:41:43] Scraping: City of Victoria (arcgis_victoria) [2026-08-11 09:41:43] Victoria: extracted 254 active applications from MapServer [2026-08-11 09:41:43] → 37 new permits for City of Victoria (254 total scraped) [2026-08-11 09:41:44] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-08-11 09:41:44] Nanaimo layer 21: 43 records [2026-08-11 09:41:44] Nanaimo layer 22: 32 records [2026-08-11 09:41:44] Nanaimo total: 75 permits [2026-08-11 09:41:44] → 18 new permits for City of Nanaimo (75 total scraped) [2026-08-11 09:41:45] Scraping: District of Squamish (arcgis_squamish) [2026-08-11 09:42:15] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-08-11 09:42:15] Squamish layer 5 (RZ): no response [2026-08-11 09:42:45] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-08-11 09:42:45] Squamish layer 6 (SD): no response [2026-08-11 09:42:45] Squamish total: 0 permits [2026-08-11 09:42:45] → District of Squamish: no permits parsed (site may be unavailable) [2026-08-11 09:42:46] Scraping: City of Kamloops (arcgis_kamloops) [2026-08-11 09:42:47] Kamloops: 68 active development records [2026-08-11 09:42:47] → 0 new permits for City of Kamloops (68 total scraped) [2026-08-11 09:42:48] Scraping: City of Langley (html_langley_city) [2026-08-11 09:42:49] City of Langley: 25 permits [2026-08-11 09:42:49] → 1 new permits for City of Langley (25 total scraped) [2026-08-11 09:42:50] Scraping: City of Langford (escribemeetings_langford) [2026-08-11 09:42:50] City of Langford — meeting 2026-08-10 (Sustainable Development Advisory Committee): 0 permit items [2026-08-11 09:42:50] City of Langford total: 0 new permit agenda items [2026-08-11 09:42:50] → City of Langford: no changes detected [2026-08-11 09:42:51] Scraping: City of Kelowna (kelowna_map) [2026-08-11 09:42:52] Kelowna: 273 qualifying permits from 855 map markers (filtered to Development Permits / Rezoning / OCP Amendments) [2026-08-11 09:42:52] → 273 new permits for City of Kelowna (273 total scraped) [2026-08-11 09:42:52] Scored 5509 permits [2026-08-11 09:42:52] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-08-11 09:42:52] Geocoding 902 permits... [2026-08-11 09:42:56] ...50/902 geocoded so far (0 hits) [2026-08-11 09:43:00] ...100/902 geocoded so far (0 hits) [2026-08-11 09:43:06] ...150/902 geocoded so far (0 hits) [2026-08-11 09:43:10] ...200/902 geocoded so far (0 hits) [2026-08-11 09:43:14] ...250/902 geocoded so far (0 hits) [2026-08-11 09:43:18] ...300/902 geocoded so far (0 hits) [2026-08-11 09:43:23] ...350/902 geocoded so far (0 hits) [2026-08-11 09:43:27] ...400/902 geocoded so far (0 hits) [2026-08-11 09:43:31] ...450/902 geocoded so far (0 hits) [2026-08-11 09:43:35] ...500/902 geocoded so far (0 hits) [2026-08-11 09:43:40] ...550/902 geocoded so far (0 hits) [2026-08-11 09:43:44] ...600/902 geocoded so far (0 hits) [2026-08-11 09:43:48] ...650/902 geocoded so far (0 hits) [2026-08-11 09:43:53] Geocoder OOB: '1100 D&E Lansdowne Drive - Birdie Indoor Golf' (Coquitlam) score=60 (48.3631,-123.6835) rejected [2026-08-11 09:43:54] ...700/902 geocoded so far (34 hits) [2026-08-11 09:44:00] ...750/902 geocoded so far (84 hits) [2026-08-11 09:44:06] ...800/902 geocoded so far (134 hits) [2026-08-11 09:44:12] ...850/902 geocoded so far (184 hits) [2026-08-11 09:44:18] ...900/902 geocoded so far (234 hits) [2026-08-11 09:44:19] Geocoded 236 of 902 permits [2026-08-11 09:44:19] Reverse-geocoding 834 permits missing an address... [2026-08-11 09:46:02] Reverse-geocoded 834 of 834 permits [2026-08-11 09:46:02] Database: 5509 total permits across all municipalities [2026-08-11 09:46:02] Excel export skipped — openpyxl not installed (pip3 install openpyxl) [2026-08-11 09:46:02] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-08-11 09:46:02] Sending email alert for 634 new permits... [2026-08-11 09:46:08] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW3PR06CA0008.namprd06.prod.outlook.com 2026-08-11T16:46:08.256Z 08DEF7ACEB56C60E]') [2026-08-11 09:46:08] Agent run complete. [2026-08-11 09:46:08] ================================================================= [2026-08-18 14:18:43] ================================================================= [2026-08-18 14:18:43] Orion Permit Agent starting (BC + Calgary)... [2026-08-18 14:18:43] Monitoring 16 municipalities [2026-08-18 14:18:43] Database after dedup: 5509 permits [2026-08-18 14:18:44] Scraping: City of Surrey (pdf) [2026-08-18 14:18:44] City of Surrey: PDF unchanged, skipping parse [2026-08-18 14:18:44] → City of Surrey: no changes detected [2026-08-18 14:18:45] Scraping: Township of Langley (html_portal) [2026-08-18 14:18:46] Langley: extracted 796 permits from FeatureServer [2026-08-18 14:18:46] → 51 new permits for Township of Langley (796 total scraped) [2026-08-18 14:18:47] Scraping: City of Abbotsford (arcgis) [2026-08-18 14:18:48] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-08-18 14:18:48] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-08-18 14:18:49] Scraping: City of Chilliwack (html_weekly) [2026-08-18 14:18:49] Installing OCR dependencies (one-time, may take a minute)... [2026-08-18 14:18:49] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-08-18 14:18:49] Chilliwack: skipping — OCR dependencies not available [2026-08-18 14:18:49] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-08-18 14:18:50] Scraping: City of Burnaby (pdf) [2026-08-18 14:18:50] City of Burnaby: PDF unchanged, skipping parse [2026-08-18 14:18:50] → City of Burnaby: no changes detected [2026-08-18 14:18:51] Scraping: City of Richmond (pdf) [2026-08-18 14:18:51] City of Richmond: PDF unchanged, skipping parse [2026-08-18 14:18:51] → City of Richmond: no changes detected [2026-08-18 14:18:52] Scraping: City of Coquitlam (arcgis_coq) [2026-08-18 14:18:53] Coquitlam: extracted 482 permits from FeatureServer [2026-08-18 14:18:53] → 2 new permits for City of Coquitlam (482 total scraped) [2026-08-18 14:18:54] Scraping: City of Delta (arcgis_delta) [2026-08-18 14:18:54] Delta: extracted 1050 permits from ArcGIS FeatureServer [2026-08-18 14:18:54] → 20 new permits for City of Delta (1050 total scraped) [2026-08-18 14:18:55] Scraping: City of Calgary (soda) [2026-08-18 14:18:58] Calgary: 211 qualifying permits from SODA API [2026-08-18 14:18:58] → 3 new permits for City of Calgary (211 total scraped) [2026-08-18 14:18:59] Scraping: City of Victoria (arcgis_victoria) [2026-08-18 14:18:59] Victoria: extracted 249 active applications from MapServer [2026-08-18 14:18:59] → 3 new permits for City of Victoria (249 total scraped) [2026-08-18 14:19:00] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-08-18 14:19:00] Nanaimo layer 21: 44 records [2026-08-18 14:19:00] Nanaimo layer 22: 31 records [2026-08-18 14:19:00] Nanaimo total: 75 permits [2026-08-18 14:19:00] → 1 new permits for City of Nanaimo (75 total scraped) [2026-08-18 14:19:01] Scraping: District of Squamish (arcgis_squamish) [2026-08-18 14:19:31] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-08-18 14:19:32] Squamish layer 5 (RZ): no response [2026-08-18 14:20:02] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-08-18 14:20:02] Squamish layer 6 (SD): no response [2026-08-18 14:20:02] Squamish total: 0 permits [2026-08-18 14:20:02] → District of Squamish: no permits parsed (site may be unavailable) [2026-08-18 14:20:03] Scraping: City of Kamloops (arcgis_kamloops) [2026-08-18 14:20:03] Kamloops: 68 active development records [2026-08-18 14:20:03] → 0 new permits for City of Kamloops (68 total scraped) [2026-08-18 14:20:04] Scraping: City of Langley (html_langley_city) [2026-08-18 14:20:05] City of Langley: 25 permits [2026-08-18 14:20:05] → 0 new permits for City of Langley (25 total scraped) [2026-08-18 14:20:06] Scraping: City of Langford (escribemeetings_langford) [2026-08-18 14:20:07] City of Langford — meeting 2026-08-17 (Special Council Meeting): 0 permit items [2026-08-18 14:20:07] City of Langford — meeting 2026-07-13 (Sustainable Development Advisory Committee): 0 permit items [2026-08-18 14:20:08] City of Langford — meeting 2026-07-20 (Council Meeting): 0 permit items [2026-08-18 14:20:08] City of Langford total: 0 new permit agenda items [2026-08-18 14:20:08] → City of Langford: no changes detected [2026-08-18 14:20:09] Scraping: City of Kelowna (kelowna_map) [2026-08-18 14:20:20] Kelowna: 268 qualifying permits from 862 map markers (filtered to Development Permits / Rezoning / OCP Amendments) [2026-08-18 14:20:21] → 8 new permits for City of Kelowna (268 total scraped) [2026-08-18 14:20:21] Scored 5597 permits [2026-08-18 14:20:21] Coordinate cleanup: nulled 0 cache entries, cleared 2 permit coordinates for re-geocoding [2026-08-18 14:20:21] Geocoding 741 permits... [2026-08-18 14:20:25] ...50/741 geocoded so far (0 hits) [2026-08-18 14:20:29] ...100/741 geocoded so far (0 hits) [2026-08-18 14:20:34] ...150/741 geocoded so far (0 hits) [2026-08-18 14:20:38] ...200/741 geocoded so far (0 hits) [2026-08-18 14:20:43] ...250/741 geocoded so far (0 hits) [2026-08-18 14:20:47] ...300/741 geocoded so far (0 hits) [2026-08-18 14:20:51] ...350/741 geocoded so far (0 hits) [2026-08-18 14:20:55] ...400/741 geocoded so far (0 hits) [2026-08-18 14:21:00] ...450/741 geocoded so far (0 hits) [2026-08-18 14:21:04] ...500/741 geocoded so far (0 hits) [2026-08-18 14:21:08] ...550/741 geocoded so far (0 hits) [2026-08-18 14:21:12] ...600/741 geocoded so far (0 hits) [2026-08-18 14:21:16] ...650/741 geocoded so far (0 hits) [2026-08-18 14:21:19] Geocoder OOB: '3100 Block of 261A Street' (Langley) score=92 (49.0067,-122.2609) rejected [2026-08-18 14:21:22] Geocoder OOB: '7400 Block of 198B Street' (Langley) score=92 (49.0060,-122.2629) rejected [2026-08-18 14:21:22] ...700/741 geocoded so far (30 hits) [2026-08-18 14:21:27] Geocoded 69 of 741 permits [2026-08-18 14:21:27] Reverse-geocoding 6 permits missing an address... [2026-08-18 14:21:28] Reverse-geocoded 6 of 6 permits [2026-08-18 14:21:28] Database: 5597 total permits across all municipalities [2026-08-18 14:21:31] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (5597 permits, 18 sheets) [2026-08-18 14:21:31] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-08-18 14:21:31] Sending email alert for 88 new permits... [2026-08-18 14:21:37] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0385.namprd04.prod.outlook.com 2026-08-18T21:21:37.468Z 08DEFB456B254B7C]') [2026-08-18 14:21:37] Agent run complete. [2026-08-18 14:21:37] ================================================================= [2026-08-18 14:30:59] Duncan: 14 applications from engagement portal [2026-08-18 14:31:27] ================================================================= [2026-08-18 14:31:27] Orion Permit Agent starting (BC + Calgary)... [2026-08-18 14:31:27] Monitoring 17 municipalities [2026-08-18 14:31:27] Database after dedup: 5597 permits [2026-08-18 14:31:28] Scraping: City of Surrey (pdf) [2026-08-18 14:31:28] City of Surrey: PDF unchanged, skipping parse [2026-08-18 14:31:28] → City of Surrey: no changes detected [2026-08-18 14:31:29] Scraping: Township of Langley (html_portal) [2026-08-18 14:31:30] → Township of Langley: no changes detected [2026-08-18 14:31:31] Scraping: City of Abbotsford (arcgis) [2026-08-18 14:31:31] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-08-18 14:31:31] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-08-18 14:31:32] Scraping: City of Chilliwack (html_weekly) [2026-08-18 14:31:32] Installing OCR dependencies (one-time, may take a minute)... [2026-08-18 14:31:32] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-08-18 14:31:32] Chilliwack: skipping — OCR dependencies not available [2026-08-18 14:31:32] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-08-18 14:31:33] Scraping: City of Burnaby (pdf) [2026-08-18 14:31:34] City of Burnaby: PDF unchanged, skipping parse [2026-08-18 14:31:34] → City of Burnaby: no changes detected [2026-08-18 14:31:35] Scraping: City of Richmond (pdf) [2026-08-18 14:31:35] City of Richmond: PDF unchanged, skipping parse [2026-08-18 14:31:35] → City of Richmond: no changes detected [2026-08-18 14:31:36] Scraping: City of Coquitlam (arcgis_coq) [2026-08-18 14:31:36] Coquitlam: extracted 482 permits from FeatureServer [2026-08-18 14:31:36] → 0 new permits for City of Coquitlam (482 total scraped) [2026-08-18 14:31:37] Scraping: City of Delta (arcgis_delta) [2026-08-18 14:31:37] Delta: extracted 1050 permits from ArcGIS FeatureServer [2026-08-18 14:31:37] → 0 new permits for City of Delta (1050 total scraped) [2026-08-18 14:31:38] Scraping: City of Calgary (soda) [2026-08-18 14:31:42] Calgary: 211 qualifying permits from SODA API [2026-08-18 14:31:42] → 0 new permits for City of Calgary (211 total scraped) [2026-08-18 14:31:43] Scraping: City of Victoria (arcgis_victoria) [2026-08-18 14:31:43] Victoria: extracted 249 active applications from MapServer [2026-08-18 14:31:43] → 0 new permits for City of Victoria (249 total scraped) [2026-08-18 14:31:44] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-08-18 14:31:44] Nanaimo layer 21: 44 records [2026-08-18 14:31:44] Nanaimo layer 22: 31 records [2026-08-18 14:31:44] Nanaimo total: 75 permits [2026-08-18 14:31:44] → 0 new permits for City of Nanaimo (75 total scraped) [2026-08-18 14:31:45] Scraping: District of Squamish (arcgis_squamish) [2026-08-18 14:32:16] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-08-18 14:32:16] Squamish layer 5 (RZ): no response [2026-08-18 14:32:46] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-08-18 14:32:46] Squamish layer 6 (SD): no response [2026-08-18 14:32:46] Squamish total: 0 permits [2026-08-18 14:32:46] → District of Squamish: no permits parsed (site may be unavailable) [2026-08-18 14:32:47] Scraping: City of Kamloops (arcgis_kamloops) [2026-08-18 14:32:47] Kamloops: 68 active development records [2026-08-18 14:32:47] → 0 new permits for City of Kamloops (68 total scraped) [2026-08-18 14:32:48] Scraping: City of Langley (html_langley_city) [2026-08-18 14:32:49] → City of Langley: no changes detected [2026-08-18 14:32:50] Scraping: City of Langford (escribemeetings_langford) [2026-08-18 14:32:50] City of Langford total: 0 new permit agenda items [2026-08-18 14:32:50] → City of Langford: no changes detected [2026-08-18 14:32:51] Scraping: City of Kelowna (kelowna_map) [2026-08-18 14:32:52] Kelowna: 268 qualifying permits from 862 map markers (filtered to Development Permits / Rezoning / OCP Amendments) [2026-08-18 14:32:52] → 0 new permits for City of Kelowna (268 total scraped) [2026-08-18 14:32:53] Scraping: City of Duncan (duncan_engagement) [2026-08-18 14:32:54] Duncan: 14 applications from engagement portal [2026-08-18 14:32:54] → 12 new permits for City of Duncan (14 total scraped) [2026-08-18 14:32:54] Scored 5609 permits [2026-08-18 14:32:54] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-08-18 14:32:54] Geocoding 684 permits... [2026-08-18 14:32:58] ...50/684 geocoded so far (0 hits) [2026-08-18 14:33:02] ...100/684 geocoded so far (0 hits) [2026-08-18 14:33:07] ...150/684 geocoded so far (0 hits) [2026-08-18 14:33:12] ...200/684 geocoded so far (0 hits) [2026-08-18 14:33:16] ...250/684 geocoded so far (0 hits) [2026-08-18 14:33:20] ...300/684 geocoded so far (0 hits) [2026-08-18 14:33:24] ...350/684 geocoded so far (0 hits) [2026-08-18 14:33:28] ...400/684 geocoded so far (0 hits) [2026-08-18 14:33:33] ...450/684 geocoded so far (0 hits) [2026-08-18 14:33:37] ...500/684 geocoded so far (0 hits) [2026-08-18 14:33:41] ...550/684 geocoded so far (0 hits) [2026-08-18 14:33:45] ...600/684 geocoded so far (0 hits) [2026-08-18 14:33:49] ...650/684 geocoded so far (0 hits) [2026-08-18 14:33:53] Geocoded 12 of 684 permits [2026-08-18 14:33:53] Database: 5609 total permits across all municipalities [2026-08-18 14:33:57] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (5609 permits, 19 sheets) [2026-08-18 14:33:57] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-08-18 14:33:57] Sending email alert for 12 new permits... [2026-08-18 14:34:03] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR03CA0097.namprd03.prod.outlook.com 2026-08-18T21:34:03.061Z 08DEFD0CC4B40C17]') [2026-08-18 14:34:03] Agent run complete. [2026-08-18 14:34:03] ================================================================= [2026-09-21 17:04:18] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-21 17:05:08] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 08:49:32] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:00:22] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:00:48] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:42:26] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:45:04] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:46:17] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:52:16] ================================================================= [2026-09-22 09:52:16] Orion Permit Agent starting (BC + Calgary)... [2026-09-22 09:52:16] Monitoring 17 municipalities [2026-09-22 09:52:16] Database after dedup: 5609 permits [2026-09-22 09:52:17] Scraping: City of Surrey (pdf) [2026-09-22 09:52:18] City of Surrey: PDF unchanged, skipping parse [2026-09-22 09:52:18] → City of Surrey: no changes detected [2026-09-22 09:52:19] Scraping: Township of Langley (html_portal) [2026-09-22 09:52:20] Langley: extracted 801 permits from FeatureServer [2026-09-22 09:52:20] → 16 new permits for Township of Langley (801 total scraped) [2026-09-22 09:52:21] Scraping: City of Abbotsford (arcgis) [2026-09-22 09:52:21] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-09-22 09:52:21] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-09-22 09:52:22] Scraping: City of Chilliwack (html_weekly) [2026-09-22 09:52:22] Installing OCR dependencies (one-time, may take a minute)... [2026-09-22 09:52:22] OCR install failed. Make sure tesseract is installed: brew install tesseract [2026-09-22 09:52:22] Chilliwack: skipping — OCR dependencies not available [2026-09-22 09:52:22] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-09-22 09:52:23] Scraping: City of Burnaby (pdf) [2026-09-22 09:52:25] Burnaby PDF: parsed 143 permits [2026-09-22 09:52:25] → 143 new permits for City of Burnaby (143 total scraped) [2026-09-22 09:52:26] Scraping: City of Richmond (pdf) [2026-09-22 09:52:28] → 342 new permits for City of Richmond (342 total scraped) [2026-09-22 09:52:29] Scraping: City of Coquitlam (arcgis_coq) [2026-09-22 09:52:29] Coquitlam: extracted 484 permits from FeatureServer [2026-09-22 09:52:29] → 11 new permits for City of Coquitlam (484 total scraped) [2026-09-22 09:52:30] Scraping: City of Delta (arcgis_delta) [2026-09-22 09:52:31] Delta: extracted 1023 permits from ArcGIS FeatureServer [2026-09-22 09:52:31] → 51 new permits for City of Delta (1023 total scraped) [2026-09-22 09:52:32] Scraping: City of Calgary (soda) [2026-09-22 09:52:34] Calgary: 213 qualifying permits from SODA API [2026-09-22 09:52:34] → 22 new permits for City of Calgary (213 total scraped) [2026-09-22 09:52:35] Scraping: City of Victoria (arcgis_victoria) [2026-09-22 09:52:36] Victoria: extracted 252 active applications from MapServer [2026-09-22 09:52:36] → 15 new permits for City of Victoria (252 total scraped) [2026-09-22 09:52:37] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-09-22 09:52:37] Nanaimo layer 21: 43 records [2026-09-22 09:52:37] Nanaimo layer 22: 32 records [2026-09-22 09:52:37] Nanaimo total: 75 permits [2026-09-22 09:52:37] → 7 new permits for City of Nanaimo (75 total scraped) [2026-09-22 09:52:38] Scraping: District of Squamish (arcgis_squamish) [2026-09-22 09:53:08] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-09-22 09:53:08] Squamish layer 5 (RZ): no response [2026-09-22 09:53:38] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-09-22 09:53:38] Squamish layer 6 (SD): no response [2026-09-22 09:53:38] Squamish total: 0 permits [2026-09-22 09:53:38] → District of Squamish: no permits parsed (site may be unavailable) [2026-09-22 09:53:39] Scraping: City of Kamloops (arcgis_kamloops) [2026-09-22 09:53:39] Kamloops: 68 active development records [2026-09-22 09:53:39] → 0 new permits for City of Kamloops (68 total scraped) [2026-09-22 09:53:40] Scraping: City of Langley (html_langley_city) [2026-09-22 09:53:42] City of Langley: 26 permits [2026-09-22 09:53:42] → 1 new permits for City of Langley (26 total scraped) [2026-09-22 09:53:43] Scraping: City of Langford (escribemeetings_langford) [2026-09-22 09:53:43] City of Langford — meeting 2026-09-08 (Council Meeting): 0 permit items [2026-09-22 09:53:44] City of Langford — meeting 2026-09-21 (Council Meeting): 0 permit items [2026-09-22 09:53:44] City of Langford total: 0 new permit agenda items [2026-09-22 09:53:44] → City of Langford: no changes detected [2026-09-22 09:53:45] Scraping: City of Kelowna (kelowna_map) [2026-09-22 09:53:56] Kelowna: 255 qualifying permits from 821 map markers (filtered to Development Permits / Rezoning / OCP Amendments) [2026-09-22 09:53:56] → 13 new permits for City of Kelowna (255 total scraped) [2026-09-22 09:53:57] Scraping: City of Duncan (duncan_engagement) [2026-09-22 09:53:58] Duncan: 15 applications from engagement portal [2026-09-22 09:53:58] → 2 new permits for City of Duncan (15 total scraped) [2026-09-22 09:53:58] Normalised permit_type for 52 permits [2026-09-22 09:53:58] Scored 6232 permits [2026-09-22 09:53:58] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-09-22 09:53:58] Geocoding 1238 permits... [2026-09-22 09:54:03] ...50/1238 geocoded so far (0 hits) [2026-09-22 09:54:07] ...100/1238 geocoded so far (0 hits) [2026-09-22 09:54:12] ...150/1238 geocoded so far (0 hits) [2026-09-22 09:54:17] ...200/1238 geocoded so far (0 hits) [2026-09-22 09:54:21] ...250/1238 geocoded so far (0 hits) [2026-09-22 09:54:25] ...300/1238 geocoded so far (0 hits) [2026-09-22 09:54:30] ...350/1238 geocoded so far (0 hits) [2026-09-22 09:54:34] ...400/1238 geocoded so far (0 hits) [2026-09-22 09:54:38] ...450/1238 geocoded so far (0 hits) [2026-09-22 09:54:42] ...500/1238 geocoded so far (0 hits) [2026-09-22 09:54:47] ...550/1238 geocoded so far (0 hits) [2026-09-22 09:54:51] ...600/1238 geocoded so far (0 hits) [2026-09-22 09:54:55] ...650/1238 geocoded so far (0 hits) [2026-09-22 09:55:01] Geocoder OOB: '8269, 8273, 8277, Construction 8287, 8289, 8293 and buildings 10th Avenue built' (Burnaby) score=51 (53.0892,-122.4414) rejected [2026-09-22 09:55:02] ...700/1238 geocoded so far (26 hits) [2026-09-22 09:55:04] Geocoder OOB: 'North Fraser Way Construction (M2' (Burnaby) score=78 (55.1620,-127.7622) rejected [2026-09-22 09:55:08] Geocoder OOB: 'Lougheed Hwy Advance with tower obligations on market #21-29).' (Burnaby) score=84 (49.2446,-123.1043) rejected [2026-09-22 09:55:11] ...750/1238 geocoded so far (71 hits) [2026-09-22 09:55:17] Geocoder OOB: '9815, 9821, 9827, Construction 9839, 9845, 9851, primarily 9863, 9869, 9873, 9879, 9994 and 9998 Drive' (Burnaby) score=61 (49.8408,-124.5234) rejected [2026-09-22 09:55:19] ...800/1238 geocoded so far (120 hits) [2026-09-22 09:55:27] Geocoder OOB: '18331 Westminster Hwy Appeal In Circulation 15/05/2026 2:24 PM Community Planner' (Richmond) score=97 (49.1703,-123.0190) rejected [2026-09-22 09:55:27] ...850/1238 geocoded so far (169 hits) [2026-09-22 09:55:30] Geocoder OOB: '23200 Gilley Rd 1040 Zoning Text Amendment In Circulation 15/01/2026 2:51 PM a retail liquor store at this site. Cynthia Lussier' (Richmond) score=97 (49.1765,-122.9671) rejected [2026-09-22 09:55:34] ...900/1238 geocoded so far (218 hits) [2026-09-22 09:55:35] Geocoder OOB: '1096255 BC LTD has applied to the City of Richmond to develop a 3-storey mixed use development' (Richmond) score=74 (49.2197,-122.9102) rejected [2026-09-22 09:55:37] Geocoder OOB: '23491 Westminster Highway from RSM/XL to a site specific zone to develop 83 three storey' (Richmond) score=97 (49.1827,-122.9629) rejected [2026-09-22 09:55:39] ...950/1238 geocoded so far (263 hits) [2026-09-22 09:55:41] Geocoder OOB: '4651 Smith Cr Servicing Agreement In Circulation 07/09/2023 11:19 AM This SA is associated with RZ:21 942276 Jeff Craddock Ajit Thaliwal (604)-727-5166' (Richmond) score=96 (49.1781,-122.9652) rejected [2026-09-22 09:55:43] Geocoder OOB: '23360 Westminster Hwy' (Richmond) score=100 (49.1811,-122.9649) rejected [2026-09-22 09:55:44] ...1000/1238 geocoded so far (308 hits) [2026-09-22 09:55:48] Geocoder OOB: '20411 Westminster Hwy' (Richmond) score=99 (49.1698,-122.9957) rejected [2026-09-22 09:55:49] ...1050/1238 geocoded so far (352 hits) [2026-09-22 09:55:55] Geocoder OOB: '4300 Thompson Rd Phased Strata Title Pending Final 04/09/2019 12:00 AM Development at 4300 Thompson Road (3 phases) Jeff Craddock Melvin Yap (604)-614-2823' (Richmond) score=97 (49.1808,-122.9587) rejected [2026-09-22 09:55:56] ...1100/1238 geocoded so far (401 hits) [2026-09-22 09:56:03] Geocoder OOB: '4300 Thompson Rd Servicing Agreement Inspection 09/05/2017 12:00 AM SA Works associated with RZ 15-713048 Jeff Craddock Melvin Yap (604)-614-2823' (Richmond) score=97 (49.1808,-122.9587) rejected [2026-09-22 09:56:04] ...1150/1238 geocoded so far (448 hits) [2026-09-22 09:56:04] Geocoder OOB: '18399 Blundell Rd Servicing Agreement Inspection 02/09/2016 12:00 AM SA works associated with ZT 13-639146 Jeff Craddock Ron Emerson (604)-688-2776' (Richmond) score=97 (49.1598,-123.0138) rejected [2026-09-22 09:56:12] ...1200/1238 geocoded so far (497 hits) [2026-09-22 09:56:20] Geocoded 535 of 1238 permits [2026-09-22 09:56:20] Reverse-geocoding 13 permits missing an address... [2026-09-22 09:56:22] Reverse-geocoded 13 of 13 permits [2026-09-22 09:56:22] Database: 6232 total permits across all municipalities [2026-09-22 09:56:26] Excel saved: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/permits_export.xlsx (6232 permits, 19 sheets) [2026-09-22 09:56:26] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 09:56:26] Sending email alert for 623 new permits... [2026-09-22 09:56:32] Email send error: (535, b'5.7.3 Authentication unsuccessful [MW4PR04CA0117.namprd04.prod.outlook.com 2026-09-22T16:56:32.453Z 08DF1875A1688EE0]') [2026-09-22 09:56:32] Agent run complete. [2026-09-22 09:56:32] ================================================================= [2026-09-22 10:14:49] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 10:28:38] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 10:29:01] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 10:40:05] Looking up 5361 BC Assessment links... [2026-09-22 10:40:46] ...100/5361 looked up so far (98 found) [2026-09-22 10:41:32] ...200/5361 looked up so far (191 found) [2026-09-22 10:42:13] ...300/5361 looked up so far (287 found) [2026-09-22 10:43:00] ...400/5361 looked up so far (386 found) [2026-09-22 10:43:41] ...500/5361 looked up so far (483 found) [2026-09-22 10:44:28] ...600/5361 looked up so far (579 found) [2026-09-22 10:45:09] ...700/5361 looked up so far (674 found) [2026-09-22 10:45:57] ...800/5361 looked up so far (706 found) [2026-09-22 10:46:37] ...900/5361 looked up so far (718 found) [2026-09-22 10:47:20] ...1000/5361 looked up so far (720 found) [2026-09-22 10:47:59] ...1100/5361 looked up so far (721 found) [2026-09-22 10:48:38] ...1200/5361 looked up so far (732 found) [2026-09-22 10:49:18] ...1300/5361 looked up so far (732 found) [2026-09-22 10:50:03] ...1400/5361 looked up so far (734 found) [2026-09-22 10:50:53] ...1500/5361 looked up so far (762 found) [2026-09-22 10:51:37] ...1600/5361 looked up so far (820 found) [2026-09-22 10:52:15] ...1700/5361 looked up so far (874 found) [2026-09-22 10:52:54] ...1800/5361 looked up so far (927 found) [2026-09-22 10:53:30] ...1900/5361 looked up so far (961 found) [2026-09-22 10:54:12] ...2000/5361 looked up so far (1016 found) [2026-09-22 10:54:52] ...2100/5361 looked up so far (1073 found) [2026-09-22 10:55:37] ...2200/5361 looked up so far (1141 found) [2026-09-22 10:56:23] ...2300/5361 looked up so far (1210 found) [2026-09-22 10:57:08] ...2400/5361 looked up so far (1274 found) [2026-09-22 10:57:52] ...2500/5361 looked up so far (1334 found) [2026-09-22 10:58:30] ...2600/5361 looked up so far (1422 found) [2026-09-22 10:59:10] ...2700/5361 looked up so far (1521 found) [2026-09-22 10:59:50] ...2800/5361 looked up so far (1618 found) [2026-09-22 11:00:38] ...2900/5361 looked up so far (1714 found) [2026-09-22 11:01:17] ...3000/5361 looked up so far (1813 found) [2026-09-22 11:01:59] ...3100/5361 looked up so far (1912 found) [2026-09-22 11:02:36] ...3200/5361 looked up so far (2008 found) [2026-09-22 11:03:18] ...3300/5361 looked up so far (2108 found) [2026-09-22 11:03:58] ...3400/5361 looked up so far (2207 found) [2026-09-22 11:04:37] ...3500/5361 looked up so far (2307 found) [2026-09-22 11:05:16] ...3600/5361 looked up so far (2402 found) [2026-09-22 11:06:01] ...3700/5361 looked up so far (2489 found) [2026-09-22 11:06:38] ...3800/5361 looked up so far (2577 found) [2026-09-22 11:07:24] ...3900/5361 looked up so far (2656 found) [2026-09-22 11:07:59] ...4000/5361 looked up so far (2676 found) [2026-09-22 11:08:40] ...4100/5361 looked up so far (2740 found) [2026-09-22 11:09:21] ...4200/5361 looked up so far (2815 found) [2026-09-22 11:10:00] ...4300/5361 looked up so far (2915 found) [2026-09-22 11:10:46] ...4400/5361 looked up so far (2995 found) [2026-09-22 11:11:27] ...4500/5361 looked up so far (2995 found) [2026-09-22 11:12:14] ...4600/5361 looked up so far (2995 found) [2026-09-22 11:12:53] ...4700/5361 looked up so far (3010 found) [2026-09-22 11:13:35] ...4800/5361 looked up so far (3059 found) [2026-09-22 11:14:21] ...4900/5361 looked up so far (3059 found) [2026-09-22 11:15:14] ...5000/5361 looked up so far (3059 found) [2026-09-22 11:16:00] ...5100/5361 looked up so far (3059 found) [2026-09-22 11:16:47] ...5200/5361 looked up so far (3059 found) [2026-09-22 11:17:30] ...5300/5361 looked up so far (3093 found) [2026-09-22 11:17:55] BC Assessment: found 3134 of 5361 links [2026-09-22 11:17:55] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 11:52:43] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 13:47:20] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-22 13:48:23] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-23 10:35:29] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-23 10:35:54] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-23 10:42:15] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-09-23 10:44:00] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-02 08:07:23] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 13:49:42] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 13:50:24] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 13:50:51] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 13:55:49] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 13:55:56] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 14:01:14] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 14:20:26] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 14:25:28] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 14:36:08] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 15:11:20] Looking up Surrey planning reports for 713 applications... [2026-10-05 15:12:16] ...50/713 checked (18 reports found) [2026-10-05 15:13:10] ...100/713 checked (43 reports found) [2026-10-05 15:14:03] ...150/713 checked (70 reports found) [2026-10-05 15:14:54] ...200/713 checked (101 reports found) [2026-10-05 15:15:52] ...250/713 checked (124 reports found) [2026-10-05 15:16:53] ...300/713 checked (147 reports found) [2026-10-05 15:17:49] ...350/713 checked (175 reports found) [2026-10-05 15:18:45] ...400/713 checked (209 reports found) [2026-10-05 15:19:43] ...450/713 checked (239 reports found) [2026-10-05 15:20:39] ...500/713 checked (268 reports found) [2026-10-05 15:21:37] ...550/713 checked (296 reports found) [2026-10-05 15:22:35] ...600/713 checked (322 reports found) [2026-10-05 15:23:30] ...650/713 checked (353 reports found) [2026-10-05 15:24:24] ...700/713 checked (389 reports found) [2026-10-05 15:24:39] Surrey: 396 of 713 applications have a published planning report [2026-10-05 15:24:39] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 15:46:58] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 15:48:55] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-05 15:49:46] Looking up Surrey planning reports for 1 applications... [2026-10-05 15:49:46] Surrey: 1 of 1 applications have a published planning report [2026-10-05 15:49:59] Looking up Surrey planning reports for 1 applications... [2026-10-05 15:49:59] Surrey: 0 of 1 applications have a published planning report [2026-10-07 11:30:31] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-08 13:39:52] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-08 13:41:23] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-08 13:43:31] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-08 13:47:23] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-09 08:21:33] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-09 08:22:46] Dashboard updated: /Users/mikhailortlieb/Documents/Webscraper/permit_agent_v2/dashboard.html [2026-10-09 21:19:47 +0000] [3624825] [INFO] Handling signal: hup [2026-10-09 21:19:47 +0000] [3624825] [INFO] Hang up: Master [2026-10-09 21:19:47 +0000] [4060245] [INFO] Booting worker with pid: 4060245 [2026-10-09 21:19:47 +0000] [4060246] [INFO] Booting worker with pid: 4060246 [2026-10-09 21:19:47 +0000] [4060247] [INFO] Booting worker with pid: 4060247 [2026-10-09 21:19:47 +0000] [3624833] [INFO] Worker exiting (pid: 3624833) [2026-10-09 21:19:47 +0000] [3624849] [INFO] Worker exiting (pid: 3624849) [2026-10-09 21:19:47 +0000] [3624845] [INFO] Worker exiting (pid: 3624845) [2026-10-09 21:19:47 +0000] [3624825] [ERROR] Worker (pid:3624833) was sent SIGTERM! [2026-10-09 21:19:47 +0000] [3624825] [ERROR] Worker (pid:3624845) was sent SIGTERM! [2026-10-09 21:19:47 +0000] [3624825] [ERROR] Worker (pid:3624849) was sent SIGTERM! [2026-10-10 11:24:39 +0000] [4060245] [INFO] Worker exiting (pid: 4060245) [2026-10-10 11:24:39 +0000] [4060246] [INFO] Worker exiting (pid: 4060246) [2026-10-10 11:24:39 +0000] [4060247] [INFO] Worker exiting (pid: 4060247) [2026-10-10 11:24:39 +0000] [3624825] [INFO] Handling signal: term [2026-10-10 11:24:39 +0000] [3624825] [ERROR] Worker (pid:4060245) was sent SIGTERM! [2026-10-10 11:24:39 +0000] [3624825] [ERROR] Worker (pid:4060246) was sent SIGTERM! [2026-10-10 11:24:39 +0000] [3624825] [ERROR] Worker (pid:4060247) was sent SIGTERM! [2026-10-10 11:24:40 +0000] [3624825] [INFO] Shutting down: Master [2026-10-10 11:24:40 +0000] [4124654] [INFO] Starting gunicorn 23.0.0 [2026-10-10 11:24:40 +0000] [4124654] [INFO] Listening at: http://127.0.0.1:5000 (4124654) [2026-10-10 11:24:40 +0000] [4124654] [INFO] Using worker: sync [2026-10-10 11:24:40 +0000] [4124661] [INFO] Booting worker with pid: 4124661 [2026-10-10 11:24:40 +0000] [4124674] [INFO] Booting worker with pid: 4124674 [2026-10-10 11:24:40 +0000] [4124677] [INFO] Booting worker with pid: 4124677 [2026-10-11 00:00:01] ================================================================= [2026-10-11 00:00:01] Orion Permit Agent starting (BC + Calgary)... [2026-10-11 00:00:01] Monitoring 17 municipalities [2026-10-11 00:00:01] Database after dedup: 6232 permits [2026-10-11 00:00:02] Scraping: City of Surrey (pdf) [2026-10-11 00:00:02] City of Surrey: PDF unchanged, skipping parse [2026-10-11 00:00:02] → City of Surrey: no changes detected [2026-10-11 00:00:03] Scraping: Township of Langley (html_portal) [2026-10-11 00:00:04] Langley: extracted 800 permits from FeatureServer [2026-10-11 00:00:04] → 5 new permits for Township of Langley (800 total scraped) [2026-10-11 00:00:05] Scraping: City of Abbotsford (arcgis) [2026-10-11 00:00:05] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-10-11 00:00:05] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-10-11 00:00:06] Scraping: City of Chilliwack (html_weekly) [2026-10-11 00:00:06] Chilliwack: 2 unprocessed report(s) to OCR (this may take a few minutes)... [2026-10-11 00:00:12] Chilliwack report 8638: 0 qualifying permits found [2026-10-11 00:00:18] Chilliwack report 8638: 0 qualifying permits found [2026-10-11 00:00:18] Chilliwack total qualifying permits this run: 0 [2026-10-11 00:00:18] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-10-11 00:00:19] Scraping: City of Burnaby (pdf) [2026-10-11 00:00:21] Burnaby PDF: parsed 144 permits [2026-10-11 00:00:21] → 1 new permits for City of Burnaby (144 total scraped) [2026-10-11 00:00:22] Scraping: City of Richmond (pdf) [2026-10-11 00:00:26] → 276 new permits for City of Richmond (303 total scraped) [2026-10-11 00:00:27] Scraping: City of Coquitlam (arcgis_coq) [2026-10-11 00:00:27] Coquitlam: extracted 477 permits from FeatureServer [2026-10-11 00:00:27] → 17 new permits for City of Coquitlam (477 total scraped) [2026-10-11 00:00:28] Scraping: City of Delta (arcgis_delta) [2026-10-11 00:00:29] Delta: extracted 1031 permits from ArcGIS FeatureServer [2026-10-11 00:00:29] → 31 new permits for City of Delta (1031 total scraped) [2026-10-11 00:00:30] Scraping: City of Calgary (soda) [2026-10-11 00:00:30] Calgary: 216 qualifying permits from SODA API [2026-10-11 00:00:30] → 16 new permits for City of Calgary (216 total scraped) [2026-10-11 00:00:31] Scraping: City of Victoria (arcgis_victoria) [2026-10-11 00:00:32] Victoria: extracted 250 active applications from MapServer [2026-10-11 00:00:32] → 8 new permits for City of Victoria (250 total scraped) [2026-10-11 00:00:33] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-10-11 00:00:33] Nanaimo layer 21: 45 records [2026-10-11 00:00:33] Nanaimo layer 22: 35 records [2026-10-11 00:00:33] Nanaimo total: 80 permits [2026-10-11 00:00:33] → 7 new permits for City of Nanaimo (80 total scraped) [2026-10-11 00:00:34] Scraping: District of Squamish (arcgis_squamish) [2026-10-11 00:01:05] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-10-11 00:01:05] Squamish layer 5 (RZ): no response [2026-10-11 00:01:35] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-10-11 00:01:35] Squamish layer 6 (SD): no response [2026-10-11 00:01:35] Squamish total: 0 permits [2026-10-11 00:01:35] → District of Squamish: no permits parsed (site may be unavailable) [2026-10-11 00:01:36] Scraping: City of Kamloops (arcgis_kamloops) [2026-10-11 00:01:36] Kamloops: 68 active development records [2026-10-11 00:01:36] → 0 new permits for City of Kamloops (68 total scraped) [2026-10-11 00:01:37] Scraping: City of Langley (html_langley_city) [2026-10-11 00:01:38] City of Langley: 26 permits [2026-10-11 00:01:38] → 0 new permits for City of Langley (26 total scraped) [2026-10-11 00:01:39] Scraping: City of Langford (escribemeetings_langford) [2026-10-11 00:01:39] City of Langford total: 0 new permit agenda items [2026-10-11 00:01:39] → City of Langford: no changes detected [2026-10-11 00:01:40] Scraping: City of Kelowna (kelowna_map) [2026-10-11 00:01:40] Kelowna: curl_cffi not installed — run: pip3 install curl_cffi [2026-10-11 00:01:40] → City of Kelowna: no permits parsed (site may be unavailable) [2026-10-11 00:01:41] Scraping: City of Duncan (duncan_engagement) [2026-10-11 00:01:41] ERROR scraping City of Duncan: No module named 'bs4' [2026-10-11 00:01:41] → City of Duncan: no changes detected [2026-10-11 00:01:41] Scored 6593 permits [2026-10-11 00:01:41] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-10-11 00:01:41] Geocoding 1033 permits... [2026-10-11 00:01:46] ...50/1033 geocoded so far (0 hits) [2026-10-11 00:01:50] ...100/1033 geocoded so far (0 hits) [2026-10-11 00:01:55] ...150/1033 geocoded so far (0 hits) [2026-10-11 00:01:59] ...200/1033 geocoded so far (0 hits) [2026-10-11 00:02:03] ...250/1033 geocoded so far (0 hits) [2026-10-11 00:02:07] ...300/1033 geocoded so far (0 hits) [2026-10-11 00:02:12] ...350/1033 geocoded so far (0 hits) [2026-10-11 00:02:16] ...400/1033 geocoded so far (0 hits) [2026-10-11 00:02:20] ...450/1033 geocoded so far (0 hits) [2026-10-11 00:02:24] ...500/1033 geocoded so far (0 hits) [2026-10-11 00:02:28] ...550/1033 geocoded so far (0 hits) [2026-10-11 00:02:32] ...600/1033 geocoded so far (0 hits) [2026-10-11 00:02:36] ...650/1033 geocoded so far (0 hits) [2026-10-11 00:02:41] ...700/1033 geocoded so far (0 hits) [2026-10-11 00:02:43] Geocoder OOB: 'Riverbend Court Mezzanine' (Burnaby) score=75 (49.1891,-122.9672) rejected [2026-10-11 00:02:50] Geocoder OOB: '23200 Gilley Rd 1040 Zoning Text AmendmentIn Circulation 15/01/2026 2:51 PM retail liquor store at this site. Cynthia Lussier' (Richmond) score=97 (49.1765,-122.9671) rejected [2026-10-11 00:02:54] ...750/1033 geocoded so far (45 hits) [2026-10-11 00:02:59] Geocoder OOB: '23391 Westminster Hwy' (Richmond) score=100 (49.1821,-122.9644) rejected [2026-10-11 00:03:02] ...800/1033 geocoded so far (92 hits) [2026-10-11 00:03:03] Geocoder OOB: '4651 Smith Cr Servicing Agreement In Circulation 07/09/2023 11:19 AM This SA is associated with RZ:21 942276 Paul Sandhu' (Richmond) score=96 (49.1781,-122.9652) rejected [2026-10-11 00:03:08] ...850/1033 geocoded so far (135 hits) [2026-10-11 00:03:16] ...900/1033 geocoded so far (182 hits) [2026-10-11 00:03:20] Geocoder OOB: '4300 Thompson Rd Phased Strata Title Pending Final 04/09/2019 12:00 AM Development at 4300 Thompson Road (3 phases) Paul Sandhu' (Richmond) score=97 (49.1808,-122.9587) rejected [2026-10-11 00:03:27] ...950/1033 geocoded so far (229 hits) [2026-10-11 00:03:31] Geocoder OOB: '18399 Blundell Rd Servicing Agreement Inspection 02/09/2016 12:00 AM SA works associated with ZT 13-639146 Paul Sandhu' (Richmond) score=97 (49.1598,-123.0138) rejected [2026-10-11 00:03:40] ...1000/1033 geocoded so far (278 hits) [2026-10-11 00:03:48] Geocoded 311 of 1033 permits [2026-10-11 00:03:48] Looking up 2572 BC Assessment links... [2026-10-11 00:04:18] ...100/2572 looked up so far (0 found) [2026-10-11 00:04:48] ...200/2572 looked up so far (0 found) [2026-10-11 00:05:18] ...300/2572 looked up so far (0 found) [2026-10-11 00:05:48] ...400/2572 looked up so far (0 found) [2026-10-11 00:06:18] ...500/2572 looked up so far (0 found) [2026-10-11 00:06:48] ...600/2572 looked up so far (0 found) [2026-10-11 00:07:18] ...700/2572 looked up so far (0 found) [2026-10-11 00:07:48] ...800/2572 looked up so far (0 found) [2026-10-11 00:08:18] ...900/2572 looked up so far (0 found) [2026-10-11 00:08:48] ...1000/2572 looked up so far (0 found) [2026-10-11 00:09:18] ...1100/2572 looked up so far (0 found) [2026-10-11 00:09:48] ...1200/2572 looked up so far (0 found) [2026-10-11 00:10:18] ...1300/2572 looked up so far (0 found) [2026-10-11 00:10:49] ...1400/2572 looked up so far (0 found) [2026-10-11 00:11:19] ...1500/2572 looked up so far (0 found) [2026-10-11 00:11:49] ...1600/2572 looked up so far (0 found) [2026-10-11 00:12:19] ...1700/2572 looked up so far (0 found) [2026-10-11 00:12:49] ...1800/2572 looked up so far (0 found) [2026-10-11 00:13:19] ...1900/2572 looked up so far (0 found) [2026-10-11 00:13:49] ...2000/2572 looked up so far (0 found) [2026-10-11 00:14:19] ...2100/2572 looked up so far (0 found) [2026-10-11 00:14:49] ...2200/2572 looked up so far (0 found) [2026-10-11 00:15:44] ...2300/2572 looked up so far (3 found) [2026-10-11 00:16:50] ...2400/2572 looked up so far (3 found) [2026-10-11 00:17:56] ...2500/2572 looked up so far (3 found) [2026-10-11 00:18:35] BC Assessment: found 59 of 2572 links [2026-10-11 00:18:35] Database: 6593 total permits across all municipalities [2026-10-11 00:18:43] Excel saved: /home/orionpermittool/public_html/permits_export.xlsx (6593 permits, 19 sheets) [2026-10-11 00:18:43] Dashboard updated: /home/orionpermittool/public_html/dashboard.html [2026-10-11 00:18:43] Sending email alert for 361 new permits... [2026-10-11 00:18:51] Email send error: (535, b'Incorrect authentication data') [2026-10-11 00:18:51] Agent run complete. [2026-10-11 00:18:51] ================================================================= [2026-10-18 00:00:02] ================================================================= [2026-10-18 00:00:02] Orion Permit Agent starting (BC + Calgary)... [2026-10-18 00:00:02] Monitoring 17 municipalities [2026-10-18 00:00:02] Database after dedup: 6593 permits [2026-10-18 00:00:03] Scraping: City of Surrey (pdf) [2026-10-18 00:00:03] City of Surrey: PDF unchanged, skipping parse [2026-10-18 00:00:03] → City of Surrey: no changes detected [2026-10-18 00:00:04] Scraping: Township of Langley (html_portal) [2026-10-18 00:00:05] Langley: extracted 801 permits from FeatureServer [2026-10-18 00:00:05] → 1 new permits for Township of Langley (801 total scraped) [2026-10-18 00:00:06] Scraping: City of Abbotsford (arcgis) [2026-10-18 00:00:06] ArcGIS parse error for City of Abbotsford: Expecting value: line 1 column 1 (char 0) [2026-10-18 00:00:06] → City of Abbotsford: no permits parsed (site may be unavailable) [2026-10-18 00:00:07] Scraping: City of Chilliwack (html_weekly) [2026-10-18 00:00:07] Chilliwack: 2 unprocessed report(s) to OCR (this may take a few minutes)... [2026-10-18 00:00:10] Chilliwack report 8641: 0 qualifying permits found [2026-10-18 00:00:13] Chilliwack report 8641: 0 qualifying permits found [2026-10-18 00:00:13] Chilliwack total qualifying permits this run: 0 [2026-10-18 00:00:13] → City of Chilliwack: no permits parsed (site may be unavailable) [2026-10-18 00:00:14] Scraping: City of Burnaby (pdf) [2026-10-18 00:00:14] City of Burnaby: PDF unchanged, skipping parse [2026-10-18 00:00:14] → City of Burnaby: no changes detected [2026-10-18 00:00:15] Scraping: City of Richmond (pdf) [2026-10-18 00:00:16] City of Richmond: PDF unchanged, skipping parse [2026-10-18 00:00:16] → City of Richmond: no changes detected [2026-10-18 00:00:17] Scraping: City of Coquitlam (arcgis_coq) [2026-10-18 00:00:17] Coquitlam: extracted 473 permits from FeatureServer [2026-10-18 00:00:17] → 5 new permits for City of Coquitlam (473 total scraped) [2026-10-18 00:00:18] Scraping: City of Delta (arcgis_delta) [2026-10-18 00:00:19] Delta: extracted 1031 permits from ArcGIS FeatureServer [2026-10-18 00:00:19] → 17 new permits for City of Delta (1031 total scraped) [2026-10-18 00:00:20] Scraping: City of Calgary (soda) [2026-10-18 00:00:23] Calgary: 211 qualifying permits from SODA API [2026-10-18 00:00:23] → 1 new permits for City of Calgary (211 total scraped) [2026-10-18 00:00:24] Scraping: City of Victoria (arcgis_victoria) [2026-10-18 00:00:24] Victoria: extracted 251 active applications from MapServer [2026-10-18 00:00:24] → 2 new permits for City of Victoria (251 total scraped) [2026-10-18 00:00:25] Scraping: City of Nanaimo (arcgis_nanaimo) [2026-10-18 00:00:26] Nanaimo layer 21: 46 records [2026-10-18 00:00:26] Nanaimo layer 22: 35 records [2026-10-18 00:00:26] Nanaimo total: 81 permits [2026-10-18 00:00:26] → 1 new permits for City of Nanaimo (81 total scraped) [2026-10-18 00:00:27] Scraping: District of Squamish (arcgis_squamish) [2026-10-18 00:00:57] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-10-18 00:00:57] Squamish layer 5 (RZ): no response [2026-10-18 00:01:27] HTTP GET failed for https://maps.squamish.ca/arcgis/rest/services/Maps/DS_Active_Applications/MapSer: [2026-10-18 00:01:27] Squamish layer 6 (SD): no response [2026-10-18 00:01:27] Squamish total: 0 permits [2026-10-18 00:01:27] → District of Squamish: no permits parsed (site may be unavailable) [2026-10-18 00:01:28] Scraping: City of Kamloops (arcgis_kamloops) [2026-10-18 00:01:29] Kamloops: 68 active development records [2026-10-18 00:01:29] → 0 new permits for City of Kamloops (68 total scraped) [2026-10-18 00:01:30] Scraping: City of Langley (html_langley_city) [2026-10-18 00:01:31] City of Langley: 26 permits [2026-10-18 00:01:31] → 0 new permits for City of Langley (26 total scraped) [2026-10-18 00:01:32] Scraping: City of Langford (escribemeetings_langford) [2026-10-18 00:01:32] City of Langford total: 0 new permit agenda items [2026-10-18 00:01:32] → City of Langford: no changes detected [2026-10-18 00:01:33] Scraping: City of Kelowna (kelowna_map) [2026-10-18 00:01:33] Kelowna: curl_cffi not installed — run: pip3 install curl_cffi [2026-10-18 00:01:33] → City of Kelowna: no permits parsed (site may be unavailable) [2026-10-18 00:01:34] Scraping: City of Duncan (duncan_engagement) [2026-10-18 00:01:34] ERROR scraping City of Duncan: No module named 'bs4' [2026-10-18 00:01:34] → City of Duncan: no changes detected [2026-10-18 00:01:34] Scored 6620 permits [2026-10-18 00:01:34] Coordinate cleanup: nulled 0 cache entries, cleared 0 permit coordinates for re-geocoding [2026-10-18 00:01:34] Geocoding 745 permits... [2026-10-18 00:01:38] ...50/745 geocoded so far (0 hits) [2026-10-18 00:01:42] ...100/745 geocoded so far (0 hits) [2026-10-18 00:01:48] ...150/745 geocoded so far (0 hits) [2026-10-18 00:01:52] ...200/745 geocoded so far (0 hits) [2026-10-18 00:01:56] ...250/745 geocoded so far (0 hits) [2026-10-18 00:02:00] ...300/745 geocoded so far (0 hits) [2026-10-18 00:02:04] ...350/745 geocoded so far (0 hits) [2026-10-18 00:02:08] ...400/745 geocoded so far (0 hits) [2026-10-18 00:02:13] ...450/745 geocoded so far (0 hits) [2026-10-18 00:02:17] ...500/745 geocoded so far (0 hits) [2026-10-18 00:02:21] ...550/745 geocoded so far (0 hits) [2026-10-18 00:02:25] ...600/745 geocoded so far (0 hits) [2026-10-18 00:02:29] ...650/745 geocoded so far (0 hits) [2026-10-18 00:02:33] ...700/745 geocoded so far (0 hits) [2026-10-18 00:02:40] Geocoded 23 of 745 permits [2026-10-18 00:02:40] Looking up 2539 BC Assessment links... [2026-10-18 00:03:10] ...100/2539 looked up so far (0 found) [2026-10-18 00:03:40] ...200/2539 looked up so far (0 found) [2026-10-18 00:04:10] ...300/2539 looked up so far (0 found) [2026-10-18 00:04:40] ...400/2539 looked up so far (0 found) [2026-10-18 00:05:10] ...500/2539 looked up so far (0 found) [2026-10-18 00:05:40] ...600/2539 looked up so far (0 found) [2026-10-18 00:06:10] ...700/2539 looked up so far (0 found) [2026-10-18 00:06:40] ...800/2539 looked up so far (0 found) [2026-10-18 00:07:10] ...900/2539 looked up so far (0 found) [2026-10-18 00:07:40] ...1000/2539 looked up so far (0 found) [2026-10-18 00:08:10] ...1100/2539 looked up so far (0 found) [2026-10-18 00:08:40] ...1200/2539 looked up so far (0 found) [2026-10-18 00:09:10] ...1300/2539 looked up so far (0 found) [2026-10-18 00:09:40] ...1400/2539 looked up so far (0 found) [2026-10-18 00:10:10] ...1500/2539 looked up so far (0 found) [2026-10-18 00:10:40] ...1600/2539 looked up so far (0 found) [2026-10-18 00:11:10] ...1700/2539 looked up so far (0 found) [2026-10-18 00:11:40] ...1800/2539 looked up so far (0 found) [2026-10-18 00:12:11] ...1900/2539 looked up so far (0 found) [2026-10-18 00:12:41] ...2000/2539 looked up so far (0 found) [2026-10-18 00:13:11] ...2100/2539 looked up so far (0 found) [2026-10-18 00:13:41] ...2200/2539 looked up so far (0 found) [2026-10-18 00:14:11] ...2300/2539 looked up so far (0 found) [2026-10-18 00:14:41] ...2400/2539 looked up so far (0 found) [2026-10-18 00:15:11] ...2500/2539 looked up so far (0 found) [2026-10-18 00:15:27] BC Assessment: found 24 of 2539 links [2026-10-18 00:15:27] Looking up Surrey planning reports for 317 applications... [2026-10-18 00:16:41] ...50/317 checked (0 reports found) [2026-10-18 00:17:52] ...100/317 checked (0 reports found) [2026-10-18 00:19:04] ...150/317 checked (0 reports found) [2026-10-18 00:20:15] ...200/317 checked (0 reports found) [2026-10-18 00:21:29] ...250/317 checked (0 reports found) [2026-10-18 00:22:41] ...300/317 checked (0 reports found) [2026-10-18 00:23:05] Surrey: 0 of 317 applications have a published planning report [2026-10-18 00:23:05] Database: 6620 total permits across all municipalities [2026-10-18 00:23:13] Excel saved: /home/orionpermittool/public_html/permits_export.xlsx (6620 permits, 19 sheets) [2026-10-18 00:23:13] Dashboard updated: /home/orionpermittool/public_html/dashboard.html [2026-10-18 00:23:13] Sending email alert for 27 new permits... [2026-10-18 00:23:21] Email send error: (535, b'Incorrect authentication data') [2026-10-18 00:23:21] Agent run complete. [2026-10-18 00:23:21] =================================================================