<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Remodel Project Help]]></title><description><![CDATA[Remodel Project Help]]></description><link>https://remodelprojecthelp.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Remodel Project Help</title><link>https://remodelprojecthelp.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 05:15:42 GMT</lastBuildDate><atom:link href="https://remodelprojecthelp.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How We Built and QA'd a 50-City Official-Source Permit Dataset]]></title><description><![CDATA[Local permit research looks simple until the first source moves, a city shares authority with a county, or one trade is handled by a different agency. We built the 2026 U.S. Bathroom Remodel Permit an]]></description><link>https://remodelprojecthelp.hashnode.dev/how-we-built-and-qa-d-a-50-city-official-source-permit-dataset</link><guid isPermaLink="true">https://remodelprojecthelp.hashnode.dev/how-we-built-and-qa-d-a-50-city-official-source-permit-dataset</guid><category><![CDATA[data-engineering]]></category><category><![CDATA[#Reproducibility]]></category><category><![CDATA[open data]]></category><category><![CDATA[data-quality]]></category><category><![CDATA[Web Research, ]]></category><dc:creator><![CDATA[Matthew B. Parson]]></dc:creator><pubDate>Mon, 27 Jul 2026 17:09:03 GMT</pubDate><content:encoded><![CDATA[<p>Local permit research looks simple until the first source moves, a city shares authority with a county, or one trade is handled by a different agency. We built the 2026 U.S. Bathroom Remodel Permit and Planning Index to make that complexity visible rather than compress it into a misleading yes-or-no answer.</p>
<p>The result is a versioned dataset covering a selected sample of 50 U.S. cities. Each row identifies official planning resources, the responsible building department, separate plumbing and electrical resources, contractor-verification sources, jurisdiction notes, and the date of review.</p>
<p>The public research page is available at:</p>
<p><a href="https://www.remodelprojecthelp.com/bathroom-remodeling/us-bathroom-remodel-permit-planning-index/">https://www.remodelprojecthelp.com/bathroom-remodeling/us-bathroom-remodel-permit-planning-index/</a></p>
<p>The archived version 1.0 record is:</p>
<p><a href="https://doi.org/10.5281/zenodo.21501730">https://doi.org/10.5281/zenodo.21501730</a></p>
<h2>Start with a schema that preserves uncertainty</h2>
<p>The core schema has 14 fields:</p>
<table>
<thead>
<tr>
<th>Field group</th>
<th>Purpose</th>
</tr>
</thead>
<tbody><tr>
<td><code>city</code>, <code>state</code></td>
<td>Human-readable location identifier</td>
</tr>
<tr>
<td><code>responsible_building_department</code></td>
<td>Agency identified during review</td>
</tr>
<tr>
<td><code>official_bathroom_remodel_resource</code></td>
<td>Bathroom-focused official guidance when located</td>
</tr>
<tr>
<td><code>residential_permit_resource</code></td>
<td>Broader residential alteration or permit guidance</td>
</tr>
<tr>
<td><code>plumbing_permit_resource</code></td>
<td>Official plumbing pathway or agency</td>
</tr>
<tr>
<td><code>electrical_permit_resource</code></td>
<td>Official electrical pathway or agency</td>
</tr>
<tr>
<td><code>contractor_license_verification_source</code></td>
<td>Official registration or licensing lookup</td>
</tr>
<tr>
<td><code>city_county_jurisdiction_note</code></td>
<td>Address-level jurisdiction caveat</td>
</tr>
<tr>
<td><code>published_fee_resource_url</code></td>
<td>Current official fee source when located</td>
</tr>
<tr>
<td><code>date_reviewed</code></td>
<td>Source-review date</td>
</tr>
<tr>
<td><code>source_url</code></td>
<td>Primary official source used for the row</td>
</tr>
<tr>
<td><code>explanatory_notes</code></td>
<td>Concise summary of what was and was not confirmed</td>
</tr>
<tr>
<td><code>verification_status</code></td>
<td>Controlled review-status value</td>
</tr>
</tbody></table>
<p>Two design decisions matter here.</p>
<p>First, "not located" is different from "does not exist." A public page may be difficult to discover, temporarily unavailable, or published under an unexpected department. The dataset records what the review located without turning absence of evidence into a universal claim.</p>
<p>Second, the schema does not include a field that decides whether a particular bathroom project requires a permit. That determination can depend on project scope, address, building type, structural work, plumbing, electrical work, and the agency with jurisdiction.</p>
<h2>Prefer first-party public sources</h2>
<p>The source-selection order was deliberately narrow:</p>
<ol>
<li>Responsible city, county, regional, or state agency page.</li>
<li>Official application, permit, inspection, or fee page linked by that agency.</li>
<li>Official contractor licensing or registration lookup.</li>
<li>Official portal when the agency did not expose a stable topic page.</li>
</ol>
<p>We did not use search-result snippets as evidence. Search helped discover candidate pages, but a row was retained only after the destination was opened and reviewed on the responsible agency's domain or official service.</p>
<p>This distinction is important because snippets can outlive the underlying page, combine text from unrelated sections, or hide a changed redirect target.</p>
<h2>Validate URLs as data, not decoration</h2>
<p>Every URL field was treated as a testable value. The QA workflow checked:</p>
<ul>
<li>scheme and hostname;</li>
<li>response status and redirect destination;</li>
<li>whether the final page remained on an expected official domain;</li>
<li>whether the page described the intended permit, trade, fee, or licensing topic;</li>
<li>whether a moved or retired deep link needed replacement;</li>
<li>whether duplicate fields intentionally pointed to the same official page.</li>
</ul>
<p>An HTTP 200 response was necessary but not sufficient. A generic agency homepage can return 200 while no longer supporting the field's meaning. Manual review remained part of URL validation.</p>
<h2>Detect duplicates at several levels</h2>
<p>Duplicate detection covered more than identical CSV rows.</p>
<p>At the row level, we checked the normalized <code>city + state</code> key to prevent the same location from appearing twice.</p>
<p>At the URL level, we counted reused destinations. Reuse is not automatically an error: one official permit hub may legitimately cover residential, plumbing, and electrical applications. Reuse becomes a review signal when a supposedly topic-specific field points to an unrelated or overly broad page.</p>
<p>At the content level, we compared responsible-agency names, jurisdiction notes, and explanatory notes. This catches copy-forward errors where a neighboring city's department or county caveat survives in the wrong row.</p>
<h2>Keep manual review in the loop</h2>
<p>Automated checks can confirm format, availability, and consistency. They cannot reliably interpret every local jurisdiction.</p>
<p>The review therefore included questions such as:</p>
<ul>
<li>Does the city issue permits, or does a county or regional agency serve it?</li>
<li>Is plumbing handled by the same department as building review?</li>
<li>Is electrical permitting delegated to a state agency?</li>
<li>Does a consolidated city-county system have excluded municipalities?</li>
<li>Does a source describe bathroom work specifically, broader remodeling, or only a portal?</li>
<li>Is a fee page current enough to cite without implying a project price?</li>
</ul>
<p>Those answers were captured in <code>city_county_jurisdiction_note</code>, <code>explanatory_notes</code>, and <code>verification_status</code> rather than flattened into a single permit-required flag.</p>
<h2>Use controlled status values</h2>
<p>Version 1.0 preserves seven source-status values:</p>
<ul>
<li><code>verified_official_bathroom_specific</code></li>
<li><code>verified_official_bathroom_relevant</code></li>
<li><code>verified_official_remodel_specific</code></li>
<li><code>verified_official_general_remodel</code></li>
<li><code>verified_official_split_jurisdiction</code></li>
<li><code>verified_official_county_jurisdiction</code></li>
<li><code>verified_official_portal_only</code></li>
</ul>
<p>These values describe the source path confirmed during the review. They do not grade a city, predict approval, or determine a homeowner's requirements.</p>
<p>For charts, related statuses can be grouped into clearly labeled analytical categories. The raw status must remain available so a reader can reproduce or challenge that grouping.</p>
<h2>Validate the CSV before release</h2>
<p>The final CSV checks included:</p>
<ul>
<li>exactly 50 data rows;</li>
<li>50 unique normalized <code>city + state</code> keys;</li>
<li>no blank required fields;</li>
<li>parseable UTF-8 text;</li>
<li>consistent column count;</li>
<li>ISO-formatted review dates;</li>
<li>controlled verification-status values;</li>
<li>no embedded private data;</li>
<li>no service-area ZIP inventory;</li>
<li>stable SHA-256 checksum for the release file.</li>
</ul>
<p>The public release is intentionally small enough to inspect manually. That is a feature, not a limitation of the QA process.</p>
<h2>Version the research and archive the release</h2>
<p>The website presents the research in a format that is useful to homeowners. The archived Zenodo record preserves the release files and DOI.</p>
<p>Version 1.0 includes the CSV, README, methodology, sources, changelog, and citation files. A DOI gives the research a stable citation target even if the presentation layer changes later.</p>
<p>Version control also supports corrections. A correction should identify:</p>
<ol>
<li>the affected city and field;</li>
<li>the old and replacement source;</li>
<li>the reason for the change;</li>
<li>the verification date;</li>
<li>whether the change alters a derived chart or written finding.</li>
</ol>
<p>The existing record should remain citable, while a later version can document the correction.</p>
<h2>Build accessible charts from derived tables</h2>
<p>Charts should not be the only way to understand the data. Each visualization should have:</p>
<ul>
<li>a descriptive title;</li>
<li>clear category labels;</li>
<li>readable values;</li>
<li>a text explanation of the main pattern;</li>
<li>a tabular or list equivalent when practical;</li>
<li>no color-only distinction.</li>
</ul>
<p>Our public explorer uses filters for city, state, and verification status. Its charts summarize cities by state, guidance specificity, jurisdiction model, and raw verification status. Editorial groupings are documented separately from source fields.</p>
<h2>Publish limitations beside the findings</h2>
<p>The dataset covers a selected 50-city sample and is not nationally representative. Sources were reviewed on July 22, 2026, but agency pages and requirements can change. A city-level row may not identify the agency responsible for every address in a surrounding metro area.</p>
<p>Most importantly, the dataset is a planning directory. It does not determine whether a particular project requires a permit. Users must confirm current requirements with the responsible agency for the project address and scope.</p>
<h2>The practical lesson</h2>
<p>The hardest part of local permit research is not collecting links. It is preserving context:</p>
<ul>
<li>who is responsible;</li>
<li>which trade follows which pathway;</li>
<li>what the source actually says;</li>
<li>when it was reviewed;</li>
<li>what remains uncertain.</li>
</ul>
<p>A useful public dataset makes those boundaries visible. Reproducibility comes from the combination of structured fields, controlled statuses, URL checks, manual interpretation, versioned files, and an explicit correction workflow.</p>
<p>Publisher: Remodel Project Help</p>
<p>Canonical research resource:
<a href="https://www.remodelprojecthelp.com/bathroom-remodeling/us-bathroom-remodel-permit-planning-index/">https://www.remodelprojecthelp.com/bathroom-remodeling/us-bathroom-remodel-permit-planning-index/</a></p>
<p>Archived dataset:
<a href="https://doi.org/10.5281/zenodo.21501730">https://doi.org/10.5281/zenodo.21501730</a></p>
]]></content:encoded></item></channel></rss>