# Map Organizer Guide ## Overview As a Map Organizer, you're responsible for managing territories, coordinating volunteers, and organizing door-to-door canvassing using Changemaker Lite's Map module. This guide will help you: - **Import and manage locations**: Build your canvassing database from CSV or NAR data - **Create territorial cuts**: Divide your area into manageable canvassing zones - **Organize volunteer shifts**: Schedule and coordinate door-to-door canvassing - **Monitor canvass progress**: Track coverage, outcomes, and volunteer performance - **Ensure data quality**: Review geocoding accuracy and fix issues - **Generate walk sheets**: Create printable canvassing materials Whether you're organizing a local ward campaign or a city-wide canvass, this guide provides strategies for effective territory management. --- ## Understanding Map Roles You may have one of two roles for map management: ### SUPER_ADMIN - **Access**: Full platform access - **Capabilities**: All map functions plus user management, campaigns, site settings - **Use case**: Primary administrator ### MAP_ADMIN - **Access**: Map module only - **Capabilities**: - Import and manage locations - Create cuts - Organize shifts - Monitor canvassing - Generate walk sheets - **Restrictions**: Cannot manage users (except shift assignments), campaigns, or site settings - **Use case**: Dedicated field organizer without full admin access !!! tip "Role Specialization" If you only manage field operations (not campaigns), ask for MAP_ADMIN role. This keeps the interface focused on your work. --- ## Understanding Location Data ### What is a Location? A **location** is a physical address where canvassing occurs. Each location represents: - A single-family home, OR - An apartment/condo building (multi-unit), OR - A business address (if canvassing businesses) **Location data includes:** - **Address**: Full civic address (street, city, province, postal code) - **Coordinates**: Latitude and longitude (from geocoding) - **Building type**: RESIDENTIAL, APARTMENT, BUSINESS - **Unit count**: Number of dwelling units (1 for houses, 10+ for apartments) - **Cut assignment**: Which territorial cut the location belongs to - **Canvass history**: Past visits, outcomes, support levels ### Building vs Unit Level **Building-level data** (recommended): - One location record per building - `unitCount` field indicates multi-unit buildings - Example: "123 Main St" with `unitCount: 24` (apartment building) **Unit-level data** (alternative): - One location record per unit - Example: "123 Main St, Unit 1", "123 Main St, Unit 2", etc. - More granular but creates more records !!! tip "Recommended Approach" Use building-level data for apartments (one record with `unitCount`). This reduces database size and simplifies canvassing (volunteers visit building once, not once per unit). ### Data Sources **1. CSV Import** — Your own data - Volunteer sign-up forms - Voter registration data - Membership lists - Custom databases **2. NAR Import** — Canadian electoral data - Elections Canada National Address Register - All residential addresses in Canada - Pre-geocoded coordinates - Federal electoral districts **3. Manual Entry** — Individual addresses - Add one location at a time via admin interface - Click-to-add on map --- ## Importing Locations from CSV ### Preparing Your CSV File **Required columns:** - `address` — Full street address (e.g., "123 Main St") - `city` — City name (e.g., "Ottawa") - `province` — Province/state code (e.g., "ON", "BC") - `postalCode` — Postal code (e.g., "K1A 0B1") **Optional columns:** - `latitude` — Pre-geocoded latitude (decimal degrees) - `longitude` — Pre-geocoded longitude (decimal degrees) - `buildingType` — RESIDENTIAL, APARTMENT, or BUSINESS - `unitCount` — Number of units (integer, default: 1) - `federalDistrict` — Electoral district name - `notes` — Internal notes **CSV example:** ```csv address,city,province,postalCode,buildingType,unitCount "123 Main St","Ottawa","ON","K1A 0B1","RESIDENTIAL",1 "456 Queen St E, Unit 5","Toronto","ON","M5A 1T1","APARTMENT",36 "789 Granville St","Vancouver","BC","V6Z 1K3","RESIDENTIAL",1 ``` **CSV formatting tips:** 1. **Use quotes** around addresses with commas 2. **Remove special characters** (emoji, unusual symbols) 3. **Use UTF-8 encoding** (not Windows-1252 or ASCII) 4. **One header row** (first row = column names) 5. **No blank rows** (delete empty rows at end) 6. **Consistent province codes** (use 2-letter abbreviations) **Excel to CSV:** 1. Open your Excel file 2. File > Save As 3. Format: "CSV UTF-8 (Comma delimited) (*.csv)" 4. Save ### Importing the CSV **To import locations:** 1. Navigate to **Map > Locations** 2. Click **"Import CSV"** button (top-right) 3. Upload your CSV file (drag-drop or browse) 4. Map CSV columns to location fields 5. Preview imported data (first 10 rows shown) 6. Click **"Import"** **Screenshot placeholder**: *CSV import dialog showing file upload area and column mapping interface* **Column mapping:** The system tries to auto-detect columns, but verify: - CSV "address" → Location "address" - CSV "city" → Location "city" - CSV "province" → Location "province" - CSV "postalCode" → Location "postalCode" If your CSV uses different column names (e.g., "Street Address" instead of "address"), map manually using the dropdowns. **What happens during import:** 1. System validates each row (checks required fields) 2. Skips invalid rows (logs errors) 3. Creates location records 4. Geocodes addresses (if lat/lng not provided) 5. Shows summary: X imported, Y skipped **Import limits:** - Maximum 10,000 rows per import - For larger datasets, split into multiple files ### Troubleshooting Import Issues **Issue: "Invalid CSV format"** **Causes:** - File is not actually CSV (e.g., Excel .xlsx) - Missing header row - Inconsistent column count (some rows have more/fewer columns) **Solutions:** - Save as CSV UTF-8 from Excel - Ensure first row is headers - Remove blank rows and columns --- **Issue: "Missing required field"** **Causes:** - CSV missing required column (address, city, province, or postalCode) - Column name doesn't match (e.g., "Street" instead of "address") **Solutions:** - Add missing column to CSV - Use column mapping to map "Street" → "address" --- **Issue: "Geocoding failed for X addresses"** **Causes:** - Addresses are invalid (typos, wrong format) - Addresses are too vague ("Main Street" without number) - Geocoding service is down **Solutions:** - Review failed addresses in Data Quality dashboard - Fix typos and re-import those rows - Manually place locations on map (see below) --- ## NAR Import (Canadian Electoral Data) ### What is NAR Data? NAR (National Address Register) is Elections Canada's official database of all residential addresses in Canada. It includes: - **Precise civic addresses** (from Address files) - **Geocoded coordinates** (from Location files) - **Federal electoral districts** - **Building use classification** (residential, commercial, institutional) **Advantages:** - ✅ Comprehensive (all Canadian addresses) - ✅ Pre-geocoded (high accuracy) - ✅ Includes federal district data - ✅ Updated regularly by Elections Canada **Disadvantages:** - ❌ Canada only (not available for other countries) - ❌ Requires server access to install data files - ❌ Large file size (multi-GB for provinces like Ontario) ### Obtaining NAR Data NAR data must be obtained from Elections Canada: 1. Contact Elections Canada Open Data team 2. Request latest NAR dataset (e.g., "NAR 2025 Server") 3. Download Address and Location files 4. Provide files to your system administrator **Files needed:** - `Address_[province]_part_[X].csv` — Civic addresses - `Location_[province].csv` — Geocoded coordinates System administrator places files in `/data` directory on server. ### Importing NAR Data **To import NAR data:** 1. Navigate to **Map > Locations** 2. Click **"NAR Import"** button 3. Select province (e.g., Ontario) 4. Choose dataset (if multiple years available) 5. Apply filters (see below) 6. Click **"Start Import"** **Screenshot placeholder**: *NAR Import modal showing province selector, dataset picker, and filter options* **Import filters:** **Province filter** (required): - Select province to import (ON, BC, AB, etc.) - Each province has separate Address/Location files **City filter** (optional): - Import only specific cities - Example: "Toronto,Ottawa,Mississauga" (comma-separated) - Leave blank to import entire province **Postal code filter** (optional): - Import only specific postal code prefixes - Example: "K1A,K1B,K1C" (forward sortation areas) - Useful for targeting specific neighborhoods **Cut filter** (optional): - Assign imported locations to a specific cut - If left blank, locations are imported without cut assignment - You can assign to cuts later **Residential only** (toggle): - ON: Import only residential buildings (exclude commercial, institutional) - OFF: Import all buildings - Recommended: ON (unless you're canvassing businesses) **What happens during NAR import:** 1. System scans NAR files for selected province 2. Joins Address and Location files on `LOC_GUID` (internal Elections Canada ID) 3. Filters by city, postal code (if specified) 4. Converts coordinates from EPSG:3347 (Lambert projection) to WGS84 (lat/lng) 5. Creates location records 6. Shows progress (can take several minutes for large provinces) **Import performance:** - Small municipality (10k addresses): ~30 seconds - Large city (500k addresses): ~5 minutes - Full province (3M addresses): ~20 minutes !!! warning "Server-Side Processing" NAR import runs on the server (not in your browser). Do not close the modal during import—wait for completion message. ### NAR Data Fields NAR import populates these location fields: - `address` — From Address file: `CIVIC_NO + OFFICIAL_STREET_NAME + STREET_TYPE + STREET_DIRECTION` - `city` — From Address file: `MUNICIPALITY_NAME` - `province` — From province code - `postalCode` — From Address file: `POSTAL_CODE` - `latitude` — From Location file: `BG_LATITUDE` (converted to WGS84) - `longitude` — From Location file: `BG_LONGITUDE` (converted to WGS84) - `federalDistrict` — From Location file: `FED_NUM` (district number) + name lookup - `buildingUse` — From Address file: `BUILDING_USE` (RESIDENTIAL, COMMERCIAL, INSTITUTIONAL) --- ## Creating and Managing Cuts ### What is a Cut? A **cut** is a geographic area used to organize canvassing. Cuts are polygons drawn on a map. **Common cut types:** - **WARD**: Municipal electoral ward - **NEIGHBORHOOD**: Informal neighborhood (e.g., "Downtown", "Riverside") - **DISTRICT**: Federal or provincial electoral district - **CUSTOM**: Any other boundary (e.g., "North of Highway", "Priority Zone") **Why use cuts?** - ✅ **Assign territories to volunteers**: "You canvass Ward 5" - ✅ **Track progress by area**: "Ward 5 is 75% complete" - ✅ **Generate walk sheets**: Print addresses for Ward 5 only - ✅ **Prevent duplication**: Volunteers know their boundaries ### Cut Best Practices **Size:** - **Recommended**: 200-500 locations per cut - Too small (< 100): Inefficient (volunteers finish too quickly) - Too large (> 1000): Overwhelming (takes many sessions to complete) **Boundaries:** - Use **natural boundaries**: Roads, rivers, parks, rail lines - Avoid cutting through neighborhoods arbitrarily - Use official boundaries when available (ward maps, district maps) **Naming:** - Use **official names** when available ("Ward 5", "Riverdale") - Be consistent (don't mix "Ward 5" and "Fifth Ward") - Avoid abbreviations unless universally understood **Colors:** - Use **distinct colors** for adjacent cuts - Use **color coding** meaningfully (e.g., priority cuts in red) - Ensure colors are visible on both light and dark backgrounds ### Creating a Cut (Drawing on Map) **To create a cut:** 1. Navigate to **Map > Cuts** 2. Click the **"Map Drawing"** tab 3. Click **"Start Drawing"** 4. Click on the map to add polygon vertices 5. Close the polygon (click near first vertex) 6. Fill in cut details (see form below) 7. Click **"Save Cut"** **Screenshot placeholder**: *Cut drawing interface showing map with polygon being drawn* **Drawing tips:** 1. **Start at a corner**: Begin at a distinct landmark (intersection, park corner) 2. **Follow roads**: Click along roads and boundaries 3. **Use zoom**: Zoom in for precision, out for overview 4. **Closing detection**: System detects when you're near the first point and offers to close 5. **Undo**: Click **"Undo Last Point"** if you make a mistake **Cut form fields:** **Name** (required): - Cut identifier (e.g., "Ward 5", "Downtown") - Displayed on map, walk sheets, volunteer portal **Category** (required): - WARD, NEIGHBORHOOD, DISTRICT, or CUSTOM - Used for filtering and organizing **Color** (required): - Display color on map - Use color picker or enter hex code (#FF5733) **Description** (optional): - Internal notes about the cut - Example: "Priority area, high support expected" **Screenshot placeholder**: *Cut creation form showing name, category, color picker, and description* ### Automatic Location Assignment When you save a cut, the system automatically: 1. Checks which locations fall inside the polygon (point-in-polygon algorithm) 2. Assigns those locations to the cut 3. Shows count: "X locations assigned" **Re-assignment:** - Locations can only belong to one cut - If you draw overlapping cuts, later cuts override earlier assignments - Review location table to verify assignments ### Editing Cuts **To edit a cut:** 1. Navigate to **Map > Cuts** 2. Click **"Edit"** in Actions column 3. Modify name, category, color, or description 4. Click **"Save"** **Note:** You cannot edit the polygon shape after creation. To change boundaries, delete the cut and redraw. **To delete a cut:** 1. Click **"Delete"** in Actions column 2. Confirm deletion **What happens to locations?** - Cut assignment is removed (locations become unassigned) - Locations are NOT deleted - Historical canvass data is preserved (visits remain linked to coordinates) --- ## Managing Locations ### Viewing and Filtering Locations **To view all locations:** 1. Navigate to **Map > Locations** The locations table shows: - **Address**: Full civic address - **City**: City name - **Cut**: Assigned cut (if any) - **Geocoded**: ✅ (has coordinates) or ❌ (needs geocoding) - **Last Visit**: Date of most recent canvass visit - **Actions**: Edit, delete **Filters:** - **Search**: Search by address or postal code - **Cut**: Filter to specific cut - **Geocoded**: Show only geocoded or ungeocoded - **Building Type**: Filter by RESIDENTIAL, APARTMENT, BUSINESS - **Date Added**: Filter by import/creation date **Screenshot placeholder**: *Locations table with search bar, cut filter, and geocoded status column* ### Editing a Location **To edit a location:** 1. Click **"Edit"** in Actions column 2. Modify fields (see below) 3. Click **"Save"** **Editable fields:** **Address details:** - Street address - City - Province - Postal code **Coordinates:** - Latitude (decimal degrees, e.g., 45.4215) - Longitude (decimal degrees, e.g., -75.6972) - Drag map pin to adjust visually **Metadata:** - Building type (RESIDENTIAL, APARTMENT, BUSINESS) - Unit count (integer) - Federal district (text) - Notes (internal notes) **Cut assignment:** - Select cut from dropdown - Or leave blank (unassigned) **Screenshot placeholder**: *Edit Location modal showing address fields, map with draggable pin, and metadata fields* ### Manually Placing Locations on Map If geocoding fails, you can manually place a location: 1. Edit the location 2. Use the map at the bottom of the form 3. Drag the red pin to the correct position 4. Latitude and longitude fields update automatically 5. Click **"Save"** **Tip:** Use satellite view or street view to identify exact building location. ### Bulk Operations **To perform bulk actions:** 1. Select locations (checkboxes in table) 2. Choose action from **"Bulk Actions"** dropdown: - **Assign to Cut**: Assign selected locations to a cut - **Geocode**: Re-geocode selected locations - **Delete**: Delete selected locations 3. Confirm action **Screenshot placeholder**: *Bulk actions dropdown with selected locations and action buttons* ### Deleting Locations **To delete locations:** 1. Select locations in table (or filter and select all) 2. Choose **"Delete"** from bulk actions 3. Confirm deletion !!! warning "Canvass History Preserved" Deleting a location removes the address record but preserves canvass visit data (visits are linked to coordinates, not location IDs). Historical data remains for reporting. --- ## Geocoding and Data Quality ### Understanding Geocoding **Geocoding** converts addresses to latitude/longitude coordinates for map display. **Why geocoding matters:** - Locations without coordinates cannot appear on map - Inaccurate coordinates place locations in wrong areas - Poor geocoding affects canvassing efficiency (volunteers can't find addresses) ### Geocoding Providers Changemaker Lite tries multiple geocoding providers in order: 1. **Nominatim** (OpenStreetMap) — Free, no API key, global coverage 2. **ArcGIS** — Free tier, accurate for North America 3. **Photon** — Free, Europe-focused 4. **Mapbox** — Requires API key, very accurate 5. **Google Geocoding** — Requires API key, most accurate 6. **LocationIQ** — Requires API key, Nominatim-based **How it works:** - System tries Nominatim first - If confidence < 0.5, tries next provider - If all fail, location remains ungeocoded **API keys** (optional, configured by admin): - Mapbox: `MAPBOX_API_KEY` - Google: `GOOGLE_MAPS_API_KEY` - LocationIQ: `LOCATIONIQ_API_KEY` Without API keys, only free providers (Nominatim, ArcGIS, Photon) are used. ### Geocode Confidence Levels Each geocoded location has a **confidence score** (0.0 to 1.0): - **0.9-1.0**: High confidence (exact address match) - **0.7-0.9**: Medium-high confidence (likely correct) - **0.5-0.7**: Medium confidence (street or area match) - **0.3-0.5**: Low confidence (approximate) - **0.0-0.3**: Very low confidence (city or region only) **Confidence affects accuracy:** - High confidence → Pin is at exact building - Low confidence → Pin may be at street midpoint or city center ### Data Quality Dashboard **To review geocoding quality:** 1. Navigate to **Map > Data Quality** The dashboard shows: **Statistics cards:** - **Total locations**: All location records - **Geocoded**: Locations with coordinates - **Ungeocoded**: Locations without coordinates - **Low confidence**: Confidence < 0.5 - **Medium confidence**: Confidence 0.5-0.8 - **High confidence**: Confidence > 0.8 **Geocoding provider breakdown:** - Chart showing which providers geocoded how many locations - Example: 60% Nominatim, 30% ArcGIS, 10% Mapbox **Confidence distribution:** - Histogram showing confidence score distribution - Identify patterns (many low-confidence addresses?) **Action items:** - **Re-geocode low confidence**: Button to retry with different provider - **Export ungeocoded**: CSV of failed addresses - **Manual review**: Link to locations table filtered for low confidence **Screenshot placeholder**: *Data Quality Dashboard showing statistics cards, provider pie chart, and confidence histogram* ### Improving Geocoding Quality **Strategy 1: Fix Address Typos** 1. Export ungeocoded locations (CSV) 2. Review addresses in Excel 3. Fix typos, formatting errors 4. Re-import corrected CSV **Common issues:** - Missing civic number ("Main Street" → "123 Main Street") - Misspelled street name ("Mane St" → "Main St") - Wrong province ("ON" → "BC") --- **Strategy 2: Re-geocode with Better Provider** 1. Configure API keys for Mapbox or Google (ask admin) 2. Select low-confidence locations 3. Click **"Geocode Selected"** (bulk action) 4. System retries with all available providers --- **Strategy 3: Manually Place Locations** 1. Filter locations with confidence < 0.5 2. Edit each location 3. Find correct position on map (use satellite view) 4. Drag pin to correct location 5. Save --- **Strategy 4: Use NAR Data (Canada Only)** NAR data includes pre-geocoded coordinates with very high accuracy. If you imported from CSV and have poor geocoding, consider switching to NAR import. --- ## Organizing Volunteer Shifts ### What is a Shift? A **shift** is a scheduled volunteer canvassing session. Shifts have: - **Title**: Name of the canvass (e.g., "Saturday Morning Canvass - Ward 5") - **Start/End Time**: When volunteers should arrive and finish - **Cut Assignment**: Which area to canvass (optional but recommended) - **Max Signups**: Capacity limit (0 = unlimited) - **Meeting Location**: Where volunteers meet before canvassing **Why shifts matter:** - ✅ **Coordinate volunteers**: Everyone knows when and where to show up - ✅ **Track assignments**: Volunteers see "their" shifts in portal - ✅ **Enable canvassing**: Volunteers can only start canvass sessions if they have a shift - ✅ **Measure progress**: See which shifts generated most visits ### Creating a Shift **To create a shift:** 1. Navigate to **Map > Shifts** 2. Click **"Create Shift"** 3. Fill in shift details (see below) 4. Click **"Create"** **Shift fields:** **Title** (required): - Descriptive name - Include date, time, and area - Example: "Saturday Morning Canvass - Ward 5" **Description** (optional): - Additional details for volunteers - Example: "Bring water, comfortable shoes. We'll provide clipboards and walk sheets." **Start Time** (required): - Date and time picker - When volunteers should arrive **End Time** (required): - Expected end time - Helps volunteers plan their day **Cut** (optional but recommended): - Select which cut to canvass - Volunteers assigned to this shift will see this cut in their portal - Shifts without cuts cannot be canvassed !!! warning "Cut Assignment Required for Canvassing" Volunteers can only start canvass sessions for shifts assigned to a cut. Always assign a cut unless the shift is for training or other non-canvassing purposes. **Max Signups** (optional): - Capacity limit (e.g., 10 volunteers) - Set to 0 for unlimited - Useful for managing group size **Meeting Location** (optional): - Address or description of meeting point - Example: "Community Centre, 123 Main St" or "Corner of Main & Oak" **Screenshot placeholder**: *Create Shift form showing date/time picker, cut dropdown, capacity field, and meeting location* ### Managing Shift Signups **To view shift signups:** 1. Navigate to **Map > Shifts** 2. Click **"Signups"** in Actions column for a shift The signups drawer shows: **Capacity gauge:** - Current signups / Max signups - Example: "8 / 10 signups (80% full)" **Signup list:** - Volunteer name - Email - Role (USER or TEMP) - Signup date - Actions: Remove signup, upgrade TEMP to USER **Signup sources:** 1. **Public signup form** (`/shifts` page): - Anyone can sign up - Creates TEMP user account automatically - Sends confirmation email 2. **Admin-added**: - You manually add volunteers - Select existing users or create new 3. **Volunteer portal**: - USER-role volunteers sign up themselves - See **My Shifts** page in their portal **Screenshot placeholder**: *Shift Signups drawer showing capacity gauge and signup list* ### Adding Volunteers to a Shift **To manually add a volunteer:** 1. Click **"Signups"** for the shift 2. Click **"Add Volunteer"** 3. Select existing user from dropdown (or click "Create New User") 4. Click **"Add"** **Upgrading TEMP users to USER:** After a TEMP user attends their first shift: 1. Open shift signups 2. Find the TEMP user 3. Click **"Upgrade to USER"** 4. Confirm This gives them full canvassing access for future shifts. ### Emailing Shift Volunteers **To email all volunteers in a shift:** 1. Click **"Signups"** for the shift 2. Click **"Email All"** 3. Compose email: - Subject - Body (HTML supported) - Variables: `{{NAME}}`, `{{SHIFT_TITLE}}`, `{{SHIFT_START}}`, `{{MEETING_LOCATION}}` 4. Click **"Send"** **Common email scenarios:** **Reminder (day before shift):** ``` Subject: Reminder: Tomorrow's Canvass - {{SHIFT_TITLE}} Hi {{NAME}}, This is a reminder about tomorrow's canvass: Shift: {{SHIFT_TITLE}} Time: {{SHIFT_START}} Meeting Point: {{MEETING_LOCATION}} Please arrive 10 minutes early. We'll provide walk sheets and materials. Looking forward to seeing you there! ``` **Cancellation (weather, etc.):** ``` Subject: CANCELLED: {{SHIFT_TITLE}} Hi {{NAME}}, Unfortunately, we need to cancel tomorrow's canvass due to severe weather. We'll reschedule and send you a new date soon. Thank you for your understanding. ``` **Follow-up (after shift):** ``` Subject: Thank you for canvassing! Hi {{NAME}}, Thank you for participating in {{SHIFT_TITLE}}! Your efforts made a real difference. Together, we knocked on [X] doors and spoke with [Y] residents. See you at the next shift! ``` **Screenshot placeholder**: *Email Shift Volunteers modal showing subject, body editor, and variable buttons* --- ## Generating Walk Sheets ### What is a Walk Sheet? A **walk sheet** is a printed list of addresses for door-to-door canvassing. It includes: - Cut name and statistics - QR code (volunteers scan to start canvass session) - List of addresses in walking order - Fields for volunteers to record outcomes ### Walk Sheet Settings **To configure walk sheet defaults:** 1. Navigate to **Map > Map Settings** 2. Scroll to **"Walk Sheet Configuration"** 3. Set: - **Header Text**: Organization name, campaign info - **Footer Text**: Contact info, instructions - **Include QR Code**: Toggle ON/OFF - **QR Code Size**: Small, medium, large - **Instructions**: How to use the walk sheet **Example header:** ``` Community Action Network Fall 2024 Canvass Contact: organizer@example.com | (555) 123-4567 ``` **Example footer:** ``` Record outcomes: NH (Not Home), R (Refused), SW (Spoke With), S1-S4 (Support Level) Return completed walk sheets to the office by end of week. ``` **Screenshot placeholder**: *Map Settings page showing walk sheet configuration section* ### Generating a Walk Sheet **To generate a walk sheet for a cut:** 1. Navigate to **Canvass > Walk Sheet** 2. Select cut from dropdown 3. Click **"Generate"** 4. Review PDF preview 5. Click **"Print"** or **"Download PDF"** **OR:** 1. Navigate to **Map > Locations** 2. Filter to specific cut 3. Click **"Walk Sheet"** button (top-right) **Walk sheet contents:** **Page 1:** - Header (from settings) - Cut name and statistics: - Total locations - Last visit summary - Completion percentage - QR code (links to `/volunteer/canvass/[cutId]`) - Instructions (from settings) - Cut map (small overview map) **Subsequent pages:** - Address table: - Street address - Unit count (if apartment building) - Last visit date (if previously canvassed) - Last outcome (if previously canvassed) - Blank fields for volunteers to fill: - Date visited - Outcome - Support level - Notes **Screenshot placeholder**: *Walk sheet PDF showing header, QR code, map, and address table* ### Walking Order Optimization Walk sheets sort addresses in **walking order** to minimize backtracking. **Algorithm:** 1. Start at center of cut 2. Find nearest unvisited address 3. Move to that address 4. Repeat until all addresses covered This creates an efficient route similar to the GPS route in the volunteer portal. ### Using Walk Sheets in the Field **Distribute to volunteers:** 1. Print one walk sheet per volunteer (or per pair, if canvassing in pairs) 2. Bring clipboards and pens 3. Brief volunteers on how to record outcomes **Volunteers record:** - Date visited - Outcome code (NH, R, SW, etc.) - Support level (S1-S4 if spoke with) - Notes (brief comments) **After the canvass:** 1. Collect completed walk sheets 2. Enter data into system (or scan QR code during canvass for automatic recording) --- ## Monitoring Canvass Progress ### Canvass Dashboard **To view overall canvass progress:** 1. Navigate to **Canvass > Dashboard** The dashboard shows: **Statistics cards:** - **Active sessions**: Volunteers currently canvassing - **Total visits today**: Doors knocked today - **Completed sessions**: Finished sessions today - **Average session duration**: Time spent canvassing **Activity feed:** - Real-time stream of visits - Shows: Volunteer name, address, outcome, timestamp - Updates every 30 seconds **Cut progress table:** - Progress by cut (% of locations visited) - Session count per cut - Visit count per cut - Click cut name to view details **Leaderboard:** - Top volunteers by visit count - Session count - Success rate (% SPOKE_WITH outcomes) **Screenshot placeholder**: *Canvass Dashboard showing stats cards, activity feed, cut progress table, and leaderboard* ### Cut-Level Progress **To view progress for a specific cut:** 1. Navigate to **Canvass > Dashboard** 2. Click cut name in cut progress table **Cut detail view shows:** - **Completion gauge**: % of locations visited - **Outcome breakdown**: Pie chart of outcomes (NOT_HOME, REFUSED, SPOKE_WITH, etc.) - **Support levels**: Count of LEVEL_1 through LEVEL_4 - **Visit history**: Recent visits in this cut - **Active sessions**: Volunteers currently canvassing this cut **Export cut data:** - Click **"Export CSV"** to download all visits for this cut - Use for analysis, reporting, follow-up planning ### Session Monitoring **To view active canvass sessions:** 1. Navigate to **Canvass > Dashboard** 2. Scroll to **"Active Sessions"** section **Each active session shows:** - Volunteer name - Cut being canvassed - Start time - Visit count - Last activity (how long since last visit) **Warning signs:** - ⚠️ No activity for > 30 minutes (volunteer may be stuck or abandoned session) - ⚠️ Very low visit rate (volunteer may need help) **Actions:** - Contact volunteer to check in - Manually end session if abandoned --- ## Data Analysis and Reporting ### Outcome Analysis **To understand canvassing results:** 1. Navigate to **Canvass > Dashboard** 2. View **Outcome Breakdown** chart **Outcome categories:** - **NOT_HOME**: Nobody answered (typical: 40-60% of visits) - **REFUSED**: Refused to talk (typical: 5-15%) - **SPOKE_WITH**: Had a conversation (typical: 20-40%) - **MOVED_AWAY**: Resident moved (typical: 2-5%) - **WRONG_ADDRESS**: Address doesn't exist (typical: 1-3%) - **DO_NOT_CONTACT**: Requested no contact (typical: < 1%) - **OTHER**: Other situation (typical: < 5%) **Interpreting outcomes:** **High NOT_HOME rate (> 60%):** - Canvassing at wrong time (try evenings or weekends) - Multi-unit buildings (hard to access) **High REFUSED rate (> 20%):** - Issue is unpopular or controversial - Volunteers may need better training on approach - Consider different messaging **Low SPOKE_WITH rate (< 20%):** - See above (related to NOT_HOME and REFUSED) - Canvassing at wrong time - Poor volunteer approach **High WRONG_ADDRESS (> 5%):** - Data quality issues - Need to clean location database ### Support Level Analysis **To understand voter sentiment:** 1. View **Support Levels** on Canvass Dashboard **Support level breakdown:** - **LEVEL_1** (Strong support): Target for GOTV (Get Out The Vote) - **LEVEL_2** (Leaning support): Persuasion targets - **LEVEL_3** (Undecided): Persuasion targets - **LEVEL_4** (Opposition): Deprioritize future contact **Targeting strategy:** **For GOTV:** - Focus on LEVEL_1 (strong support) - Ensure they vote (door knock day before election, offer rides) **For persuasion:** - Focus on LEVEL_2 and LEVEL_3 (undecided, leaning) - Provide information, answer questions, invite to events **For opposition:** - LEVEL_4: Don't waste time (respect their decision) ### Volunteer Performance **To evaluate volunteer effectiveness:** 1. View **Leaderboard** on Canvass Dashboard **Metrics:** - **Visit count**: Total doors knocked - **Session count**: Number of canvassing sessions - **Success rate**: % of visits that resulted in SPOKE_WITH outcome - **Average session duration**: Time spent canvassing **Identifying top performers:** - High visit count + high success rate = Star volunteer (recognize publicly, ask to mentor others) - High visit count + low success rate = May be rushing (provide feedback) - Low visit count + high success rate = Quality over quantity (consider assigning harder areas) **Coaching opportunities:** - Low success rate: Offer training on approach, scripting - Short sessions: Ask why (time constraints? Lack of confidence?) - High REFUSED rate: Review volunteer's approach (too pushy? Poor messaging?) --- ## Troubleshooting ### Geocoding Issues **Issue: Many locations ungeocoded after import** **Solutions:** 1. Review ungeocoded addresses (Data Quality > Export Ungeocoded) 2. Fix typos and re-import 3. Configure additional geocoding API keys (Mapbox, Google) 4. Manually place locations on map --- **Issue: Locations geocoded to wrong area** **Symptoms:** Locations appear far from where they should be **Solutions:** 1. Check confidence score (likely low confidence) 2. Edit location and manually place on map 3. Re-geocode with better provider (if API key available) --- ### Cut Issues **Issue: Locations not assigning to cut** **Symptoms:** Locations inside polygon not assigned after cut creation **Solutions:** 1. Verify polygon is properly closed (check vertices) 2. Check for very complex polygons (may hit algorithm limits) 3. Manually assign locations using bulk action --- **Issue: Overlapping cuts** **Symptoms:** Some locations assigned to wrong cut **Cause:** Multiple cuts cover the same area **Solution:** - Locations can only belong to one cut - Later cuts override earlier assignments - Redraw cuts to avoid overlap, OR - Accept overlap and use manual assignment for edge cases --- ### Shift Issues **Issue: Volunteer cannot start canvass session** **Symptoms:** "No active shift found" error **Solutions:** 1. Verify shift date is today 2. Verify volunteer is signed up for shift 3. Verify shift has a cut assigned (required for canvassing) 4. Verify volunteer role is USER (not TEMP) --- **Issue: Shift signups not appearing** **Symptoms:** Public signup form doesn't show shift **Solutions:** 1. Check shift start time (past shifts don't appear) 2. Check max signups (if full, shift is hidden) 3. Check feature toggle (Settings > Allow Public Shift Signup must be ON) --- ### Canvassing Issues **Issue: Walking route not updating** **Symptoms:** Route doesn't change after completing visits **Solutions:** 1. Route updates every 30 seconds (wait a moment) 2. Refresh volunteer's map (pull down) 3. Check internet connection (route calculation requires server) --- **Issue: Visit won't save** **Symptoms:** Volunteer reports "Save Visit" doesn't work **Solutions:** 1. Check internet connection (visits save to server) 2. Verify outcome is selected (required field) 3. Check for abandoned session (volunteer may need to start new session) --- ## Related Documentation - **[Admin Guide](admin-guide.md)**: Full administrator guide (includes map management) - **[Volunteer Guide](volunteer-guide.md)**: Guide for volunteers using canvassing portal - **[Map Module](../features/map.md)**: Technical documentation on locations, geocoding, cuts - **[Canvassing System](../features/canvassing.md)**: Technical documentation on canvass sessions and GPS tracking - **[API Reference](../api/map.md)**: Map API endpoints --- **Last updated**: February 2026 (V2 complete)