
By Township Canada
Township Canada Product Update - August 2026
Energy Bundle reports are faster, batch conversion handles 5,000 records without timing out, and two new developer APIs launched for agricultural and energy parcel data.
August's focus was reliability. A report card that took 41 minutes to load, batch jobs that timed out before finishing, and a background data pipeline that silently served stale numbers. All three are fixed. We also launched two new developer APIs for agricultural and energy parcel data.
What We Shipped
Energy Bundle
Drought vs. production card: 41 minutes to 5 seconds. The card was aggregating live across the full dataset on every request. The calculation now runs against a precomputed materialized view built from subdivided polygons that the GiST index can actually use, plus a single-flight cache with a 30-second query timeout. Cold load time dropped from roughly 41 minutes to about 5 seconds.
The ETL pipeline also now refreshes that view automatically when it reloads the source tables. Before this fix, loading fresh petroleum tenure or drought monitor data left the operator disposition and drought production reports serving numbers from the prior load without any visible error. The companion fix in the ETL pipeline closes that gap.
Crown tenure list paginated in SQL. The expiring-tenure list previously loaded all 60,700 rows into memory and sliced them in JavaScript. It now paginates in SQL: only the rows for the requested page are fetched, and geometry is computed only for those rows. The NaN area bug, where missing area values were carried through as NaN instead of NULL, is also fixed at the SQL boundary.
Batch Conversion
5,000-record batches no longer time out. Large CSV uploads were failing with 504 gateway errors because the converter made one database round trip per record. A 5,000-record job accumulated about 66 seconds of pure database latency before any enrichment ran, and the function timed out. The rewrite deduplicates records, splits them into chunks of 500, and runs around 10 round trips total. Full batches now complete in seconds. Both the web app at /app/batch and the /api/batch/* endpoints benefit from this change.
Developer Tools
Ag API and Energy API launched. Two new developer APIs give programmatic access to the parcel-report data available in the web app bundles.
The Ag API returns LSRS soil productivity score, AAFC five-year crop rotation history, soil classification, and CLI capability for any western Canadian quarter section. The Energy API returns AER well status, Crown PNG tenure, pipeline crossings, and Petrinex production history for any LSD. Both are documented and accessible at developer.townshipcanada.com.
Pricing is the same for each: Build at $50/month for 500 requests, Scale at $250/month for 5,000, and Enterprise at $1,250/month for 50,000.
API multi-key support. Developer Portal accounts can now hold more than one API key on the same product and tier. If you run separate development, staging, and production environments, you can issue a key for each without sharing credentials between environments. A confirmation dialog in the Developer Portal walks you through adding a second key.
Learning
SDK walkthrough for Node.js. A new tutorial covers @townshipcanada/sdk from install through to typed error handling: authentication, single LLD lookup, batch conversion with auto-chunking, and parcel boundary retrieval. Available at /blog/townshipcanada-sdk-typescript-npm-package.
Harvest crop insurance claims guide. How AFSC and SCIC adjusters batch-convert legal land descriptions from crop loss declarations, verify storm path coverage on satellite imagery overlaid on the DLS grid, and build optimized inspection routes before leaving the office. Published at /learn/how-to/harvest-crop-insurance-legal-land-descriptions and in season through October.
BC NTS parcel lookup. A guide for BC land surveyors and environmental consultants explaining how to retrieve every registered ParcelMap BC parcel within an NTS grid cell without switching to the LTSA Viewer. Available at /bc-nts-converter.
Platform Updates
Removed a dead API endpoint. The /api/parcels/nts endpoint was announced in the April 2026 product update and has since been removed. It could never return a result: two separate implementation issues prevented any match, and the fallback path scanned 85.8 million rows for 71 seconds before returning a "not found" response. Any request to that endpoint now returns a 404. The April 2026 blog post has been updated to reflect this.
Dropped 126 MB of redundant database indexes. Five lookup tables each carried a duplicate default-opclass btree index alongside the text_pattern_ops index that answers both equality and prefix queries. The duplicates added 126 MB to the working set competing for space in the database buffer pool without providing anything the remaining index could not. They have been removed.
Questions or feedback: hello@townshipcanada.com.