Docs index
Feature Reference

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)

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:

CardData sourceTier gate
Legal descriptionParsed lld → GPS, area, township/range/meridianFree (always shown)
Ownership snippetISC Map Search (SK only at v1); provincial registry links elsewhereFree (limited at v1)
LSRS soil scoreLSRS Productivity ScoreFree score; full polygon at Farmer+
5-yr AAFC crop historyAAFC Crop InventoryFree summary
Land Values (regional)FCC regional aggregates (pending research; see #161)Free regional; detailed at Investor
HazardsWetlands, treaty / Indigenous consultation overlay, Crown dispositionsFree flag; full data at Energy/Ag Bundle
Adjacent parcelsSpatial query against neighbouring quarter sectionsFree

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 section
  • townshipcanada.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 Place schema 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 (UCard from 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_views keyed 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
  • 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]/report endpoint
  • 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."