One-Click Parcel Report (API + UI)
Status: Planned Issue: #157Bundle: Ag Bundle (Lite gets 5 reports/mo + free-tier indexable pages; Farmer/Investor get unlimited + PDF export)
Goal
A single shareable URL — townshipcanada.com/parcel/SE-14-29-21-W2 — that renders a server-side parcel report for any DLS quarter section. Doubles as the SEO acquisition wedge (the AcreValue-for-Canada strategy in the PRD) and the freemium hook that drives Ag Bundle conversions.
Report sections
Each report card pulls from an existing or planned data layer:
| Card | Data source | Tier gate |
|---|---|---|
| Legal description | Parsed lld → GPS, area, township/range/meridian | Free (always shown) |
| Ownership snippet | ISC Map Search (SK only at v1); provincial registry links elsewhere | Free (limited at v1) |
| LSRS soil score | LSRS Productivity Score | Free score; full polygon at Farmer+ |
| 5-yr AAFC crop history | AAFC Crop Inventory | Free summary |
| Land Values (regional) | FCC regional aggregates (pending research; see #161) | Free regional; detailed at Investor |
| Hazards | Wetlands, treaty / Indigenous consultation overlay, Crown dispositions | Free flag; full data at Energy/Ag Bundle |
| Adjacent parcels | Spatial query against neighbouring quarter sections | Free |
Tier gating model: every report has a free version. Free cards either hide a paid-tier detail behind a blurred preview + upgrade CTA, or simply omit the detailed section entirely. Paid-tier (Farmer+ / Investor) reports show all sections in full.
URL structure
townshipcanada.com/parcel/SE-14-29-21-W2— DLS quarter sectiontownshipcanada.com/parcel/093P08— NTS reference- Slug formats:
<quarter>-<section>-<township>-<range>-<meridian>for DLS;<sheet>for NTS
Slugs are normalized server-side (case-insensitive, dash/space tolerant). Canonical URL set via meta tags so search engines index a single version.
SEO and indexing
- Server-rendered HTML (no CSR for the public report view)
- Open Graph meta tags for LinkedIn / Twitter / Facebook previews — image is a static map render of the parcel
- JSON-LD
Placeschema with coordinates and area - Sitemap entries generated for the 100K+ Prairie quarter sections in phases (see #164)
- Phase 1 sitemap targets 10K parcels (representative sample across provinces); phase 2 extends to 60K; phase 3 to 120K
API surface
GET /api/v1/parcels/[lld]/report
→ {
parcel: { lld, lat, lng, acres, township, meridian, range, section, lsd },
soil: { lsrs_score: 67, lsrs_class: "Good" },
crops: [
{ year: 2025, dominant: "Canola" }, ...
],
hazards: { wetland_pct: 4.2, treaty_overlap: false, crown_disposition: null },
ownership: { source: "isc-map-search-sk", available: true },
land_values: { region: "RM 161 — Moose Jaw", fcc_avg_per_acre: 2300, year: 2025 }
}
The endpoint is rate-limited at the free tier (5 reports / month / IP, tracked by user ID when authenticated). Reports are cacheable — same parcel hit by multiple visitors regenerates from cache for 24 hours.
UI
A new route at app/pages/parcel/[lld].vue that fetches the report endpoint server-side, renders the cards, and includes:
- A map at the top with the parcel highlighted
- Cards laid out following the design system (
UCardfrom Nuxt UI) - A sticky CTA bar: "Get the full report — Ag Bundle starts at $X" or "Open in app" for signed-in users
- Save-to-portfolio button (uses the Land Portfolio Manager API)
Free-tier mechanics
- 5 reports per calendar month per visitor (tracked via
app.parcel_report_viewskeyed by user_id + IP) - 6th+ view shows a soft paywall with the first 3 cards visible and the rest blurred
- "Index pages" — pre-rendered static reports that show the free-tier view without consuming the visitor's quota — these are the SEO acquisition surface
Paid-tier mechanics
- Unlimited reports
- PDF export (Farmer+ only)
- "Save to portfolio" enabled
- All cards in full
- No watermark
PDF export uses the same Resend-rendered PDF infrastructure as existing exports.
Acceptance criteria progress
-
GET /api/v1/parcels/[lld]/reportendpoint - Slug normalizer / parser shared with the existing batch converter parser
- Vue page at
/parcel/[lld]with cards - OG meta + JSON-LD
- Server-side rendering enabled for parcel pages
- Free-tier quota tracking (5/mo per visitor)
- Soft paywall UI for over-quota visitors
- Static map rendering for OG image
- PDF export endpoint for Farmer+ subscribers
- Sitemap generator coordination with #164
Open questions tracked from the PRD
- OQ-2 — Ownership data: ISC Map Search redistribution rights still pending. AB and BC link out to provincial registries at v1 because their open-data ownership story is weaker.
- OQ-4 — Free-tier quota tuning: 5 reports/mo per visitor is the starting point. Track conversion to find the right cliff between "useful enough to share" and "wall hit fast enough to convert."
Related features
- Land Portfolio Manager — save-to-portfolio integration
- Territory & Prospecting — parcel report is the per-parcel drilldown from the prospecting tool
- AAFC Crop Inventory
- LSRS Productivity Score
- SEO sitemap generator (#164)