{"id":422,"date":"2026-08-01T20:19:00","date_gmt":"2026-08-01T20:19:00","guid":{"rendered":"https:\/\/manishpanchhal.ca\/blog\/?p=422"},"modified":"2026-08-01T20:19:03","modified_gmt":"2026-08-01T20:19:03","slug":"example-campaign-scoring","status":"publish","type":"post","link":"https:\/\/manishpanchhal.ca\/blog\/political-consultation\/brampton\/example-campaign-scoring\/","title":{"rendered":"Example Campaign Scoring"},"content":{"rendered":"<div class=\"\" data-turn-id-container=\"dbb7f382-d44d-4410-97bb-3547bbf838bd\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"dbb7f382-d44d-4410-97bb-3547bbf838bd\" data-turn-id-container=\"dbb7f382-d44d-4410-97bb-3547bbf838bd\" data-testid=\"conversation-turn-10\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"dbb7f382-d44d-4410-97bb-3547bbf838bd\" data-message-model-slug=\"gpt-5-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-start=\"1426\" data-end=\"1452\" data-section-id=\"qom1jx\">Example Campaign Scoring<\/h1>\n<p data-start=\"1454\" data-end=\"1493\">Each Polling Division receives a score.<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex flex-col-reverse w-fit\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"1495\" data-end=\"1707\">\n<thead data-start=\"1495\" data-end=\"1516\">\n<tr data-start=\"1495\" data-end=\"1516\">\n<th class=\"last:pe-10\" data-start=\"1495\" data-end=\"1506\" data-col-size=\"sm\">Category<\/th>\n<th class=\"last:pe-10\" data-start=\"1506\" data-end=\"1516\" data-col-size=\"sm\">Weight<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"1540\" data-end=\"1707\">\n<tr data-start=\"1540\" data-end=\"1566\">\n<td data-start=\"1540\" data-end=\"1559\" data-col-size=\"sm\">Previous turnout<\/td>\n<td data-start=\"1559\" data-end=\"1566\" data-col-size=\"sm\">25%<\/td>\n<\/tr>\n<tr data-start=\"1567\" data-end=\"1594\">\n<td data-start=\"1567\" data-end=\"1587\" data-col-size=\"sm\">Population growth<\/td>\n<td data-start=\"1587\" data-end=\"1594\" data-col-size=\"sm\">20%<\/td>\n<\/tr>\n<tr data-start=\"1595\" data-end=\"1620\">\n<td data-start=\"1595\" data-end=\"1613\" data-col-size=\"sm\">Swing potential<\/td>\n<td data-start=\"1613\" data-end=\"1620\" data-col-size=\"sm\">20%<\/td>\n<\/tr>\n<tr data-start=\"1621\" data-end=\"1652\">\n<td data-start=\"1621\" data-end=\"1645\" data-col-size=\"sm\">Candidate familiarity<\/td>\n<td data-start=\"1645\" data-end=\"1652\" data-col-size=\"sm\">15%<\/td>\n<\/tr>\n<tr data-start=\"1653\" data-end=\"1681\">\n<td data-start=\"1653\" data-end=\"1674\" data-col-size=\"sm\">Volunteer strength<\/td>\n<td data-start=\"1674\" data-end=\"1681\" data-col-size=\"sm\">10%<\/td>\n<\/tr>\n<tr data-start=\"1682\" data-end=\"1707\">\n<td data-start=\"1682\" data-end=\"1700\" data-col-size=\"sm\">Issue intensity<\/td>\n<td data-start=\"1700\" data-end=\"1707\" data-col-size=\"sm\">10%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"1709\" data-end=\"1720\">Final Score<\/p>\n<p data-start=\"1722\" data-end=\"1745\">90\u2013100 = <strong data-start=\"1731\" data-end=\"1745\">Priority A<\/strong><\/p>\n<p data-start=\"1747\" data-end=\"1769\">75\u201389 = <strong data-start=\"1755\" data-end=\"1769\">Priority B<\/strong><\/p>\n<p data-start=\"1771\" data-end=\"1793\">60\u201374 = <strong data-start=\"1779\" data-end=\"1793\">Priority C<\/strong><\/p>\n<p data-start=\"1795\" data-end=\"1817\">Below 60 = Maintenance<\/p>\n<hr data-start=\"1819\" data-end=\"1822\" \/>\n<h1 data-start=\"1824\" data-end=\"1850\" data-section-id=\"1delmwx\">Campaign Targets by Ward<\/h1>\n<ul data-start=\"2476\" data-end=\"2528\">\n<li data-start=\"2509\" data-end=\"2528\" data-section-id=\"xk9cbu\"><\/li>\n<\/ul>\n<hr data-start=\"2530\" data-end=\"2533\" \/>\n<h1 data-start=\"2535\" data-end=\"2569\" data-section-id=\"1bx3t4c\">Recommended Canvassing Frequency<\/h1>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex flex-col-reverse w-fit\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"2571\" data-end=\"2765\">\n<thead data-start=\"2571\" data-end=\"2630\">\n<tr data-start=\"2571\" data-end=\"2630\">\n<th class=\"last:pe-10\" data-start=\"2571\" data-end=\"2582\" data-col-size=\"sm\">Priority<\/th>\n<th class=\"last:pe-10\" data-start=\"2582\" data-end=\"2596\" data-col-size=\"sm\">Door Knocks<\/th>\n<th class=\"last:pe-10\" data-start=\"2596\" data-end=\"2610\" data-col-size=\"sm\">Phone Calls<\/th>\n<th class=\"last:pe-10\" data-start=\"2610\" data-end=\"2630\" data-col-size=\"sm\">Literature Drops<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2692\" data-end=\"2765\">\n<tr data-start=\"2692\" data-end=\"2711\">\n<td data-start=\"2692\" data-end=\"2696\" data-col-size=\"sm\">A<\/td>\n<td data-start=\"2696\" data-end=\"2702\" data-col-size=\"sm\">4\u20135<\/td>\n<td data-start=\"2702\" data-end=\"2706\" data-col-size=\"sm\">3<\/td>\n<td data-start=\"2706\" data-end=\"2711\" data-col-size=\"sm\">5<\/td>\n<\/tr>\n<tr data-start=\"2712\" data-end=\"2729\">\n<td data-start=\"2712\" data-end=\"2716\" data-col-size=\"sm\">B<\/td>\n<td data-start=\"2716\" data-end=\"2720\" data-col-size=\"sm\">3<\/td>\n<td data-start=\"2720\" data-end=\"2724\" data-col-size=\"sm\">2<\/td>\n<td data-start=\"2724\" data-end=\"2729\" data-col-size=\"sm\">3<\/td>\n<\/tr>\n<tr data-start=\"2730\" data-end=\"2747\">\n<td data-start=\"2730\" data-end=\"2734\" data-col-size=\"sm\">C<\/td>\n<td data-start=\"2734\" data-end=\"2738\" data-col-size=\"sm\">2<\/td>\n<td data-start=\"2738\" data-end=\"2742\" data-col-size=\"sm\">1<\/td>\n<td data-start=\"2742\" data-end=\"2747\" data-col-size=\"sm\">2<\/td>\n<\/tr>\n<tr data-start=\"2748\" data-end=\"2765\">\n<td data-start=\"2748\" data-end=\"2752\" data-col-size=\"sm\">D<\/td>\n<td data-start=\"2752\" data-end=\"2756\" data-col-size=\"sm\">1<\/td>\n<td data-start=\"2756\" data-end=\"2760\" data-col-size=\"sm\">0<\/td>\n<td data-start=\"2760\" data-end=\"2765\" data-col-size=\"sm\">1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"2767\" data-end=\"2770\" \/>\n<h2 data-start=\"2772\" data-end=\"2843\" data-section-id=\"d1rkxu\">I can also prepare a much more advanced campaign package, including:<\/h2>\n<ol data-start=\"2845\" data-end=\"3250\">\n<li data-start=\"2845\" data-end=\"2952\" data-section-id=\"ppkn9l\"><strong data-start=\"2848\" data-end=\"2952\">Every Polling Division in Brampton (approximately 400\u2013500 PDs) mapped to the correct municipal ward.<\/strong><\/li>\n<li data-start=\"2953\" data-end=\"3023\" data-section-id=\"1y576gu\"><strong data-start=\"2956\" data-end=\"3023\">Historical turnout by PD (2018 and 2022) with 2026 projections.<\/strong><\/li>\n<li data-start=\"3024\" data-end=\"3127\" data-section-id=\"1ew1aow\"><strong data-start=\"3027\" data-end=\"3047\">A swing-PD index<\/strong> identifying where additional canvassing is most likely to influence the result.<\/li>\n<li data-start=\"3128\" data-end=\"3250\" data-section-id=\"1xlvc6r\"><strong data-start=\"3131\" data-end=\"3172\">A colour-coded GIS-style Brampton map<\/strong> showing every PD, ranked from Priority A (highest opportunity) to Priority D.<\/li>\n<\/ol>\n<p data-start=\"3252\" data-end=\"3451\" data-is-last-node=\"\" data-is-only-node=\"\">That level of analysis requires the official poll boundaries and turnout data for the relevant election, but once those datasets are available, it can be built into a professional campaign workbook.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"z-0 flex min-h-[46px] justify-start\"><\/div>\n<div class=\"pointer-events-none -mb-px h-px w-full opacity-0\" aria-hidden=\"true\"><\/div>\n<\/div>\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1\" data-conversation-screenshot-content=\"\">\n<div><\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"d92bf966-80ef-4580-a13a-8bde1ad99dc6\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"d92bf966-80ef-4580-a13a-8bde1ad99dc6\" data-turn-id-container=\"d92bf966-80ef-4580-a13a-8bde1ad99dc6\" data-testid=\"conversation-turn-11\" data-turn=\"user\">\n<div class=\"text-base my-auto mx-auto pt-12 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"user\" data-message-id=\"d92bf966-80ef-4580-a13a-8bde1ad99dc6\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden items-end rtl:items-start\">\n<div class=\"user-message-bubble-color corner-superellipse\/0.98 relative min-w-0 overflow-hidden rounded-[22px] px-4 py-2.5 leading-6 max-w-(--user-chat-width,70%)\">\n<div class=\"max-w-full min-w-0 [overflow-wrap:anywhere] whitespace-pre-wrap\">P<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"68a7fec6-5441-47cc-aa22-8d3aabfafe81\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"68a7fec6-5441-47cc-aa22-8d3aabfafe81\" data-turn-id-container=\"68a7fec6-5441-47cc-aa22-8d3aabfafe81\" data-testid=\"conversation-turn-12\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"4f37e2ac-9894-4715-9130-c5a06e58aa51\" data-message-model-slug=\"gpt-5-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"2917\" data-end=\"3032\">If you&#8217;re preparing a municipal consulting package, I can build a much more detailed GIS-style resource, including:<\/p>\n<ul data-start=\"3034\" data-end=\"3370\">\n<li data-start=\"3034\" data-end=\"3077\" data-section-id=\"1jkicpi\"><strong data-start=\"3036\" data-end=\"3077\">Street-by-street campaign walk routes<\/strong><\/li>\n<li data-start=\"3078\" data-end=\"3136\" data-section-id=\"1kr3jxk\"><strong data-start=\"3080\" data-end=\"3136\">Polling Division (PD) boundaries overlaid on streets<\/strong><\/li>\n<li data-start=\"3137\" data-end=\"3177\" data-section-id=\"13jl6vy\"><strong data-start=\"3139\" data-end=\"3177\">Neighbourhood demographic profiles<\/strong><\/li>\n<li data-start=\"3178\" data-end=\"3222\" data-section-id=\"a6q67i\"><strong data-start=\"3180\" data-end=\"3222\">Estimated voter density by subdivision<\/strong><\/li>\n<li data-start=\"3223\" data-end=\"3258\" data-section-id=\"1l8s2zu\"><strong data-start=\"3225\" data-end=\"3258\">Canvassing priority map (A\u2013D)<\/strong><\/li>\n<li data-start=\"3259\" data-end=\"3313\" data-section-id=\"dqhhsp\"><strong data-start=\"3261\" data-end=\"3313\">Advance poll locations with 5 km catchment areas<\/strong><\/li>\n<li data-start=\"3314\" data-end=\"3370\" data-section-id=\"lhjkbb\"><strong data-start=\"3316\" data-end=\"3370\">Printable colour maps in A3\/PDF for campaign teams<\/strong><\/li>\n<\/ul>\n<p data-start=\"3372\" data-end=\"3501\" data-is-last-node=\"\" data-is-only-node=\"\">This would be a campaign planning product rather than a prediction of how residents on any particular street are likely to vote.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"b080f095-0d60-43a2-8af4-43d6aa1e6ae1\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"b080f095-0d60-43a2-8af4-43d6aa1e6ae1\" data-turn-id-container=\"b080f095-0d60-43a2-8af4-43d6aa1e6ae1\" data-testid=\"conversation-turn-13\" data-turn=\"user\">\n<div class=\"text-base my-auto mx-auto pt-12 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col\" data-conversation-screenshot-content=\"\">\n<div class=\"z-0 flex justify-end\"><\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Example Campaign Scoring Each Polling Division receives a score. Category Weight Previous turnout 25% Population growth 20% Swing potential 20% Candidate familiarity 15% Volunteer strength 10% Issue intensity 10% Final&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-422","post","type-post","status-publish","format-standard","hentry","category-brampton"],"_links":{"self":[{"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/posts\/422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/comments?post=422"}],"version-history":[{"count":1,"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/posts\/422\/revisions"}],"predecessor-version":[{"id":423,"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/posts\/422\/revisions\/423"}],"wp:attachment":[{"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/media?parent=422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/categories?post=422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manishpanchhal.ca\/blog\/wp-json\/wp\/v2\/tags?post=422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}