n; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90123238c79d96-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.insa'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b6e-7b09-be82-85ea4dbc5d58'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'3'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,718 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.insa&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,718 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,718 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,718 - DEBUG - response_closed.started
2026-03-08 07:19:20,718 - DEBUG - response_closed.complete
2026-03-08 07:19:20,719 - DEBUG - close.started
2026-03-08 07:19:20,719 - DEBUG - close.complete
2026-03-08 07:19:20,719 - DEBUG - 🏷 Product types: ['flower', 'pre-rolls', 'smalls'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,720 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,721 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012324ca3da66-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.the-flowery'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b73-7c3e-a857-e4cb749d01c8'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,721 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.the-flowery&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,722 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,722 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,723 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d901232484829a9-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.jungle-boys'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b71-7e17-bfe8-59dc6a805ac6'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'11'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,723 - DEBUG - response_closed.started
2026-03-08 07:19:20,723 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.jungle-boys&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,723 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012324b89783a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.one-plant'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b72-7321-9d59-fe42f8a85979'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,724 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012323aee1e13-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.surterra'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b77-7270-962f-1d4fb06809eb'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'2'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,724 - DEBUG - response_closed.complete
2026-03-08 07:19:20,724 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90123239f40bfa-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.eden'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b6e-7b3c-8197-8d7967a69557'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,725 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,725 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb0a0>
2026-03-08 07:19:20,725 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.one-plant&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,726 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.surterra&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,726 - DEBUG - close.started
2026-03-08 07:19:20,726 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.eden&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,727 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,727 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,727 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,727 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,728 - DEBUG - close.complete
2026-03-08 07:19:20,728 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,728 - DEBUG - response_closed.started
2026-03-08 07:19:20,728 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,729 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,729 - DEBUG - 🏷 Product types: ['concentrates', 'flower'] → Category ID: b8446117-9bdd-4819-b996-5695222cf3bc
2026-03-08 07:19:20,729 - DEBUG - response_closed.complete
2026-03-08 07:19:20,730 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,730 - DEBUG - response_closed.started
2026-03-08 07:19:20,730 - DEBUG - response_closed.started
2026-03-08 07:19:20,731 - DEBUG - close.started
2026-03-08 07:19:20,731 - DEBUG - response_closed.started
2026-03-08 07:19:20,731 - DEBUG - 🏷 Product types: ['carts', 'flower'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,731 - DEBUG - response_closed.complete
2026-03-08 07:19:20,732 - DEBUG - response_closed.complete
2026-03-08 07:19:20,732 - DEBUG - close.complete
2026-03-08 07:19:20,732 - DEBUG - response_closed.complete
2026-03-08 07:19:20,733 - DEBUG - close.started
2026-03-08 07:19:20,733 - DEBUG - 🏷 Product types: ['edibles', 'vapes', 'flower'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-08 07:19:20,734 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,734 - DEBUG - 🏷 Product types: ['edibles'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-08 07:19:20,734 - DEBUG - 🏷 Product types: ['rosin', 'flower', 'live rosin aio', 'ounces'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,735 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,736 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,736 - DEBUG - close.complete
2026-03-08 07:19:20,736 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c95d0>
2026-03-08 07:19:20,737 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,738 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,738 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012324b9fb5f8-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.the-flowery'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b7b-7b2d-8c61-503314c8480f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,738 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,739 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,739 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,739 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,740 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.the-flowery&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,740 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,740 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,741 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,741 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,741 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca792350>
2026-03-08 07:19:20,741 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,742 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,742 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,742 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,743 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,743 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6463b0>
2026-03-08 07:19:20,742 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,743 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca644040>
2026-03-08 07:19:20,744 - DEBUG - response_closed.started
2026-03-08 07:19:20,744 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,744 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,745 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,745 - DEBUG - response_closed.complete
2026-03-08 07:19:20,745 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,746 - DEBUG - close.started
2026-03-08 07:19:20,746 - DEBUG - close.complete
2026-03-08 07:19:20,746 - DEBUG - 🏷 Product types: ['flower', 'prerolls'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,747 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,750 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca386500>
2026-03-08 07:19:20,750 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,751 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6471c0>
2026-03-08 07:19:20,751 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b9f30>
2026-03-08 07:19:20,751 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,751 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,752 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,752 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,752 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,752 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,752 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,753 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca646e00>
2026-03-08 07:19:20,753 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,753 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,753 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,753 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,754 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,754 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,754 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,754 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,757 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca386230>
2026-03-08 07:19:20,757 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,757 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,757 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,757 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,757 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,784 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232ab411e13-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bac-7216-9e60-fcdd87fd9da7'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,784 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,784 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,785 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9012329bf1783a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bac-7567-aef8-4573612558b1'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,785 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,785 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,786 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,786 - DEBUG - response_closed.started
2026-03-08 07:19:20,786 - DEBUG - response_closed.complete
2026-03-08 07:19:20,786 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,786 - DEBUG - close.started
2026-03-08 07:19:20,787 - DEBUG - response_closed.started
2026-03-08 07:19:20,787 - DEBUG - close.complete
2026-03-08 07:19:20,787 - DEBUG - response_closed.complete
2026-03-08 07:19:20,788 - INFO - ✅ Inserted deal: Surterra - Free Wana Quick & Patient Discounts
2026-03-08 07:19:20,788 - DEBUG - close.started
2026-03-08 07:19:20,790 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bbfb6e14-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bb8-7460-acad-64a9fce4ed2f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,790 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232ad3b303a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9baf-7e35-8b28-9ae77365766b'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,790 - DEBUG - close.complete
2026-03-08 07:19:20,791 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,791 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,792 - INFO - ✅ Inserted deal: One Plant Florida - Everyday Low Prices on Edibles, Carts, and Flower
2026-03-08 07:19:20,792 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,792 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,794 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,794 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,794 - DEBUG - response_closed.started
2026-03-08 07:19:20,794 - DEBUG - response_closed.started
2026-03-08 07:19:20,795 - DEBUG - response_closed.complete
2026-03-08 07:19:20,795 - DEBUG - response_closed.complete
2026-03-08 07:19:20,795 - INFO - ✅ Inserted deal: Eden - Flower & Rosin Deals: B2G1, Half Off, & More!
2026-03-08 07:19:20,796 - INFO - ✅ Inserted deal: Insa - Daily Deals & Doorbuster Flower Savings
2026-03-08 07:19:20,798 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bbe1889f-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bbd-7fd4-9aca-0df8c33ce410'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,798 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,798 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,799 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,799 - DEBUG - response_closed.started
2026-03-08 07:19:20,799 - DEBUG - response_closed.complete
2026-03-08 07:19:20,800 - INFO - ✅ Inserted deal: The Flowery - Custom Ounces & Bundles Available
2026-03-08 07:19:20,802 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bbfe6e14-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bbe-71be-87b8-be8136cc6ad5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,803 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,803 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,803 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,804 - DEBUG - response_closed.started
2026-03-08 07:19:20,804 - DEBUG - response_closed.complete
2026-03-08 07:19:20,804 - INFO - ✅ Inserted deal: Jungle Boys - New 1G Carts & Premium Flower Deals
2026-03-08 07:19:20,806 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bcbe0860-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bbf-7592-b8ba-74b1167cab0a'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,806 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,807 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,807 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,807 - DEBUG - response_closed.started
2026-03-08 07:19:20,807 - DEBUG - response_closed.complete
2026-03-08 07:19:20,807 - INFO - ✅ Inserted deal: The Flowery - Concentrate & Flower Deals Available Now
2026-03-08 07:19:20,808 - INFO - ✅ Batch 3 completed: 7 processed, 26 deals inserted
2026-03-08 07:19:20,862 - INFO - ✅ Unified Scraper Engine completed successfully
==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 28
Images Processed: 26
Deals Extracted: 306
Deals Inserted: 26
Duplicates Skipped: 1
Blacklisted: 0
Errors: 1
Success Rate: 8.5%
Duration: 76.1s
2026-03-08 07:19:20,864 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,865 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,865 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,865 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,865 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,901 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-101/102'), (b'CF-Ray', b'9d9012336db7303a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?is_active=eq.True&moderation_status=eq.approved&select=id'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'count=exact'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9c2a-7325-8330-35859937c29f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,901 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id&is_active=eq.True&moderation_status=eq.approved "HTTP/1.1 200 OK"
2026-03-08 07:19:20,901 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,902 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,902 - DEBUG - response_closed.started
2026-03-08 07:19:20,902 - DEBUG - response_closed.complete
2026-03-08 07:19:20,903 - INFO - ✅ Deal count OK: 102 active deals
==================================================
🐍 Python process exited with code: 0
✅ Unified Scraper Orchestrator completed successfully

==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 28
Images Processed: 0
Deals Extracted: 0
Deals Inserted: 26
Duplicates Skipped: 1
Blacklisted: 0
Errors: 0
==================================================
Warning: Permanently added 'carl' (ED25519) to the list of known hosts.
/home/crogers2287/cannadealsfl/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:266: FutureWarning: You are using a Python version (3.10.12) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.
  warnings.warn(message, FutureWarning)

Process exited with code 0.

ssh carl

Warning: Permanently added 'carl' (ED25519) to the list of known hosts.
[dotenv@17.2.3] injecting env (13) from .env.local -- tip: ✅ audit secrets and track compliance: https://dotenvx.com/ops
✅ Loaded scraper configuration from /home/crogers2287/cannadealsfl/.scraper-config.json
🚀 Starting Unified Scraper Orchestrator
🐍 Running Python engine: /home/crogers2287/cannadealsfl/venv/bin/python3 /home/crogers2287/cannadealsfl/unified-scraper-engine.py --verbose
/home/crogers2287/cannadealsfl/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:266: FutureWarning: You are using a Python version (3.10.12) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.
  warnings.warn(message, FutureWarning)
❌ Enhanced text extractor not available
❌ Fallback extractor not available
2026-03-08 07:18:04,785 - INFO - 🗑 Removed 46 expired hash cache entries (TTL: 7 days)
2026-03-08 07:18:04,786 - DEBUG - Using selector: EpollSelector
2026-03-08 07:18:04,787 - INFO - 🚀 Starting Unified Scraper Engine
2026-03-08 07:18:05,053 - INFO - ✅ Supabase client initialized (HTTP/1.1 mode)
2026-03-08 07:18:05,054 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:05,063 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c8760>
2026-03-08 07:18:05,063 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:05,070 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c8730>
2026-03-08 07:18:05,070 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:05,071 - DEBUG - send_request_headers.complete
2026-03-08 07:18:05,071 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:05,071 - DEBUG - send_request_body.complete
2026-03-08 07:18:05,071 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:05,632 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-9/*'), (b'CF-Ray', b'9d901059bc5f3430-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/product_categories?is_active=eq.True&select=id%2Cname%2Cslug'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc4f-7418-74b2-a316-bce83d3c57a6'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'268'), (b'Set-Cookie', b'__cf_bm=UENAvv0JDj7WwmRD7Ug6vl4bXNyBabL7QgLphkgNT6w-1772954285-1.0.1.1-rvGnX7yRw68gMAsP_FjZIi6kD5TzO2xbjRLTOl9XQG8DCE2KIHesU4M8EAOjiTmrkOBpKkfbQ7RwC3MGltYmy33ON1s4ZNpVv9fhGutsGXs; path=/; expires=Sun, 08-Mar-26 07:48:05 GMT; domain=.supabase.co; HttpOnly; Secure; SameSite=None'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:05,633 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/product_categories?select=id%2Cname%2Cslug&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:05,634 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:05,634 - DEBUG - receive_response_body.complete
2026-03-08 07:18:05,634 - DEBUG - response_closed.started
2026-03-08 07:18:05,634 - DEBUG - response_closed.complete
2026-03-08 07:18:05,635 - INFO - ✅ Loaded 10 product categories for mapping
2026-03-08 07:18:05,635 - INFO - ✅ Gemini AI initialized with model: gemini-2.5-flash-lite
2026-03-08 07:18:06,101 - INFO - ✅ Gemini AI test successful
2026-03-08 07:18:06,101 - INFO - 🗄 Archiving old deals...
2026-03-08 07:18:06,103 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:06,103 - DEBUG - send_request_headers.complete
2026-03-08 07:18:06,103 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:06,103 - DEBUG - send_request_body.complete
2026-03-08 07:18:06,103 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:06,214 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:06 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9010602a6f3430-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?created_at=lt.2026-03-06T07%3A18%3A06.101994%2B00%3A00&is_active=eq.True&select=id%2Ctitle%2Ccreated_at'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc4f-7820-71dd-ad94-2443a9596a05'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'78'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:06,214 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Ccreated_at&is_active=eq.True&created_at=lt.2026-03-06T07%3A18%3A06.101994%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-08 07:18:06,214 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:06,215 - DEBUG - receive_response_body.complete
2026-03-08 07:18:06,215 - DEBUG - response_closed.started
2026-03-08 07:18:06,215 - DEBUG - response_closed.complete
2026-03-08 07:18:06,215 - INFO - 🗑 Deleting old archived deals...
2026-03-08 07:18:06,216 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:06,216 - DEBUG - send_request_headers.complete
2026-03-08 07:18:06,216 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:06,216 - DEBUG - send_request_body.complete
2026-03-08 07:18:06,216 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:06,323 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:06 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901060db133430-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?moderation_status=eq.archived&select=id%2Ctitle%2Cupdated_at&updated_at=lt.2026-03-01T07%3A18%3A06.215590%2B00%3A00'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc4f-7890-7d39-bf06-49c5bb85d07d'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'74'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:06,323 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Cupdated_at&moderation_status=eq.archived&updated_at=lt.2026-03-01T07%3A18%3A06.215590%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-08 07:18:06,324 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:06,324 - DEBUG - receive_response_body.complete
2026-03-08 07:18:06,324 - DEBUG - response_closed.started
2026-03-08 07:18:06,324 - DEBUG - response_closed.complete
2026-03-08 07:18:06,766 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/
2026-03-08 07:18:20,964 - INFO - 📸 Found 28 potential deal images
2026-03-08 07:18:20,965 - INFO - 🔄 Processing batch 1/3 (10 images)
2026-03-08 07:18:20,965 - INFO - 🔄 Processing image: image_3_2024940956
2026-03-08 07:18:20,965 - INFO - 🔄 Processing image: image_4_283026642
2026-03-08 07:18:20,965 - INFO - 🔄 Processing image: image_5_1551121141
2026-03-08 07:18:20,965 - INFO - 🔄 Processing image: image_6_1180173000
2026-03-08 07:18:20,966 - INFO - 🔄 Processing image: image_7_954185827
2026-03-08 07:18:20,966 - INFO - 🔄 Processing image: image_8_1114115798
2026-03-08 07:18:20,966 - INFO - 🔄 Processing image: image_9_975854079
2026-03-08 07:18:20,966 - INFO - 🔄 Processing image: image_10_151149826
2026-03-08 07:18:20,966 - INFO - 🔄 Processing image: image_11_1920351981
2026-03-08 07:18:20,967 - INFO - 🔄 Processing image: image_12_953262306
2026-03-08 07:18:21,012 - INFO - ✅ Downloaded: image_3_2024940956.webp
2026-03-08 07:18:21,013 - INFO - 🤖 Using original Gemini extraction for image_3_2024940956.webp
2026-03-08 07:18:21,019 - INFO - ✅ Downloaded: image_4_283026642.webp
2026-03-08 07:18:21,019 - INFO - 🤖 Using original Gemini extraction for image_4_283026642.webp
2026-03-08 07:18:22,321 - INFO - 📊 First pass extracted 6 deals
2026-03-08 07:18:22,322 - INFO - 🔄 Deal count (6) below threshold, running refinement pass...
2026-03-08 07:18:22,971 - INFO - ✅ Refinement pass found 1 additional deals
2026-03-08 07:18:22,971 - INFO - 📈 Total deals after refinement: 7 (1 new unique deals)
2026-03-08 07:18:22,971 - DEBUG - Normalizing dispensary: 'Curaleaf' -> 'curaleaf'
2026-03-08 07:18:22,971 - DEBUG - Exact match found: 'Curaleaf' -> 'curaleaf'
2026-03-08 07:18:22,971 - WARNING - DEBUG: Normalized Curaleaf -> curaleaf
2026-03-08 07:18:22,971 - INFO - ✅ Processed image_3_2024940956: 7 deals from Curaleaf
2026-03-08 07:18:24,797 - INFO - 📊 First pass extracted 9 deals
2026-03-08 07:18:24,797 - DEBUG - Normalizing dispensary: 'MINT CANNABIS' -> 'mint cannabis'
2026-03-08 07:18:24,797 - DEBUG - Exact match found: 'MINT CANNABIS' -> 'mint-cannabis'
2026-03-08 07:18:24,797 - WARNING - DEBUG: Normalized MINT CANNABIS -> mint-cannabis
2026-03-08 07:18:24,797 - INFO - ✅ Processed image_4_283026642: 9 deals from MINT CANNABIS
2026-03-08 07:18:24,800 - INFO - ✅ Downloaded: image_9_975854079.jpg
2026-03-08 07:18:24,800 - INFO - 🤖 Using original Gemini extraction for image_9_975854079.jpg
2026-03-08 07:18:27,491 - INFO - 📊 First pass extracted 9 deals
2026-03-08 07:18:27,492 - DEBUG - Normalizing dispensary: 'Fluent Cannabis Care' -> 'fluent cannabis care'
2026-03-08 07:18:27,492 - DEBUG - Variant match: 'fluent' in 'fluent cannabis care' -> 'fluent'
2026-03-08 07:18:27,492 - WARNING - DEBUG: Normalized Fluent Cannabis Care -> fluent
2026-03-08 07:18:27,492 - INFO - ✅ Processed image_9_975854079: 9 deals from Fluent Cannabis Care
2026-03-08 07:18:27,495 - INFO - ✅ Downloaded: image_5_1551121141.webp
2026-03-08 07:18:27,495 - INFO - 🤖 Using original Gemini extraction for image_5_1551121141.webp
2026-03-08 07:18:27,498 - INFO - ✅ Downloaded: image_11_1920351981.jpg
2026-03-08 07:18:27,498 - INFO - 🤖 Using original Gemini extraction for image_11_1920351981.jpg
2026-03-08 07:18:27,499 - INFO - ✅ Downloaded: image_12_953262306.jpg
2026-03-08 07:18:27,499 - INFO - 🤖 Using original Gemini extraction for image_12_953262306.jpg
2026-03-08 07:18:27,501 - INFO - ✅ Downloaded: image_10_151149826.jpg
2026-03-08 07:18:27,501 - INFO - 🤖 Using original Gemini extraction for image_10_151149826.jpg
2026-03-08 07:18:27,502 - INFO - ✅ Downloaded: image_7_954185827.jpg
2026-03-08 07:18:27,502 - INFO - 🤖 Using original Gemini extraction for image_7_954185827.jpg
2026-03-08 07:18:27,503 - INFO - ✅ Downloaded: image_6_1180173000.jpg
2026-03-08 07:18:27,503 - INFO - 🤖 Using original Gemini extraction for image_6_1180173000.jpg
2026-03-08 07:18:28,598 - INFO - 📊 First pass extracted 0 deals
2026-03-08 07:18:28,598 - INFO - 🔄 Deal count (0) below threshold, running refinement pass...
2026-03-08 07:18:29,342 - INFO - ✅ Refinement pass found 1 additional deals
2026-03-08 07:18:29,342 - INFO - 📈 Total deals after refinement: 1 (1 new unique deals)
2026-03-08 07:18:29,342 - DEBUG - Normalizing dispensary: 'Knack' -> 'knack'
2026-03-08 07:18:29,342 - WARNING - ⚠ No match found for dispensary: 'Knack' (cleaned: 'knack')
2026-03-08 07:18:29,342 - DEBUG - Available variants: ['ayr', 'ayr wellness', 'ayr cannabis', 'ayr cannabis dispensary', 'avr', 'cannabist', 'the cannabist', 'cookies', 'curaleaf', 'eden', 'eden curated cannabis', 'eden florida', 'edenflorida', 'fluent', 'goldflower', 'gold flower', 'goldflower cannabis', 'goldflowerfl', 'goldflowerflorida', 'goldleaf', 'gold leaf', 'green dragon', 'grow healthy', 'growhealthy', 'insa', 'jungle boys', 'mint cannabis', 'mint', 'muv', 'müv', 'one plant', 'one plant florida', 'one plant cannabis', 'oneplant', 'planet 13', 'rise', 'rise dispensaries', 'sanctuary', 'sunburn', 'sunburn cannabis', 'sunnyside', 'surterra', 'surterra wellness', 'the flowery', 'flowery', 'trulieve']
2026-03-08 07:18:29,342 - WARNING - ⚠ Skipping image_5_1551121141: Invalid dispensary 'Knack'
2026-03-08 07:18:29,342 - WARNING - DEBUG: Failed to normalize: Knack
2026-03-08 07:18:30,624 - INFO - 📊 First pass extracted 4 deals
2026-03-08 07:18:30,624 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-08 07:18:31,533 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-08 07:18:31,533 - INFO - 📈 Total deals after refinement: 4 (0 new unique deals)
2026-03-08 07:18:31,533 - DEBUG - Normalizing dispensary: 'SUNBURN CANNABIS' -> 'sunburn cannabis'
2026-03-08 07:18:31,533 - DEBUG - Exact match found: 'SUNBURN CANNABIS' -> 'sunburn'
2026-03-08 07:18:31,533 - WARNING - DEBUG: Normalized SUNBURN CANNABIS -> sunburn
2026-03-08 07:18:31,533 - INFO - ✅ Processed image_11_1920351981: 4 deals from SUNBURN CANNABIS
2026-03-08 07:18:33,263 - INFO - 📊 First pass extracted 7 deals
2026-03-08 07:18:33,263 - INFO - 🔄 Deal count (7) below threshold, running refinement pass...
2026-03-08 07:18:34,599 - INFO - ✅ Refinement pass found 8 additional deals
2026-03-08 07:18:34,599 - INFO - 📈 Total deals after refinement: 9 (2 new unique deals)
2026-03-08 07:18:34,599 - DEBUG - Normalizing dispensary: 'planet 13 FLORIDA' -> 'planet 13 florida'
2026-03-08 07:18:34,599 - DEBUG - Variant match: 'planet 13' in 'planet 13 florida' -> 'planet-13'
2026-03-08 07:18:34,599 - WARNING - DEBUG: Normalized planet 13 FLORIDA -> planet-13
2026-03-08 07:18:34,599 - INFO - ✅ Processed image_12_953262306: 9 deals from planet 13 FLORIDA
2026-03-08 07:18:36,870 - INFO - 📊 First pass extracted 11 deals
2026-03-08 07:18:36,870 - DEBUG - Normalizing dispensary: 'GrowHealthy' -> 'growhealthy'
2026-03-08 07:18:36,870 - DEBUG - Exact match found: 'GrowHealthy' -> 'grow-healthy'
2026-03-08 07:18:36,870 - WARNING - DEBUG: Normalized GrowHealthy -> grow-healthy
2026-03-08 07:18:36,870 - INFO - ✅ Processed image_10_151149826: 11 deals from GrowHealthy
2026-03-08 07:18:38,256 - INFO - 📊 First pass extracted 3 deals
2026-03-08 07:18:38,256 - INFO - 🔄 Deal count (3) below threshold, running refinement pass...
2026-03-08 07:18:38,909 - INFO - ℹ Refinement pass found no additional deals
2026-03-08 07:18:38,909 - DEBUG - Normalizing dispensary: 'Cookies' -> 'cookies'
2026-03-08 07:18:38,909 - DEBUG - Exact match found: 'Cookies' -> 'cookies'
2026-03-08 07:18:38,909 - WARNING - DEBUG: Normalized Cookies -> cookies
2026-03-08 07:18:38,909 - INFO - ✅ Processed image_6_1180173000: 3 deals from Cookies
2026-03-08 07:18:42,256 - INFO - 📊 First pass extracted 29 deals
2026-03-08 07:18:42,257 - DEBUG - Normalizing dispensary: 'MINT CANNABIS' -> 'mint cannabis'
2026-03-08 07:18:42,257 - DEBUG - Exact match found: 'MINT CANNABIS' -> 'mint-cannabis'
2026-03-08 07:18:42,257 - WARNING - DEBUG: Normalized MINT CANNABIS -> mint-cannabis
2026-03-08 07:18:42,257 - INFO - ✅ Processed image_7_954185827: 29 deals from MINT CANNABIS
2026-03-08 07:18:42,258 - INFO - ✅ Downloaded: image_8_1114115798.jpg
2026-03-08 07:18:42,258 - INFO - 🤖 Using original Gemini extraction for image_8_1114115798.jpg
2026-03-08 07:18:44,069 - INFO - 📊 First pass extracted 15 deals
2026-03-08 07:18:44,069 - DEBUG - Normalizing dispensary: 'Curaleaf Dispensary' -> 'curaleaf dispensary'
2026-03-08 07:18:44,069 - DEBUG - Variant match: 'curaleaf' in 'curaleaf dispensary' -> 'curaleaf'
2026-03-08 07:18:44,069 - WARNING - DEBUG: Normalized Curaleaf Dispensary -> curaleaf
2026-03-08 07:18:44,070 - INFO - ✅ Processed image_8_1114115798: 15 deals from Curaleaf Dispensary
2026-03-08 07:18:44,071 - DEBUG - close.started
2026-03-08 07:18:44,072 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,073 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,074 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,075 - DEBUG - close.complete
2026-03-08 07:18:44,076 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,076 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,077 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,078 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,078 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,079 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,083 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6443a0>
2026-03-08 07:18:44,083 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,083 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c8370>
2026-03-08 07:18:44,083 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6454e0>
2026-03-08 07:18:44,083 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca645600>
2026-03-08 07:18:44,084 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,084 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c88e0>
2026-03-08 07:18:44,084 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cbee0>
2026-03-08 07:18:44,084 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c98a0>
2026-03-08 07:18:44,084 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,084 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,084 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,085 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,085 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,085 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8caa78250>
2026-03-08 07:18:44,085 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb7c0>
2026-03-08 07:18:44,086 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,086 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,090 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca647d90>
2026-03-08 07:18:44,090 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,090 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,090 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,090 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,090 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,090 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c8310>
2026-03-08 07:18:44,091 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,091 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,091 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,091 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,091 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,091 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6441c0>
2026-03-08 07:18:44,092 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,092 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7390c0>
2026-03-08 07:18:44,092 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7395d0>
2026-03-08 07:18:44,092 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,092 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,092 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,092 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cbeb0>
2026-03-08 07:18:44,092 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca647460>
2026-03-08 07:18:44,093 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,093 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,093 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,093 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,093 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8caa7ba60>
2026-03-08 07:18:44,094 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,094 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,094 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,095 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,095 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,095 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,095 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb850>
2026-03-08 07:18:44,095 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,095 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,096 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,096 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,096 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,096 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,097 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,096 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,096 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,097 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,097 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,097 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,096 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,097 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,098 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,099 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,099 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,099 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,098 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,100 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,100 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:18:44,178 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9d0972e6-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.cookies'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c87-75fa-9eb1-bc16593f99a7'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'44'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,179 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.cookies&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,179 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,179 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,179 - DEBUG - response_closed.started
2026-03-08 07:18:44,179 - DEBUG - response_closed.complete
2026-03-08 07:18:44,179 - DEBUG - close.started
2026-03-08 07:18:44,179 - DEBUG - close.complete
2026-03-08 07:18:44,180 - DEBUG - 🏷 Product types: ['merch'] → Category ID: aeaac330-f16f-41b2-8aac-668e7d9461f9
2026-03-08 07:18:44,180 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,184 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cab3b520>
2026-03-08 07:18:44,184 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,190 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7939a0>
2026-03-08 07:18:44,190 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,190 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,190 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,191 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,191 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,254 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9ca2e728-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.curaleaf'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c83-7558-99b9-53700b0b968e'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'77'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,255 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.curaleaf&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,255 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,255 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,255 - DEBUG - response_closed.started
2026-03-08 07:18:44,255 - DEBUG - response_closed.complete
2026-03-08 07:18:44,255 - DEBUG - close.started
2026-03-08 07:18:44,255 - DEBUG - close.complete
2026-03-08 07:18:44,256 - DEBUG - 🏷 Product types: ['cartridges', 'select cliq', 'live rosin', 'edibles', 'pre-rolls', 'vapes'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-08 07:18:44,256 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,259 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca9708e0>
2026-03-08 07:18:44,259 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,267 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca971f00>
2026-03-08 07:18:44,267 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,267 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,267 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,267 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,267 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,269 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114dac22633e-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.fluent'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c8b-7a2c-8f8b-2c9e1044d069'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'75'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,270 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.fluent&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,270 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,270 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,271 - DEBUG - response_closed.started
2026-03-08 07:18:44,271 - DEBUG - response_closed.complete
2026-03-08 07:18:44,271 - DEBUG - close.started
2026-03-08 07:18:44,271 - DEBUG - close.complete
2026-03-08 07:18:44,271 - DEBUG - 🏷 Product types: ['flower', 'vapes'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:18:44,272 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,276 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b8220>
2026-03-08 07:18:44,276 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,278 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9a9a12f4-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.mint-cannabis'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c87-7b04-95a3-5390f9bf26bd'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'104'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,278 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.mint-cannabis&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,278 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,278 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,279 - DEBUG - response_closed.started
2026-03-08 07:18:44,279 - DEBUG - response_closed.complete
2026-03-08 07:18:44,279 - DEBUG - close.started
2026-03-08 07:18:44,279 - DEBUG - close.complete
2026-03-08 07:18:44,279 - DEBUG - 🏷 Product types: ['capsules', 'flower', 'swag'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:18:44,280 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,283 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7ba8f0>
2026-03-08 07:18:44,283 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb59c880>
2026-03-08 07:18:44,283 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,283 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,284 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,284 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,284 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,284 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,289 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb59cdc0>
2026-03-08 07:18:44,289 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,289 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,289 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,289 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,290 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,292 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9af4121b-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.curaleaf'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c83-7e19-a733-75806ff152a8'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'108'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,293 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.curaleaf&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,293 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,293 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,293 - DEBUG - response_closed.started
2026-03-08 07:18:44,293 - DEBUG - response_closed.complete
2026-03-08 07:18:44,293 - DEBUG - close.started
2026-03-08 07:18:44,294 - DEBUG - close.complete
2026-03-08 07:18:44,294 - DEBUG - 🏷 Product types: [] → Category ID: None
2026-03-08 07:18:44,295 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,298 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e26e0>
2026-03-08 07:18:44,298 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,306 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e2770>
2026-03-08 07:18:44,306 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,306 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9e483c31-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.mint-cannabis'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c8b-783a-a156-1a1d07de6699'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'107'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,306 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,307 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.mint-cannabis&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,307 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,307 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,307 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,307 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,307 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,308 - DEBUG - response_closed.started
2026-03-08 07:18:44,308 - DEBUG - response_closed.complete
2026-03-08 07:18:44,308 - DEBUG - close.started
2026-03-08 07:18:44,308 - DEBUG - close.complete
2026-03-08 07:18:44,308 - DEBUG - 🏷 Product types: ['all-in-one', 'edibles', 'chews', 'capsules', 'tinctures', 'chocolate', 'flower', 'pre-rolls', 'vapes', 'concentrates', 'dablcators', 'rso', 'bubble hash', 'crumbles', 'shatters'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-08 07:18:44,309 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,309 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9dd1d07e-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.planet-13'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c86-7686-829d-e698b22008c4'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'112'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,309 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.planet-13&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,309 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,310 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,310 - DEBUG - response_closed.started
2026-03-08 07:18:44,310 - DEBUG - response_closed.complete
2026-03-08 07:18:44,310 - DEBUG - close.started
2026-03-08 07:18:44,310 - DEBUG - close.complete
2026-03-08 07:18:44,311 - DEBUG - 🏷 Product types: ['flower', 'pre-roll', 'vape', 'concentrates', 'edibles'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:18:44,311 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,312 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e0910>
2026-03-08 07:18:44,312 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,314 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6c76d0>
2026-03-08 07:18:44,314 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,318 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8ffd90>
2026-03-08 07:18:44,318 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,318 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,318 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,318 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,318 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,320 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e2110>
2026-03-08 07:18:44,320 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,320 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,320 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,321 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,321 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,324 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9dfbcda3-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.sunburn'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c89-7f14-8a85-2d751a8f372d'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'120'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,324 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.sunburn&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,325 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,325 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,325 - DEBUG - response_closed.started
2026-03-08 07:18:44,325 - DEBUG - response_closed.complete
2026-03-08 07:18:44,325 - DEBUG - close.started
2026-03-08 07:18:44,325 - DEBUG - close.complete
2026-03-08 07:18:44,325 - DEBUG - 🏷 Product types: ['pre-rolls', 'vapes'] → Category ID: d4320c11-eabe-486e-a3a2-8a4b0392f33c
2026-03-08 07:18:44,326 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,327 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90114d9e653459-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.grow-healthy'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0c83-7daa-a47e-16cd831fb845'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'137'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,327 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.grow-healthy&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:18:44,328 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:18:44,328 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,328 - DEBUG - response_closed.started
2026-03-08 07:18:44,328 - DEBUG - response_closed.complete
2026-03-08 07:18:44,328 - DEBUG - close.started
2026-03-08 07:18:44,328 - DEBUG - close.complete
2026-03-08 07:18:44,329 - DEBUG - 🏷 Product types: ['pre-rolls', 'flower', 'concentrates', 'vapes'] → Category ID: d4320c11-eabe-486e-a3a2-8a4b0392f33c
2026-03-08 07:18:44,330 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:18:44,330 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b8d60>
2026-03-08 07:18:44,330 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,333 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca970e80>
2026-03-08 07:18:44,333 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:18:44,336 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7baa40>
2026-03-08 07:18:44,337 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,337 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,337 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,337 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,337 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,339 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca973b80>
2026-03-08 07:18:44,340 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,340 - DEBUG - send_request_headers.complete
2026-03-08 07:18:44,340 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,340 - DEBUG - send_request_body.complete
2026-03-08 07:18:44,340 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:18:44,406 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114eda471714-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d49-7a94-9a85-7df24c85c2de'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'83'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,407 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,407 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,407 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,407 - DEBUG - response_closed.started
2026-03-08 07:18:44,407 - DEBUG - response_closed.complete
2026-03-08 07:18:44,407 - DEBUG - close.started
2026-03-08 07:18:44,408 - DEBUG - close.complete
2026-03-08 07:18:44,408 - INFO - ✅ Inserted deal: Mint Cannabis - Monthly Specials and Daily Deals
2026-03-08 07:18:44,409 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114eafb5906b-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d35-77d6-952c-824abf42bc54'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'72'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,409 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,410 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,410 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114ee96c0869-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d5a-7155-ba7f-627cf443f653'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'64'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,411 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,411 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,412 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,412 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,413 - DEBUG - response_closed.started
2026-03-08 07:18:44,413 - DEBUG - response_closed.started
2026-03-08 07:18:44,413 - DEBUG - response_closed.complete
2026-03-08 07:18:44,413 - DEBUG - response_closed.complete
2026-03-08 07:18:44,413 - DEBUG - close.started
2026-03-08 07:18:44,414 - INFO - ✅ Inserted deal: Curaleaf - Mention Florida Deals for Extra 10% Off
2026-03-08 07:18:44,414 - DEBUG - close.complete
2026-03-08 07:18:44,414 - DEBUG - close.started
2026-03-08 07:18:44,414 - DEBUG - close.complete
2026-03-08 07:18:44,415 - INFO - ✅ Inserted deal: Curaleaf - Storewide Savings & Product Deals
2026-03-08 07:18:44,428 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114ecc00de01-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d48-716e-8bbd-0256d1bcab4f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'51'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,429 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,429 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,429 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114f1d120dd1-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d79-71bf-9c0e-46c2952a9cca'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'40'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,430 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,430 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,430 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114f0d491275-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d70-7826-9745-a95cb3d42d32'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'65'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,431 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,431 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114e3ad78ff7-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0ce9-7b09-bc0c-7c23b87f7459'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'142'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,431 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,432 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,432 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114f2f7ea6fa-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d7f-74bc-ae79-8d412e8e600e'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'30'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,432 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:18:44 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d90114f0a0833a9-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-0d68-7439-a90f-00c283cbdccc'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'68'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:18:44,432 - DEBUG - response_closed.started
2026-03-08 07:18:44,433 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,433 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,433 - DEBUG - response_closed.started
2026-03-08 07:18:44,434 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,434 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:18:44,434 - DEBUG - response_closed.complete
2026-03-08 07:18:44,435 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,435 - DEBUG - response_closed.complete
2026-03-08 07:18:44,435 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,436 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,436 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:18:44,436 - DEBUG - close.started
2026-03-08 07:18:44,437 - INFO - ✅ Inserted deal: Sunburn Cannabis - 35% Off Storewide & Free Pre-Rolls
2026-03-08 07:18:44,437 - DEBUG - response_closed.started
2026-03-08 07:18:44,437 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,438 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,438 - DEBUG - close.complete
2026-03-08 07:18:44,438 - DEBUG - receive_response_body.complete
2026-03-08 07:18:44,439 - DEBUG - response_closed.complete
2026-03-08 07:18:44,439 - DEBUG - response_closed.started
2026-03-08 07:18:44,439 - DEBUG - response_closed.started
2026-03-08 07:18:44,440 - INFO - ✅ Inserted deal: Fluent - Up to 70% Off & Flower Deals
2026-03-08 07:18:44,440 - DEBUG - response_closed.started
2026-03-08 07:18:44,441 - INFO - ✅ Inserted deal: Planet 13 - Free Flower, Pre-Rolls & 45% Off Storewide
2026-03-08 07:18:44,441 - DEBUG - response_closed.complete
2026-03-08 07:18:44,441 - DEBUG - response_closed.complete
2026-03-08 07:18:44,441 - DEBUG - response_closed.complete
2026-03-08 07:18:44,442 - INFO - ✅ Inserted deal: Cookies - Storewide Savings and Spend More, Save More
2026-03-08 07:18:44,443 - INFO - ✅ Inserted deal: Grow Healthy - Build Your Own Half Oz & 50% Off Storewide
2026-03-08 07:18:44,444 - INFO - ✅ Inserted deal: Mint Cannabis - March Madness Deals & Eighth Day Specials
2026-03-08 07:18:44,445 - INFO - ✅ Batch 1 completed: 9 processed, 9 deals inserted
2026-03-08 07:18:44,445 - INFO - 🔄 Processing batch 2/3 (10 images)
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_14_716938862
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_15_174237851
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_16_868795887
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_17_1379210405
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_18_234266716
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_19_233343195
2026-03-08 07:18:44,446 - INFO - 🔄 Processing image: image_20_1725888082
2026-03-08 07:18:44,447 - INFO - 🔄 Processing image: image_21_781112938
2026-03-08 07:18:44,447 - INFO - 🔄 Processing image: image_22_1358497160
2026-03-08 07:18:44,447 - INFO - 🔄 Processing image: image_23_2146199388
2026-03-08 07:18:44,486 - INFO - ✅ Downloaded: image_22_1358497160.jpg
2026-03-08 07:18:44,486 - INFO - 🤖 Using original Gemini extraction for image_22_1358497160.jpg
2026-03-08 07:18:46,278 - INFO - 📊 First pass extracted 16 deals
2026-03-08 07:18:46,278 - DEBUG - Normalizing dispensary: 'Goldflower Cannabis' -> 'goldflower cannabis'
2026-03-08 07:18:46,278 - DEBUG - Exact match found: 'Goldflower Cannabis' -> 'goldflower'
2026-03-08 07:18:46,278 - WARNING - DEBUG: Normalized Goldflower Cannabis -> goldflower
2026-03-08 07:18:46,278 - INFO - ✅ Processed image_22_1358497160: 16 deals from Goldflower Cannabis
2026-03-08 07:18:46,282 - INFO - ✅ Downloaded: image_21_781112938.jpg
2026-03-08 07:18:46,283 - INFO - 🤖 Using original Gemini extraction for image_21_781112938.jpg
2026-03-08 07:18:46,284 - INFO - ✅ Downloaded: image_14_716938862.webp
2026-03-08 07:18:46,285 - INFO - 🤖 Using original Gemini extraction for image_14_716938862.webp
2026-03-08 07:18:46,285 - INFO - ✅ Downloaded: image_18_234266716.jpg
2026-03-08 07:18:46,286 - INFO - 🤖 Using original Gemini extraction for image_18_234266716.jpg
2026-03-08 07:18:47,931 - INFO - 📊 First pass extracted 4 deals
2026-03-08 07:18:47,931 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-08 07:18:48,673 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-08 07:18:48,673 - INFO - 📈 Total deals after refinement: 4 (0 new unique deals)
2026-03-08 07:18:48,673 - DEBUG - Normalizing dispensary: 'One Plant Cannabis' -> 'one plant cannabis'
2026-03-08 07:18:48,673 - DEBUG - Exact match found: 'One Plant Cannabis' -> 'one-plant'
2026-03-08 07:18:48,673 - WARNING - DEBUG: Normalized One Plant Cannabis -> one-plant
2026-03-08 07:18:48,673 - INFO - ✅ Processed image_21_781112938: 4 deals from One Plant Cannabis
2026-03-08 07:18:48,675 - INFO - ✅ Downloaded: image_23_2146199388.jpg
2026-03-08 07:18:48,675 - INFO - 🤖 Using original Gemini extraction for image_23_2146199388.jpg
2026-03-08 07:18:49,758 - INFO - 📊 First pass extracted 5 deals
2026-03-08 07:18:49,758 - INFO - 🔄 Deal count (5) below threshold, running refinement pass...
2026-03-08 07:18:50,334 - INFO - ✅ Refinement pass found 5 additional deals
2026-03-08 07:18:50,334 - INFO - 📈 Total deals after refinement: 5 (0 new unique deals)
2026-03-08 07:18:50,335 - DEBUG - Normalizing dispensary: 'Cookies' -> 'cookies'
2026-03-08 07:18:50,335 - DEBUG - Exact match found: 'Cookies' -> 'cookies'
2026-03-08 07:18:50,335 - WARNING - DEBUG: Normalized Cookies -> cookies
2026-03-08 07:18:50,335 - INFO - ✅ Processed image_14_716938862: 5 deals from Cookies
2026-03-08 07:18:51,917 - INFO - 📊 First pass extracted 8 deals
2026-03-08 07:18:51,917 - DEBUG - Normalizing dispensary: 'Jungle Boys' -> 'jungle boys'
2026-03-08 07:18:51,917 - DEBUG - Exact match found: 'Jungle Boys' -> 'jungle-boys'
2026-03-08 07:18:51,917 - WARNING - DEBUG: Normalized Jungle Boys -> jungle-boys
2026-03-08 07:18:51,918 - INFO - ✅ Processed image_18_234266716: 8 deals from Jungle Boys
2026-03-08 07:18:51,919 - INFO - ✅ Downloaded: image_17_1379210405.jpg
2026-03-08 07:18:51,919 - INFO - 🤖 Using original Gemini extraction for image_17_1379210405.jpg
2026-03-08 07:18:51,919 - INFO - ✅ Downloaded: image_20_1725888082.jpg
2026-03-08 07:18:51,920 - INFO - 🤖 Using original Gemini extraction for image_20_1725888082.jpg
2026-03-08 07:18:51,921 - INFO - ✅ Downloaded: image_19_233343195.jpg
2026-03-08 07:18:51,921 - INFO - 🤖 Using original Gemini extraction for image_19_233343195.jpg
2026-03-08 07:18:54,832 - INFO - 📊 First pass extracted 31 deals
2026-03-08 07:18:54,832 - DEBUG - Normalizing dispensary: 'RISE' -> 'rise'
2026-03-08 07:18:54,832 - DEBUG - Exact match found: 'RISE' -> 'rise'
2026-03-08 07:18:54,832 - WARNING - DEBUG: Normalized RISE -> rise
2026-03-08 07:18:54,832 - INFO - ✅ Processed image_23_2146199388: 31 deals from RISE
2026-03-08 07:18:54,834 - INFO - ✅ Downloaded: image_15_174237851.jpg
2026-03-08 07:18:54,834 - INFO - 🤖 Using original Gemini extraction for image_15_174237851.jpg
2026-03-08 07:18:56,160 - INFO - 📊 First pass extracted 8 deals
2026-03-08 07:18:56,160 - DEBUG - Normalizing dispensary: 'AVR Cannabis Dispensary' -> 'avr cannabis dispensary'
2026-03-08 07:18:56,160 - DEBUG - Variant match: 'avr' in 'avr cannabis dispensary' -> 'ayr'
2026-03-08 07:18:56,160 - WARNING - DEBUG: Normalized AVR Cannabis Dispensary -> ayr
2026-03-08 07:18:56,160 - INFO - ✅ Processed image_17_1379210405: 8 deals from AVR Cannabis Dispensary
2026-03-08 07:18:57,971 - INFO - 📊 First pass extracted 18 deals
2026-03-08 07:18:57,971 - DEBUG - Normalizing dispensary: 'MÜV' -> 'müv'
2026-03-08 07:18:57,971 - DEBUG - Exact match found: 'MÜV' -> 'muv'
2026-03-08 07:18:57,971 - WARNING - DEBUG: Normalized MÜV -> muv
2026-03-08 07:18:57,971 - INFO - ✅ Processed image_19_233343195: 18 deals from MÜV
2026-03-08 07:18:59,902 - INFO - 📊 First pass extracted 18 deals
2026-03-08 07:18:59,902 - DEBUG - Normalizing dispensary: 'Trulieve' -> 'trulieve'
2026-03-08 07:18:59,903 - DEBUG - Exact match found: 'Trulieve' -> 'trulieve'
2026-03-08 07:18:59,903 - WARNING - DEBUG: Normalized Trulieve -> trulieve
2026-03-08 07:18:59,903 - INFO - ✅ Processed image_20_1725888082: 18 deals from Trulieve
2026-03-08 07:18:59,904 - INFO - ✅ Downloaded: image_16_868795887.jpg
2026-03-08 07:18:59,904 - INFO - 🤖 Using original Gemini extraction for image_16_868795887.jpg
2026-03-08 07:19:01,444 - INFO - 📊 First pass extracted 11 deals
2026-03-08 07:19:01,444 - DEBUG - Normalizing dispensary: 'Green Dragon' -> 'green dragon'
2026-03-08 07:19:01,444 - DEBUG - Exact match found: 'Green Dragon' -> 'green-dragon'
2026-03-08 07:19:01,444 - WARNING - DEBUG: Normalized Green Dragon -> green-dragon
2026-03-08 07:19:01,444 - INFO - ✅ Processed image_15_174237851: 11 deals from Green Dragon
2026-03-08 07:19:05,266 - INFO - 📊 First pass extracted 31 deals
2026-03-08 07:19:05,266 - DEBUG - Normalizing dispensary: 'Sunnyside' -> 'sunnyside'
2026-03-08 07:19:05,266 - DEBUG - Exact match found: 'Sunnyside' -> 'sunnyside'
2026-03-08 07:19:05,266 - WARNING - DEBUG: Normalized Sunnyside -> sunnyside
2026-03-08 07:19:05,266 - INFO - ✅ Processed image_16_868795887: 31 deals from Sunnyside
2026-03-08 07:19:05,270 - DEBUG - close.started
2026-03-08 07:19:05,271 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,272 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,274 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,276 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,276 - DEBUG - close.complete
2026-03-08 07:19:05,276 - DEBUG - close.started
2026-03-08 07:19:05,277 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,278 - DEBUG - close.complete
2026-03-08 07:19:05,279 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,279 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca790d00>
2026-03-08 07:19:05,280 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb59c070>
2026-03-08 07:19:05,280 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8caa7ae00>
2026-03-08 07:19:05,281 - DEBUG - close.started
2026-03-08 07:19:05,283 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,284 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,285 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca793220>
2026-03-08 07:19:05,285 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,285 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,286 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,286 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,287 - DEBUG - close.complete
2026-03-08 07:19:05,288 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,288 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca791ae0>
2026-03-08 07:19:05,289 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b8c70>
2026-03-08 07:19:05,290 - DEBUG - close.started
2026-03-08 07:19:05,291 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,292 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,292 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c9a50>
2026-03-08 07:19:05,292 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b8280>
2026-03-08 07:19:05,293 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c81f0>
2026-03-08 07:19:05,293 - DEBUG - close.complete
2026-03-08 07:19:05,295 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,298 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,298 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca792470>
2026-03-08 07:19:05,299 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,299 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb59cdf0>
2026-03-08 07:19:05,300 - DEBUG - close.started
2026-03-08 07:19:05,300 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca793a90>
2026-03-08 07:19:05,301 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,303 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7baad0>
2026-03-08 07:19:05,305 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,303 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,304 - DEBUG - close.complete
2026-03-08 07:19:05,304 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,304 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,306 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,306 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,307 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,307 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,306 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,307 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,306 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,308 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,308 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,308 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,307 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,307 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,306 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8caa7b280>
2026-03-08 07:19:05,306 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca791270>
2026-03-08 07:19:05,309 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,310 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,310 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,307 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,310 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c82e0>
2026-03-08 07:19:05,311 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,311 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb850>
2026-03-08 07:19:05,313 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,313 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8fc070>
2026-03-08 07:19:05,314 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,315 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,315 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b9e70>
2026-03-08 07:19:05,316 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,317 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,317 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,318 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,318 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,319 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,319 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,320 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,321 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,321 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,322 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,323 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,323 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,324 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,324 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,324 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,324 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,325 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,325 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,326 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,326 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,326 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,330 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb59d720>
2026-03-08 07:19:05,331 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,331 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,331 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,332 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,332 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:05,347 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d2291ba369-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.green-dragon'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f64-71d6-a60d-271b5758a945'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'7'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,348 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.green-dragon&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,348 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,348 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,349 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d22e1acda3-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.ayr'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f62-754b-995b-5519c475e9f6'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,349 - DEBUG - response_closed.started
2026-03-08 07:19:05,350 - DEBUG - response_closed.complete
2026-03-08 07:19:05,350 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.ayr&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,350 - DEBUG - close.started
2026-03-08 07:19:05,351 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,352 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d22e448fb1-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.trulieve'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f62-7000-bafb-292a72ef8805'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'7'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,352 - DEBUG - close.complete
2026-03-08 07:19:05,353 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.trulieve&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,353 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,354 - DEBUG - response_closed.started
2026-03-08 07:19:05,353 - DEBUG - 🏷 Product types: ['chews', 'quarters', 'live wax', 'distillate syringes', 'cloud sugar'] → Category ID: b8446117-9bdd-4819-b996-5695222cf3bc
2026-03-08 07:19:05,354 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,354 - DEBUG - response_closed.complete
2026-03-08 07:19:05,356 - DEBUG - close.started
2026-03-08 07:19:05,359 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,360 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d23fc355e2-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.sunnyside'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f6d-7289-87f2-3a16d568cbb9'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,361 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d22cdb4e45-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.jungle-boys'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f62-76c9-8d7b-bc69df568e79'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'13'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,361 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d24d3d7d47-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.rise'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f70-74b7-8088-98cd27be1bfc'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'3'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,363 - DEBUG - 🏷 Product types: ['vape cartridges', 'concentrates', 'flower'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-08 07:19:05,364 - DEBUG - response_closed.started
2026-03-08 07:19:05,365 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.sunnyside&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,365 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.jungle-boys&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,366 - DEBUG - close.complete
2026-03-08 07:19:05,366 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d23ff44cf8-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.muv'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f6e-7fb7-9b8f-8eac636a9ca9'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,367 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.rise&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,368 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,369 - DEBUG - response_closed.complete
2026-03-08 07:19:05,370 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,370 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,371 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,371 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.muv&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,371 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,372 - DEBUG - close.started
2026-03-08 07:19:05,373 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,373 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,374 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,374 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,375 - DEBUG - close.complete
2026-03-08 07:19:05,375 - DEBUG - response_closed.started
2026-03-08 07:19:05,375 - DEBUG - response_closed.complete
2026-03-08 07:19:05,376 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,376 - DEBUG - response_closed.started
2026-03-08 07:19:05,376 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca739ae0>
2026-03-08 07:19:05,376 - DEBUG - response_closed.started
2026-03-08 07:19:05,376 - DEBUG - close.started
2026-03-08 07:19:05,377 - DEBUG - response_closed.started
2026-03-08 07:19:05,377 - DEBUG - response_closed.complete
2026-03-08 07:19:05,378 - DEBUG - 🏷 Product types: ['flower', 'vapes', 'concentrates', 'capsules'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:05,379 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,380 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d23e29783a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.goldflower'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f6e-71fe-b441-22aa4aec9b7e'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'24'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,380 - DEBUG - response_closed.complete
2026-03-08 07:19:05,380 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e0eb0>
2026-03-08 07:19:05,381 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d24ab8ebd5-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.one-plant'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f74-727d-aaf7-bc9c53e849cb'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'21'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,382 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9011d25b626cae-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.cookies'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5f7c-73df-a7b0-b34b98c573f5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,383 - DEBUG - response_closed.complete
2026-03-08 07:19:05,383 - DEBUG - close.complete
2026-03-08 07:19:05,384 - DEBUG - close.started
2026-03-08 07:19:05,385 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,386 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.goldflower&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,386 - DEBUG - 🏷 Product types: ['vapes', 'extracts', 'flower', 'edibles', 'merch'] → Category ID: b206c48b-5e7a-4727-accf-1554a9e2d147
2026-03-08 07:19:05,387 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,387 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.one-plant&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,388 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.cookies&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:05,389 - DEBUG - 🏷 Product types: ['flower', 'vapes', 'concentrates'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:05,390 - DEBUG - 🏷 Product types: ['flower', 'concentrates', 'pre-rolls', 'vapes', 'edibles', 'tincture'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:05,392 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,392 - DEBUG - close.complete
2026-03-08 07:19:05,394 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,394 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,395 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca644520>
2026-03-08 07:19:05,397 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cba30>
2026-03-08 07:19:05,397 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:05,401 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,400 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,398 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,401 - DEBUG - close.started
2026-03-08 07:19:05,403 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,403 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,404 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,404 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e36a0>
2026-03-08 07:19:05,404 - DEBUG - response_closed.started
2026-03-08 07:19:05,404 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,406 - DEBUG - response_closed.started
2026-03-08 07:19:05,407 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca645870>
2026-03-08 07:19:05,408 - DEBUG - close.complete
2026-03-08 07:19:05,408 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,409 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,410 - DEBUG - response_closed.complete
2026-03-08 07:19:05,410 - DEBUG - response_closed.started
2026-03-08 07:19:05,411 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,411 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,410 - DEBUG - response_closed.complete
2026-03-08 07:19:05,411 - DEBUG - close.started
2026-03-08 07:19:05,412 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca3842e0>
2026-03-08 07:19:05,412 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,412 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca3847f0>
2026-03-08 07:19:05,412 - DEBUG - close.started
2026-03-08 07:19:05,413 - DEBUG - response_closed.complete
2026-03-08 07:19:05,415 - DEBUG - close.started
2026-03-08 07:19:05,415 - DEBUG - close.complete
2026-03-08 07:19:05,416 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,416 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,417 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,418 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,419 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb160>
2026-03-08 07:19:05,420 - DEBUG - close.complete
2026-03-08 07:19:05,423 - DEBUG - 🏷 Product types: ['flower', 'carts', 'vapes', 'concentrates', 'disposables', 'pre-rolls', 'edibles', 'chews', 'mints', 'tinctures', 'syringes'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:05,422 - DEBUG - close.complete
2026-03-08 07:19:05,421 - DEBUG - 🏷 Product types: [] → Category ID: None
2026-03-08 07:19:05,424 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,424 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb0a0>
2026-03-08 07:19:05,426 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,427 - DEBUG - close.started
2026-03-08 07:19:05,428 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,429 - DEBUG - 🏷 Product types: ['kief', 'edibles'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-08 07:19:05,430 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,431 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,431 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,432 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,433 - DEBUG - close.complete
2026-03-08 07:19:05,434 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,435 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6c7cd0>
2026-03-08 07:19:05,435 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,435 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cad70>
2026-03-08 07:19:05,436 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,436 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,437 - DEBUG - 🏷 Product types: ['select items', 'flower', 'rosin syringes', 'distillate chews', 'live rosin chews', 'distillate pods', 'cartridges', 'disposables', 'live rosin pods', 'apparel', 'badders', 'pre-rolls'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:05,438 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,438 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e25c0>
2026-03-08 07:19:05,438 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca385d20>
2026-03-08 07:19:05,438 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,439 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,441 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,443 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:05,444 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,444 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca647d30>
2026-03-08 07:19:05,444 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,445 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,445 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,445 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,445 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,446 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,447 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,447 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,449 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,449 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,449 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,449 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,449 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,450 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca644220>
2026-03-08 07:19:05,450 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:05,453 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca385cf0>
2026-03-08 07:19:05,453 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,454 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,454 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,454 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,454 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,454 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca385540>
2026-03-08 07:19:05,455 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,455 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,456 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,456 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d2dd123d15-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5fca-746c-b8c9-178c121b6464'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'13'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,456 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca387160>
2026-03-08 07:19:05,457 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,458 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,458 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,458 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca647490>
2026-03-08 07:19:05,457 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,459 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,459 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,461 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,461 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,462 - DEBUG - send_request_headers.complete
2026-03-08 07:19:05,463 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,463 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,464 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,464 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,465 - DEBUG - send_request_body.complete
2026-03-08 07:19:05,465 - DEBUG - response_closed.started
2026-03-08 07:19:05,465 - DEBUG - response_closed.complete
2026-03-08 07:19:05,466 - DEBUG - close.started
2026-03-08 07:19:05,466 - DEBUG - close.complete
2026-03-08 07:19:05,467 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:05,468 - INFO - ✅ Inserted deal: AYR Wellness - Vape & Flower Deals Galore!
2026-03-08 07:19:05,469 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d2d8374688-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5fdd-754f-b782-ae82fbf3f827'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,470 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,470 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,470 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,471 - DEBUG - response_closed.started
2026-03-08 07:19:05,471 - DEBUG - response_closed.complete
2026-03-08 07:19:05,471 - DEBUG - close.started
2026-03-08 07:19:05,471 - DEBUG - close.complete
2026-03-08 07:19:05,471 - INFO - ✅ Inserted deal: Green Dragon - Chews, Concentrates, and 50% Off Deals
2026-03-08 07:19:05,485 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d2fe1d5e9a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5fed-7e93-a0e8-5b4a36f39244'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,486 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,486 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,486 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,487 - DEBUG - response_closed.started
2026-03-08 07:19:05,487 - DEBUG - response_closed.complete
2026-03-08 07:19:05,487 - DEBUG - close.started
2026-03-08 07:19:05,487 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d2fe558f7b-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5fe8-71c7-869a-9d8c3ec9e27f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'11'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,488 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,488 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,488 - DEBUG - close.complete
2026-03-08 07:19:05,490 - INFO - ✅ Inserted deal: Müv - Flower, Vapes, Edibles & More Deals!
2026-03-08 07:19:05,491 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,492 - DEBUG - response_closed.started
2026-03-08 07:19:05,492 - DEBUG - response_closed.complete
2026-03-08 07:19:05,492 - DEBUG - close.started
2026-03-08 07:19:05,492 - DEBUG - close.complete
2026-03-08 07:19:05,493 - INFO - ✅ Inserted deal: Trulieve - Flower Deals, Mix & Match, and Vape Offers
2026-03-08 07:19:05,497 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d30edc5ea9-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5ff0-7a4f-af00-b60d924f57cc'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,499 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,499 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,500 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d30e898fdf-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5ff2-79eb-b9a4-f28000ae6a17'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,501 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,501 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,502 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,503 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d31c39b109-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5ff7-7be5-9d56-b396d93c1da2'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,503 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,503 - DEBUG - response_closed.started
2026-03-08 07:19:05,505 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,505 - DEBUG - response_closed.started
2026-03-08 07:19:05,506 - DEBUG - response_closed.complete
2026-03-08 07:19:05,506 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,507 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,507 - DEBUG - response_closed.started
2026-03-08 07:19:05,507 - DEBUG - response_closed.complete
2026-03-08 07:19:05,506 - DEBUG - response_closed.complete
2026-03-08 07:19:05,507 - DEBUG - close.started
2026-03-08 07:19:05,508 - INFO - ✅ Inserted deal: Cookies - Extra $5 Off Your Purchase
2026-03-08 07:19:05,509 - INFO - ✅ Inserted deal: Jungle Boys - Flower Deals, Vapes, & Concentrates
2026-03-08 07:19:05,509 - DEBUG - close.complete
2026-03-08 07:19:05,510 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d31f048731-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5ff9-7cb4-9351-e23213ec7552'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'17'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,510 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d328d133a9-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-5ffe-79fb-992c-8eb964b9c2f5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,513 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:05 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9011d32a2b1275-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-6001-7825-85a5-0fc6d6055b06'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'11'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:05,514 - INFO - ✅ Inserted deal: Rise Dispensaries - Flower, Vapes, Edibles & More Deals
2026-03-08 07:19:05,517 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,518 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,519 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:05,520 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,521 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,521 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:05,523 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,523 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,524 - DEBUG - response_closed.started
2026-03-08 07:19:05,525 - DEBUG - response_closed.started
2026-03-08 07:19:05,524 - DEBUG - receive_response_body.complete
2026-03-08 07:19:05,525 - DEBUG - response_closed.complete
2026-03-08 07:19:05,525 - DEBUG - response_closed.complete
2026-03-08 07:19:05,526 - DEBUG - response_closed.started
2026-03-08 07:19:05,526 - INFO - ✅ Inserted deal: One Plant Florida - Special Deals on Brands & Spend $75
2026-03-08 07:19:05,527 - INFO - ✅ Inserted deal: GoldFlower - Deals Galore: Percentage Off & Special Pricing
2026-03-08 07:19:05,528 - DEBUG - response_closed.complete
2026-03-08 07:19:05,530 - INFO - ✅ Inserted deal: Sunnyside - Buy 3 Get 1 Free & Mix & Match Deals
2026-03-08 07:19:05,532 - INFO - ✅ Batch 2 completed: 10 processed, 19 deals inserted
2026-03-08 07:19:05,532 - INFO - 🔄 Processing batch 3/3 (8 images)
2026-03-08 07:19:05,532 - INFO - 🔄 Processing image: image_24_1329197011
2026-03-08 07:19:05,532 - INFO - 🔄 Processing image: image_25_810399351
2026-03-08 07:19:05,533 - INFO - 🔄 Processing image: image_26_852658791
2026-03-08 07:19:05,533 - INFO - 🔄 Processing image: image_27_300195207
2026-03-08 07:19:05,533 - INFO - 🔄 Processing image: image_28_1278795828
2026-03-08 07:19:05,533 - INFO - 🔄 Processing image: image_30_725973623
2026-03-08 07:19:05,533 - INFO - 🔄 Processing image: image_31_1539164129
2026-03-08 07:19:05,533 - INFO - 🔄 Processing image: image_32_283026642
2026-03-08 07:19:05,568 - INFO - ✅ Downloaded: image_28_1278795828.jpg
2026-03-08 07:19:05,569 - INFO - 🤖 Using original Gemini extraction for image_28_1278795828.jpg
2026-03-08 07:19:07,055 - INFO - 📊 First pass extracted 6 deals
2026-03-08 07:19:07,055 - INFO - 🔄 Deal count (6) below threshold, running refinement pass...
2026-03-08 07:19:07,873 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-08 07:19:07,873 - INFO - 📈 Total deals after refinement: 10 (4 new unique deals)
2026-03-08 07:19:07,874 - DEBUG - Normalizing dispensary: 'insa' -> 'insa'
2026-03-08 07:19:07,874 - DEBUG - Exact match found: 'insa' -> 'insa'
2026-03-08 07:19:07,874 - WARNING - DEBUG: Normalized insa -> insa
2026-03-08 07:19:07,874 - INFO - ✅ Processed image_28_1278795828: 10 deals from insa
2026-03-08 07:19:07,887 - INFO - ✅ Downloaded: image_32_283026642.webp
2026-03-08 07:19:07,888 - INFO - ⏭ Skipping image_32_283026642: Already processed
2026-03-08 07:19:07,888 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_32_283026642.webp
2026-03-08 07:19:07,890 - INFO - ✅ Downloaded: image_31_1539164129.webp
2026-03-08 07:19:07,891 - INFO - 🤖 Using original Gemini extraction for image_31_1539164129.webp
2026-03-08 07:19:07,892 - INFO - ✅ Downloaded: image_25_810399351.jpg
2026-03-08 07:19:07,893 - INFO - 🤖 Using original Gemini extraction for image_25_810399351.jpg
2026-03-08 07:19:07,893 - INFO - ✅ Downloaded: image_27_300195207.jpg
2026-03-08 07:19:07,894 - INFO - 🤖 Using original Gemini extraction for image_27_300195207.jpg
2026-03-08 07:19:07,897 - INFO - ✅ Downloaded: image_30_725973623.webp
2026-03-08 07:19:07,898 - INFO - 🤖 Using original Gemini extraction for image_30_725973623.webp
2026-03-08 07:19:09,120 - INFO - 📊 First pass extracted 6 deals
2026-03-08 07:19:09,120 - INFO - 🔄 Deal count (6) below threshold, running refinement pass...
2026-03-08 07:19:09,947 - INFO - ✅ Refinement pass found 7 additional deals
2026-03-08 07:19:09,947 - INFO - 📈 Total deals after refinement: 9 (3 new unique deals)
2026-03-08 07:19:09,948 - DEBUG - Normalizing dispensary: 'Surterra' -> 'surterra'
2026-03-08 07:19:09,948 - DEBUG - Exact match found: 'Surterra' -> 'surterra'
2026-03-08 07:19:09,948 - WARNING - DEBUG: Normalized Surterra -> surterra
2026-03-08 07:19:09,948 - INFO - ✅ Processed image_31_1539164129: 9 deals from Surterra
2026-03-08 07:19:09,949 - INFO - ✅ Downloaded: image_26_852658791.jpg
2026-03-08 07:19:09,949 - INFO - 🤖 Using original Gemini extraction for image_26_852658791.jpg
2026-03-08 07:19:11,484 - INFO - 📊 First pass extracted 9 deals
2026-03-08 07:19:11,485 - DEBUG - Normalizing dispensary: 'THE FLOWERY' -> 'the flowery'
2026-03-08 07:19:11,485 - DEBUG - Exact match found: 'THE FLOWERY' -> 'the-flowery'
2026-03-08 07:19:11,485 - WARNING - DEBUG: Normalized THE FLOWERY -> the-flowery
2026-03-08 07:19:11,485 - INFO - ✅ Processed image_25_810399351: 9 deals from THE FLOWERY
2026-03-08 07:19:13,155 - INFO - 📊 First pass extracted 4 deals
2026-03-08 07:19:13,155 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-08 07:19:13,957 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-08 07:19:13,957 - INFO - 📈 Total deals after refinement: 4 (0 new unique deals)
2026-03-08 07:19:13,957 - DEBUG - Normalizing dispensary: 'Jungle Boys' -> 'jungle boys'
2026-03-08 07:19:13,957 - DEBUG - Exact match found: 'Jungle Boys' -> 'jungle-boys'
2026-03-08 07:19:13,957 - WARNING - DEBUG: Normalized Jungle Boys -> jungle-boys
2026-03-08 07:19:13,957 - INFO - ✅ Processed image_30_725973623: 4 deals from Jungle Boys
2026-03-08 07:19:15,367 - INFO - 📊 First pass extracted 4 deals
2026-03-08 07:19:15,368 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-08 07:19:16,069 - INFO - ℹ Refinement pass found no additional deals
2026-03-08 07:19:16,069 - DEBUG - Normalizing dispensary: 'The Flowery' -> 'the flowery'
2026-03-08 07:19:16,069 - DEBUG - Exact match found: 'The Flowery' -> 'the-flowery'
2026-03-08 07:19:16,069 - WARNING - DEBUG: Normalized The Flowery -> the-flowery
2026-03-08 07:19:16,069 - INFO - ✅ Processed image_27_300195207: 4 deals from The Flowery
2026-03-08 07:19:16,071 - INFO - ✅ Downloaded: image_24_1329197011.jpg
2026-03-08 07:19:16,071 - INFO - 🤖 Using original Gemini extraction for image_24_1329197011.jpg
2026-03-08 07:19:17,297 - INFO - 📊 First pass extracted 5 deals
2026-03-08 07:19:17,297 - INFO - 🔄 Deal count (5) below threshold, running refinement pass...
2026-03-08 07:19:18,804 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-08 07:19:18,804 - INFO - 📈 Total deals after refinement: 9 (4 new unique deals)
2026-03-08 07:19:18,804 - DEBUG - Normalizing dispensary: 'One Plant' -> 'one plant'
2026-03-08 07:19:18,804 - DEBUG - Exact match found: 'One Plant' -> 'one-plant'
2026-03-08 07:19:18,804 - WARNING - DEBUG: Normalized One Plant -> one-plant
2026-03-08 07:19:18,804 - INFO - ✅ Processed image_26_852658791: 9 deals from One Plant
2026-03-08 07:19:20,654 - INFO - 📊 First pass extracted 15 deals
2026-03-08 07:19:20,654 - DEBUG - Normalizing dispensary: 'Eden' -> 'eden'
2026-03-08 07:19:20,654 - DEBUG - Exact match found: 'Eden' -> 'eden'
2026-03-08 07:19:20,654 - WARNING - DEBUG: Normalized Eden -> eden
2026-03-08 07:19:20,654 - INFO - ✅ Processed image_24_1329197011: 15 deals from Eden
2026-03-08 07:19:20,657 - DEBUG - close.started
2026-03-08 07:19:20,659 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,659 - DEBUG - close.complete
2026-03-08 07:19:20,659 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,660 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,662 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,663 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,664 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,664 - DEBUG - close.started
2026-03-08 07:19:20,665 - DEBUG - close.complete
2026-03-08 07:19:20,665 - DEBUG - close.started
2026-03-08 07:19:20,665 - DEBUG - close.complete
2026-03-08 07:19:20,665 - DEBUG - close.started
2026-03-08 07:19:20,665 - DEBUG - close.complete
2026-03-08 07:19:20,665 - DEBUG - close.started
2026-03-08 07:19:20,665 - DEBUG - close.complete
2026-03-08 07:19:20,665 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,668 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e05b0>
2026-03-08 07:19:20,669 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,669 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca791960>
2026-03-08 07:19:20,669 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,669 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e1510>
2026-03-08 07:19:20,670 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e1e10>
2026-03-08 07:19:20,670 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e27a0>
2026-03-08 07:19:20,670 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,670 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca791b40>
2026-03-08 07:19:20,670 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,670 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e1f90>
2026-03-08 07:19:20,670 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,671 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,671 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,676 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca792800>
2026-03-08 07:19:20,676 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,676 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,676 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,676 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,676 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,677 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e2440>
2026-03-08 07:19:20,677 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca9724a0>
2026-03-08 07:19:20,677 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,677 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,678 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,678 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,678 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,678 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,678 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,678 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca793370>
2026-03-08 07:19:20,678 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e1630>
2026-03-08 07:19:20,678 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,678 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,678 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,679 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,679 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,680 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,680 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e3df0>
2026-03-08 07:19:20,680 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,680 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,680 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,681 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,681 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,681 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,682 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,682 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,682 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,682 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,682 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,682 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,685 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca8e2860>
2026-03-08 07:19:20,685 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,685 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,685 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,685 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,685 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,717 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90123238c79d96-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.insa'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b6e-7b09-be82-85ea4dbc5d58'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'3'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,718 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.insa&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,718 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,718 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,718 - DEBUG - response_closed.started
2026-03-08 07:19:20,718 - DEBUG - response_closed.complete
2026-03-08 07:19:20,719 - DEBUG - close.started
2026-03-08 07:19:20,719 - DEBUG - close.complete
2026-03-08 07:19:20,719 - DEBUG - 🏷 Product types: ['flower', 'pre-rolls', 'smalls'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,720 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,721 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012324ca3da66-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.the-flowery'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b73-7c3e-a857-e4cb749d01c8'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,721 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.the-flowery&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,722 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,722 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,723 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d901232484829a9-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.jungle-boys'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b71-7e17-bfe8-59dc6a805ac6'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'11'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,723 - DEBUG - response_closed.started
2026-03-08 07:19:20,723 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.jungle-boys&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,723 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012324b89783a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.one-plant'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b72-7321-9d59-fe42f8a85979'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,724 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012323aee1e13-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.surterra'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b77-7270-962f-1d4fb06809eb'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'2'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,724 - DEBUG - response_closed.complete
2026-03-08 07:19:20,724 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d90123239f40bfa-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.eden'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b6e-7b3c-8197-8d7967a69557'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,725 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,725 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7cb0a0>
2026-03-08 07:19:20,725 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.one-plant&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,726 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.surterra&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,726 - DEBUG - close.started
2026-03-08 07:19:20,726 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.eden&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,727 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,727 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,727 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,727 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,728 - DEBUG - close.complete
2026-03-08 07:19:20,728 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,728 - DEBUG - response_closed.started
2026-03-08 07:19:20,728 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,729 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,729 - DEBUG - 🏷 Product types: ['concentrates', 'flower'] → Category ID: b8446117-9bdd-4819-b996-5695222cf3bc
2026-03-08 07:19:20,729 - DEBUG - response_closed.complete
2026-03-08 07:19:20,730 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,730 - DEBUG - response_closed.started
2026-03-08 07:19:20,730 - DEBUG - response_closed.started
2026-03-08 07:19:20,731 - DEBUG - close.started
2026-03-08 07:19:20,731 - DEBUG - response_closed.started
2026-03-08 07:19:20,731 - DEBUG - 🏷 Product types: ['carts', 'flower'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,731 - DEBUG - response_closed.complete
2026-03-08 07:19:20,732 - DEBUG - response_closed.complete
2026-03-08 07:19:20,732 - DEBUG - close.complete
2026-03-08 07:19:20,732 - DEBUG - response_closed.complete
2026-03-08 07:19:20,733 - DEBUG - close.started
2026-03-08 07:19:20,733 - DEBUG - 🏷 Product types: ['edibles', 'vapes', 'flower'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-08 07:19:20,734 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,734 - DEBUG - 🏷 Product types: ['edibles'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-08 07:19:20,734 - DEBUG - 🏷 Product types: ['rosin', 'flower', 'live rosin aio', 'ounces'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,735 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,736 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,736 - DEBUG - close.complete
2026-03-08 07:19:20,736 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca7c95d0>
2026-03-08 07:19:20,737 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,738 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,738 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d9012324b9fb5f8-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.the-flowery'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9b7b-7b2d-8c61-503314c8480f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,738 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,739 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,739 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,739 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,740 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.the-flowery&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-08 07:19:20,740 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,740 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,741 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,741 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,741 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca792350>
2026-03-08 07:19:20,741 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,742 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,742 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,742 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,743 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,743 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6463b0>
2026-03-08 07:19:20,742 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,743 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca644040>
2026-03-08 07:19:20,744 - DEBUG - response_closed.started
2026-03-08 07:19:20,744 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,744 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,745 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,745 - DEBUG - response_closed.complete
2026-03-08 07:19:20,745 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,746 - DEBUG - close.started
2026-03-08 07:19:20,746 - DEBUG - close.complete
2026-03-08 07:19:20,746 - DEBUG - 🏷 Product types: ['flower', 'prerolls'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-08 07:19:20,747 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-08 07:19:20,750 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca386500>
2026-03-08 07:19:20,750 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7fe8cab7ff40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-08 07:19:20,751 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca6471c0>
2026-03-08 07:19:20,751 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8cb7b9f30>
2026-03-08 07:19:20,751 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,751 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,752 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,752 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,752 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,752 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,752 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,753 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca646e00>
2026-03-08 07:19:20,753 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,753 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,753 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,753 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,754 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,754 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,754 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,754 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,757 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fe8ca386230>
2026-03-08 07:19:20,757 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,757 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,757 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,757 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,757 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-08 07:19:20,784 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232ab411e13-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bac-7216-9e60-fcdd87fd9da7'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,784 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,784 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,785 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d9012329bf1783a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bac-7567-aef8-4573612558b1'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,785 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,785 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,786 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,786 - DEBUG - response_closed.started
2026-03-08 07:19:20,786 - DEBUG - response_closed.complete
2026-03-08 07:19:20,786 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,786 - DEBUG - close.started
2026-03-08 07:19:20,787 - DEBUG - response_closed.started
2026-03-08 07:19:20,787 - DEBUG - close.complete
2026-03-08 07:19:20,787 - DEBUG - response_closed.complete
2026-03-08 07:19:20,788 - INFO - ✅ Inserted deal: Surterra - Free Wana Quick & Patient Discounts
2026-03-08 07:19:20,788 - DEBUG - close.started
2026-03-08 07:19:20,790 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bbfb6e14-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bb8-7460-acad-64a9fce4ed2f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,790 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232ad3b303a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9baf-7e35-8b28-9ae77365766b'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,790 - DEBUG - close.complete
2026-03-08 07:19:20,791 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,791 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,792 - INFO - ✅ Inserted deal: One Plant Florida - Everyday Low Prices on Edibles, Carts, and Flower
2026-03-08 07:19:20,792 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,792 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,794 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,794 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,794 - DEBUG - response_closed.started
2026-03-08 07:19:20,794 - DEBUG - response_closed.started
2026-03-08 07:19:20,795 - DEBUG - response_closed.complete
2026-03-08 07:19:20,795 - DEBUG - response_closed.complete
2026-03-08 07:19:20,795 - INFO - ✅ Inserted deal: Eden - Flower & Rosin Deals: B2G1, Half Off, & More!
2026-03-08 07:19:20,796 - INFO - ✅ Inserted deal: Insa - Daily Deals & Doorbuster Flower Savings
2026-03-08 07:19:20,798 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bbe1889f-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bbd-7fd4-9aca-0df8c33ce410'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,798 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,798 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,799 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,799 - DEBUG - response_closed.started
2026-03-08 07:19:20,799 - DEBUG - response_closed.complete
2026-03-08 07:19:20,800 - INFO - ✅ Inserted deal: The Flowery - Custom Ounces & Bundles Available
2026-03-08 07:19:20,802 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bbfe6e14-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bbe-71be-87b8-be8136cc6ad5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'8'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,803 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,803 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,803 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,804 - DEBUG - response_closed.started
2026-03-08 07:19:20,804 - DEBUG - response_closed.complete
2026-03-08 07:19:20,804 - INFO - ✅ Inserted deal: Jungle Boys - New 1G Carts & Premium Flower Deals
2026-03-08 07:19:20,806 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d901232bcbe0860-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9bbf-7592-b8ba-74b1167cab0a'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,806 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-08 07:19:20,807 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-08 07:19:20,807 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,807 - DEBUG - response_closed.started
2026-03-08 07:19:20,807 - DEBUG - response_closed.complete
2026-03-08 07:19:20,807 - INFO - ✅ Inserted deal: The Flowery - Concentrate & Flower Deals Available Now
2026-03-08 07:19:20,808 - INFO - ✅ Batch 3 completed: 7 processed, 26 deals inserted
2026-03-08 07:19:20,862 - INFO - ✅ Unified Scraper Engine completed successfully
==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 28
Images Processed: 26
Deals Extracted: 306
Deals Inserted: 26
Duplicates Skipped: 1
Blacklisted: 0
Errors: 1
Success Rate: 8.5%
Duration: 76.1s
2026-03-08 07:19:20,864 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,865 - DEBUG - send_request_headers.complete
2026-03-08 07:19:20,865 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,865 - DEBUG - send_request_body.complete
2026-03-08 07:19:20,865 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-08 07:19:20,901 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sun, 08 Mar 2026 07:19:20 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-101/102'), (b'CF-Ray', b'9d9012336db7303a-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?is_active=eq.True&moderation_status=eq.approved&select=id'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'count=exact'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019ccc50-9c2a-7325-8330-35859937c29f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-08 07:19:20,901 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id&is_active=eq.True&moderation_status=eq.approved "HTTP/1.1 200 OK"
2026-03-08 07:19:20,901 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-08 07:19:20,902 - DEBUG - receive_response_body.complete
2026-03-08 07:19:20,902 - DEBUG - response_closed.started
2026-03-08 07:19:20,902 - DEBUG - response_closed.complete
2026-03-08 07:19:20,903 - INFO - ✅ Deal count OK: 102 active deals
==================================================
🐍 Python process exited with code: 0
✅ Unified Scraper Orchestrator completed successfully

==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 28
Images Processed: 0
Deals Extracted: 0
Deals Inserted: 26
Duplicates Skipped: 1
Blacklisted: 0
Errors: 0
==================================================