InstaBids - method for the Cleveland, OH declared permit value figures Prepared for https://instabids.ai/us/cost/methods/cleveland-odbl-method.txt cost-places-collect v2, batch 4, 2026-10-23 Contains information from Issued Building Permits (City of Cleveland, Building & Housing), https://data.clevelandohio.gov/datasets/c08ddeaf2d1e41679a03103ff4e9fe17, which is made available here under the Open Database License (ODbL), https://opendatacommons.org/licenses/odbl/1-0/. These separate extracts and derived figures are offered under ODbL. Only JOB_VALUE, WORK_DESCRIPTION, ISSUE_DATE and PERMIT_CATEGORY are requested, always with returnGeometry=false. The server filters issue dates from 2023-01-01 inclusive to 2027-01-01 exclusive and USE_GROUP_1 in ('One Family','Two Family') or PERMIT_CATEGORY beginning 'Residential'. No name, owner, contractor, address, parcel, permit-number, link or coordinate column is requested. Descriptions are used only in memory and discarded immediately after classification. Exact duplicate selected rows, including the full issue date, are removed before classification; input CSV triples are never deduplicated. Residential rule: the structured use group or permit category above must identify residential work. The ambiguous PERMIT_CATEGORY New is conservatively excluded for existing-home jobs. Plumbing rows without residential evidence are excluded. CHI_VETO also rejects commercial, institutional, multi-unit and mixed-use text. Water-heater permits listing other fixtures (toilet, sink, lavatory, sump pump, PRV) are excluded as combined work. New dwellings, ADUs, administrative/revision/renewal work, demolition-only work and combined jobs are excluded. Job rules (batch4_rule, scripts/cost-places-collect.py): - Roof replacement: re-roof or explicit roof/shingle removal or replacement; exclude roof decks, additions, structural/truss/rafter work, repairs, gutters, fascia, soffits, skylights, solar and remodels. - Solar panels: solar, photovoltaic or PV; exclude batteries/storage, thermal/hot-water/pool systems, reinstall/removal, repair, roof replacement, service upgrades, EV chargers and combined jobs. - Window replacement: window plus replace/change-out/retrofit; exclude doors, skylights, new openings, egress, basement, enlargement, framing, repairs and other work under the v2 window rule. - Water heater replacement: water heater or hot-water tank; exclude other fixtures, plumbing systems, vents, furnace/boiler work, wiring-only work, repairs and other trades. - In-ground pool: pool plus in-ground/gunite/fiberglass; exclude above-ground, repairs, renovation, spa/hot tub, decks/patios, fences, heaters, covers, demolition and wiring/plumbing-only permits. Value and bars: JOB_VALUE is the declared value. Values below 100 count as unvalued. At least 50% of matched rows must be valued. The low-value floor is half the national hired-out 25th percentile for the same job in the American Housing Survey 2023, or a fixed 500 for solar. Hold the cell if the floor removes over 25% of valued rows, or fewer than 20 valued permits remain. Figures: linear interpolation of sorted kept values: k=(n-1)*q, lo=floor(k), hi=min(lo+1,n-1), v=v[lo]+(v[hi]-v[lo])*(k-lo), rounded to the dollar (ties to even). q=0.25, 0.5 and 0.75; the median is q=0.5 and the middle half is the 25th to the 75th percentile. These are declared permit values, not invoices. Every record carries the sample size, years, retrieval date and named source. Each cell has its own ODbL inputs at data/cost/facts/inputs/places-cleveland-.csv, never merged with another source. Header: declared_value,issued_month,matched_token. These are all matched rows, including unvalued/below-floor rows so fill, guard, n and percentiles can be recomputed. Only fixed job tokens are stored; no free text is retained. data/cost/places/sources.json can switch the source off.