What is measured, what is estimated, and how to interpret the outputs responsibly. This is the stable, citable companion to every analysis receipt.
63,149
blind backtests
walk-forward holdout, zero leakage · every miss published
86%
permit timeline coverage
P10–P90, n=10,620
85%
council outcome accuracy
directional, n=161
A – D
confidence grades
honest signal strength, not hype
Read this first
Evidence strength describes source coverage, comparable count, zoning clarity, and GIS coverage — not audited prediction accuracy.
Measured outputs come from direct city history where coverage exists. Estimated outputs rely on comparables, heuristics, or thinner local datasets.
Coverage is deepest where the city's own history is richest. Victoria's permitting record and council-decision history anchor the current outputs.
P10 / P50 / P80 Percentile Timeline Modeling
Empirical approval durations from completed applications
Timeline estimates are derived from the empirical distribution of completed approval durations where source coverage exists, then supplemented with explicit estimates where evidence is thin. P10 is the optimistic outcome (10% resolve faster). P50 is the expected median. P80 is the conservative bound (20% take longer). Measured vs. estimated is disclosed in every evidence note.
Data source
10,743 Victoria building permits · 1,370 development permits · 323 council decisions
Use it for
Measured where historical coverage exists; otherwise explicitly flagged as estimated.
Weighted Comparable Application Scoring
Multi-factor similarity matching against 300 resolved Victoria applications
Each parcel query is matched against resolved applications using a five-factor weighted similarity score: city match (30%), FSR proximity (25%), policy tag overlap (20%), risk hit overlap (15%), and OCP alignment match (10%). Top comparable applications are surfaced with their outcomes, conditions of approval, and timelines.
Data source
300 indexed Victoria applications · Resolved and validated
Use it for
Every weight and source is disclosed. Nothing is a black box.
Frequency-Based Stall Pattern Analysis
Risk patterns measured from council application records
Stall risks are derived from council minutes and application records to identify patterns that caused delays. Each pattern carries a frequency percentage, an average delay in months, and a severity classification. Patterns are measured directly from Victoria's council record — neighbour-referral and council-deferral patterns are tracked distinctly, each with its own measured delay.
Data source
1,370 Victoria council application blocks from 294 council minutes (2020–2026)
Use it for
Victoria stall frequencies are measured directly from the council record.
OCP Alignment Scoring
Live query of the Official Community Plan planning layer
OCP designation is queried live from the city's planning GIS layer at parcel selection. Misalignment between proposed use and OCP designation triggers an amendment requirement, adding one additional bylaw reading cycle — typically 6–12 months in Victoria.
Data source
Victoria Planning & Development MapServer Layer 18 · Real-time point-in-polygon query
Use it for
Victoria OCP alignment is live data.
Environmental & Social Overlay Integration
Validated City + DataBC overlays, queried per parcel in parallel
At each parcel click, the validated environmental, planning and social overlays are queried in parallel. Hits adjust the confidence score, trigger specific permit requirements (Phase 1 ESA where a contaminated site is within 100m, Heritage Impact Assessment, a Tenant Assistance Plan in a Tenant Protection DPA), and add steps to the approval path. Archaeological potential is not auto-flagged — confirm with the BC Archaeology Branch.
Data source
City of Victoria OpenData Environment & Planning/Development MapServers + BC DataBC WFS · Heritage · Development Permit Area (incl. Tenant Protection) · Sensitive ecosystem / coastal · Watercourse / riparian · Contaminated / remediation (≤100m) · Seismic hazard
Use it for
Victoria environmental & social overlay data is live (validated City + DataBC layers, point-queried per parcel).
Historical Decision Evidence Base
Approval rates, conditions, and deferral patterns by city and verdict
For each city and verdict type, Shovelready surfaces the historical approval rate, top conditions of approval with frequency percentages, and data caveats. These rates calibrate the confidence score but are not treated as universal accuracy metrics.
Data source
Victoria: 83.0% approval · 323 council outcomes (2020–2026)
Use it for
Historical outcome rates are disclosed with city-specific caveats.
Parcel Geometry & Lot Fabric
Authoritative lot boundaries and area from the provincial parcel fabric
Lot geometry, parcel identifier (PID) and measured lot area come from ParcelMap BC — the Land Title & Survey Authority's authoritative parcel fabric for the province — resolved by point-in-polygon at parcel selection, not inferred from the map render. Where a parcel does not resolve to a fabric polygon, area falls back to a labelled regional default (never presented as measured).
Data source
ParcelMap BC parcel fabric (LTSA) · BC DataBC geocoder for civic addressing. Contains information licensed under the Open Government Licence – British Columbia.
Use it for
Lot geometry is the authoritative provincial fabric, credited under the Open Government Licence – BC; unresolved parcels use a labelled default, never a measured claim.
Monte Carlo Carry Cost Simulation
A distribution of carry cost, not a single point estimate
Rather than one P50 carry figure, the Decision Intelligence tab runs 10,000 timeline scenarios against your daily carry rate to produce a full distribution. Because timelines are right-skewed, expected carry runs above the median — that gap is surfaced as the overrun an investor underwrites, alongside a 1-in-10 downside (P90) and tail-probability statements.
Data source
Timeline percentiles from the survival-informed model × user-supplied daily carry rate · lognormal fit, seeded for reproducibility
Use it for
Carry is reported as a distribution with an expected value and tail risk, never a single point estimate that hides skew.
63,149 blind, walk-forward predictions across 3 cities (walk-forward temporal holdout; KM survival + reference classes; no leakage). Each track below is scored against a naïve baseline. Tracks that do not beat their baseline are published as misses — we never quietly drop them.
Permit timeline range
n = 10,620Victoria building + development permits
P10–P90 interval coverage; median P50 error 67d vs 123d city-average baseline.
Council approval outcome
n = 161Victoria council decisions
Brier 0.1292 vs 0.25 coin-flip; 85.1% directional.
Rezoning timeline (P50 point)
n = 87Victoria rezoning applications
Interval coverage is calibrated, but the P50 point estimate (421d error) does not beat the 233d city-median baseline. Disclosed honestly; fix is minutes-engine features + more cities.
Rezoning timeline range (council clock)
n = 650Surrey rezoning — first council meeting to adoption
P10–P90 interval coverage 90.3%; median P50 error 42d vs 151d all-history baseline (recency-adaptive trailing reference class). Council clock (meeting→adoption), not received→decision. Approval discrimination withheld — Surrey refuses <1% of applications, so outcome accuracy is not testable yet.
Permit timeline range
n = 50,792Vancouver permits — application created to issued
n=50,792 blind walk-forward. Median P50 error 56d vs 68d city-average baseline (−18%). P10–P90 interval coverage runs tighter at 78.3% — ranges disclosed honestly, not rounded up to the ~90% other tracks hit.
Council approval outcome
n = 460Vancouver decisions — tested against real refusals/withdrawals
Unlike near-unanimous cities, Vancouver has 134 refused/withdrawn out of 490 decided (73% base rate), so this is a genuinely discriminative test. The naive beta-binomial scores Brier 0.201 vs 0.200 base-rate — it does not yet add lift. Disclosed as a miss; fix is feature-based scoring (FSR, zone change, staff rec).
Rezoning timeline range (received→decision)
n = 379Vancouver rezoning applications
n=379 blind. Median P50 error 115d vs 112d city-median baseline — essentially tied, does not beat it. Interval coverage 78.1%. Disclosed honestly.
Snapshot 2026-06-16. Regenerated from the city backtest scripts via npm run calibration:build; this page renders the committed record directly.
Strong measured footing
3+ comparable applications, OCP-aligned, full GIS coverage, measured durations.
Solid with minor estimates
2+ comparables, minor gaps filled with city-wide estimates.
Directional guidance
Thin comparables or estimated durations. Treat as directional, not precise.
Insufficient evidence
Single comparable or heavy estimation. Use only as a starting hypothesis.
Probability outputs are capped at 95% regardless of evidence strength. Council outcomes contain irreducible political variance no model can eliminate.
Survival Analysis (Kaplan-Meier / Cox Proportional Hazards)
Replaces P-percentile point estimates with full survival curves. Instead of 'P50 = 209 days', the model shows: at 12 months, 68% of comparable applications are still active.
Bayesian Stage-Updating Confidence
As a project progresses through approval stages, the confidence score updates dynamically — filing → staff report → referral → public hearing each shift the probability distribution.
NLP on Council Minutes
The 294 Victoria council minutes contain semantic objection themes, condition language patterns, and councillor voting patterns beyond frequency counts.
Decision support from historical precedent — not legal advice or a guarantee of council outcomes. Accuracy is published quarterly and linked from every analysis receipt.
← Open Shovelready