← back to NationalPaperHangers
Reposition NPH as referral/lead-coordination service (CSLB §7026 hygiene)
31cdca8e15ba1d18c183aeab9c8e2127964453b2 · 2026-05-06 15:58:00 -0700 · SteveStudio2
Steve's call after the 25% fee bump — cleaning up CA contractor-licensing
exposure surface area. Five micro-edits across 8 files:
1. Strip 'Concierge matching' and 'project oversight' everywhere they
appeared (home.ejs hero+JSONLD, head.ejs default meta, footer.ejs tag,
routes/public.js home metaDescription). Replaced with 'directory',
'lead routing', and 'search and schedule consultations directly with
installation studios' phrasing.
2. footer-fineprint now carries the substantive disclaimer:
'NPH is a referral and lead-coordination service. The contract for any
wallcovering installation is between the consumer and the installer
directly. NPH does not warrant, supervise, or guarantee installation
work.' Plus CSLB verification link.
3. /terms (legal.ejs terms branch): replaced placeholder with 9-section
substantive ToS positioning NPH as referral service. Sections explicit
about what NPH does NOT do (perform install work, set price, supervise,
warrant, employ). CSLB verification call-out for CA $500+ contracts.
Liability cap at 12mo of fees paid.
4. /privacy (legal.ejs privacy branch): replaced placeholder with full
policy. CCPA/GDPR rights, retention windows (active+90d, bookings 7yr,
suppression indefinite, logs 30d), Stripe/Purelymail/GA processor list.
5. installer.ejs reserve-banner + book.ejs deposit fieldset: added
'installation contract is between you and {studio} directly' + CSLB
link near every Book CTA.
Audit on prod (2026-05-06): 0 bad strings (Concierge matching / project
oversight / 10% marketplace fee) across 9 key surfaces; 1+ defensive
strings (referral disclaimer / CSLB link) on every public page.
This is hygiene, not legal advice — Steve still needs a CA construction-law
attorney consult before the marketplace scales materially.
Files touched
M routes/public.jsM views/partials/footer.ejsM views/partials/head.ejsM views/public/book.ejsM views/public/home.ejsM views/public/installer.ejsM views/public/legal.ejs
Diff
commit 31cdca8e15ba1d18c183aeab9c8e2127964453b2
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Wed May 6 15:58:00 2026 -0700
Reposition NPH as referral/lead-coordination service (CSLB §7026 hygiene)
Steve's call after the 25% fee bump — cleaning up CA contractor-licensing
exposure surface area. Five micro-edits across 8 files:
1. Strip 'Concierge matching' and 'project oversight' everywhere they
appeared (home.ejs hero+JSONLD, head.ejs default meta, footer.ejs tag,
routes/public.js home metaDescription). Replaced with 'directory',
'lead routing', and 'search and schedule consultations directly with
installation studios' phrasing.
2. footer-fineprint now carries the substantive disclaimer:
'NPH is a referral and lead-coordination service. The contract for any
wallcovering installation is between the consumer and the installer
directly. NPH does not warrant, supervise, or guarantee installation
work.' Plus CSLB verification link.
3. /terms (legal.ejs terms branch): replaced placeholder with 9-section
substantive ToS positioning NPH as referral service. Sections explicit
about what NPH does NOT do (perform install work, set price, supervise,
warrant, employ). CSLB verification call-out for CA $500+ contracts.
Liability cap at 12mo of fees paid.
4. /privacy (legal.ejs privacy branch): replaced placeholder with full
policy. CCPA/GDPR rights, retention windows (active+90d, bookings 7yr,
suppression indefinite, logs 30d), Stripe/Purelymail/GA processor list.
5. installer.ejs reserve-banner + book.ejs deposit fieldset: added
'installation contract is between you and {studio} directly' + CSLB
link near every Book CTA.
Audit on prod (2026-05-06): 0 bad strings (Concierge matching / project
oversight / 10% marketplace fee) across 9 key surfaces; 1+ defensive
strings (referral disclaimer / CSLB link) on every public page.
This is hygiene, not legal advice — Steve still needs a CA construction-law
attorney consult before the marketplace scales materially.
---
routes/public.js | 2 +-
views/partials/footer.ejs | 4 +--
views/partials/head.ejs | 2 +-
views/public/book.ejs | 5 +++-
views/public/home.ejs | 2 +-
views/public/installer.ejs | 3 +-
views/public/legal.ejs | 71 +++++++++++++++++++++++++++++++++++++++++++---
7 files changed, 78 insertions(+), 11 deletions(-)
diff --git a/routes/public.js b/routes/public.js
index 092def2..44e595e 100644
--- a/routes/public.js
+++ b/routes/public.js
@@ -22,7 +22,7 @@ router.get('/', async (req, res, next) => {
);
res.render('public/home', {
title: 'National Paper Hangers · Verified luxury wallcovering installers',
- metaDescription: `Find a verified luxury wallcovering installer for your project. ${stats.total_listings || ''}+ studios across ${stats.state_count || ''} states. Concierge matching, scheduling, and project oversight for hand-painted, silk, grasscloth, and mural installs.`,
+ metaDescription: `Directory of verified luxury wallcovering installers. ${stats.total_listings || ''}+ studios across ${stats.state_count || ''} states. Search and schedule consultations directly with installation studios specializing in hand-painted, silk, grasscloth, and mural wallcoverings.`,
canonicalPath: '/',
featured, stats
});
diff --git a/views/partials/footer.ejs b/views/partials/footer.ejs
index 80204f0..f1c65ab 100644
--- a/views/partials/footer.ejs
+++ b/views/partials/footer.ejs
@@ -2,7 +2,7 @@
<div class="footer-inner">
<div class="footer-col">
<div class="footer-brand">National Paper Hangers</div>
- <p class="footer-tag">Verified luxury wallcovering installers · scheduling · project oversight</p>
+ <p class="footer-tag">Directory of verified luxury wallcovering installers · scheduling · lead routing</p>
<p class="footer-contact">
<a href="mailto:info@nationalpaperhangers.com">info@nationalpaperhangers.com</a>
</p>
@@ -30,7 +30,7 @@
</div>
<div class="footer-fineprint">
<span>© <%= new Date().getFullYear() %> National Paper Hangers</span>
- <span>Verified installer credentials are reviewed and re-validated annually. Insurance and licensing self-reported by installers; clients should confirm directly before any contract.</span>
+ <span><strong>National Paper Hangers is a referral and lead-coordination service.</strong> The contract for any wallcovering installation is between the consumer and the installer directly. NPH does not warrant, supervise, or guarantee installation work. Verified installer credentials are reviewed and re-validated annually. Insurance and licensing self-reported by installers; <a href="https://search.cslb.ca.gov/" target="_blank" rel="noopener">verify CA contractor licenses at search.cslb.ca.gov</a> before signing any contract.</span>
</div>
</footer>
</body>
diff --git a/views/partials/head.ejs b/views/partials/head.ejs
index 4736ee6..382496c 100644
--- a/views/partials/head.ejs
+++ b/views/partials/head.ejs
@@ -9,7 +9,7 @@
<%
var _metaDesc = (typeof metaDescription !== 'undefined' && metaDescription)
? metaDescription
- : 'National Paper Hangers — verified luxury wallcovering installers across the United States. Concierge matching, scheduling, and project oversight for hand-painted, silk, grasscloth, and mural installations.';
+ : 'National Paper Hangers — directory of verified luxury wallcovering installers across the United States. Search and schedule consultations with installation studios specializing in hand-painted, silk, grasscloth, and mural wallcoverings.';
var _canonicalBase = (typeof publicUrl !== 'undefined' && publicUrl) ? publicUrl.replace(/\/+$/, '') : 'https://www.nationalpaperhangers.com';
var _canonicalPath = (typeof canonicalPath !== 'undefined' && canonicalPath) ? canonicalPath : (typeof path !== 'undefined' ? path : '/');
var _canonicalUrl = _canonicalBase + _canonicalPath;
diff --git a/views/public/book.ejs b/views/public/book.ejs
index 426b2b3..c0b2662 100644
--- a/views/public/book.ejs
+++ b/views/public/book.ejs
@@ -314,7 +314,10 @@
<p class="muted" style="margin:0 0 12px">
A <strong><%= _depositLabel %></strong> deposit secures the appointment and is fully credited toward your project.
Cancel up to 48 hours before the visit for a full refund.
- <span class="muted-2">National Paper Hangers handles payment and forwards the balance to <%= installer.business_name %> after the visit.</span>
+ <span class="muted-2">NPH operates as a referral and lead-coordination service — your installation contract is between you and <%= installer.business_name %> directly. NPH forwards the balance of the deposit to the studio after the visit.</span>
+ </p>
+ <p class="muted" style="margin:0 0 12px;font-size:12px;line-height:1.55">
+ <strong>Before signing any installation contract:</strong> verify CA contractor licenses at <a href="https://search.cslb.ca.gov/" target="_blank" rel="noopener">search.cslb.ca.gov</a>. NPH does not warrant or supervise installation work performed by independent studios in this directory.
</p>
<% if (_hasPubKey) { %>
<div id="deposit-card-element" data-stripe-card aria-label="Card details"></div>
diff --git a/views/public/home.ejs b/views/public/home.ejs
index f7ea569..c359f6f 100644
--- a/views/public/home.ejs
+++ b/views/public/home.ejs
@@ -102,7 +102,7 @@
name: 'National Paper Hangers',
url: _orgBase,
sameAs: [],
- description: 'Verified luxury wallcovering installers across the United States. Concierge matching, scheduling, and project oversight.'
+ description: 'A directory of verified luxury wallcovering installers across the United States. NPH operates as a referral and lead-coordination service; the installation contract is between the consumer and the installer.'
}) %></script>
<script type="application/ld+json"><%- JSON.stringify({
'@context':'https://schema.org','@type':'WebSite',
diff --git a/views/public/installer.ejs b/views/public/installer.ejs
index a0e3354..571e3ff 100644
--- a/views/public/installer.ejs
+++ b/views/public/installer.ejs
@@ -23,7 +23,8 @@
<div class="reserve-banner-inner">
<div class="reserve-copy">
<p class="reserve-kicker">Reserve a visit · <%= _depositLabel %> deposit</p>
- <p class="reserve-body">Pay through NPH — your share goes straight to <%= installer.business_name %>. NPH retains a <%= _feePct %>% lead-coordination fee.</p>
+ <p class="reserve-body">Pay through NPH — your share goes straight to <%= installer.business_name %>. NPH retains a <%= _feePct %>% lead-coordination fee. The installation contract is between you and <%= installer.business_name %> directly.</p>
+ <p class="reserve-fineprint" style="margin:6px 0 0;font-size:11px;color:var(--fg-muted);line-height:1.5">Verify CA contractor licenses at <a href="https://search.cslb.ca.gov/" target="_blank" rel="noopener">search.cslb.ca.gov</a> before signing.</p>
</div>
<a href="/installer/<%= installer.slug %>/book" class="btn btn-primary btn-lg reserve-cta">Book a consultation →</a>
</div>
diff --git a/views/public/legal.ejs b/views/public/legal.ejs
index d52b909..9bf923a 100644
--- a/views/public/legal.ejs
+++ b/views/public/legal.ejs
@@ -5,13 +5,76 @@
<% if (kind === 'privacy') { %>
<p class="kicker">Privacy</p>
<h1 class="display-sm">Privacy policy</h1>
- <p>This is a placeholder privacy policy. Before launch, replace with the final policy reviewed by counsel — it must cover personal data we collect from consumers booking installs, business data we hold on installers, retention windows, and California / EU/UK rights where applicable.</p>
- <p>Contact: <a href="mailto:info@nationalpaperhangers.com">info@nationalpaperhangers.com</a></p>
+ <p class="lede">National Paper Hangers (NPH) collects and processes a limited set of personal data needed to operate a referral and lead-coordination service. This policy describes what we collect, why, and your rights.</p>
+
+ <h2>What we collect</h2>
+ <ul>
+ <li><strong>Consumers requesting bookings:</strong> name, email, phone, project address, project details (rooms, materials, budget band).</li>
+ <li><strong>Installers (account holders):</strong> business identity, contact information, insurance and licensing details (where provided), payout banking information held by Stripe (we do not store full bank credentials), portfolio content uploaded by the studio.</li>
+ <li><strong>All visitors:</strong> standard server logs (IP address, user agent, request path, timestamp) for abuse prevention and uptime monitoring; a session cookie for CSRF protection and login state; Google Analytics for aggregate traffic measurement.</li>
+ </ul>
+
+ <h2>Why we collect it</h2>
+ <p>To match consumers to installers, schedule consultations, process the reservation deposit, route the balance to the installer, and send transactional and notification emails (e.g., a one-shot "they're now live" email to anyone who asked us to notify them when an unclaimed studio joins NPH). We do not sell or rent personal information.</p>
+
+ <h2>Sharing</h2>
+ <p>Booking details are forwarded only to the specific installer the consumer chose. Payment processing is handled by Stripe Inc. Email delivery is handled by Purelymail. Aggregate analytics are sent to Google. We do not share consumer or installer data with third parties for marketing or remarketing.</p>
+
+ <h2>Retention</h2>
+ <p>Account data is retained while the account is active and for 90 days after deletion. Booking records are retained for 7 years for tax and dispute purposes. Suppression-list entries (people who unsubscribed) are retained indefinitely so we never re-mail them. Server logs roll off at 30 days.</p>
+
+ <h2>Your rights</h2>
+ <p>California (CCPA/CPRA), EU/UK (GDPR), and other-jurisdiction residents may request access to, correction of, or deletion of personal data we hold about them. Email <a href="mailto:info@nationalpaperhangers.com">info@nationalpaperhangers.com</a> with the subject line "Privacy request" and we'll respond within 30 days. Unsubscribe links in every email work without contacting us.</p>
+
+ <h2>Contact</h2>
+ <p>Privacy questions: <a href="mailto:info@nationalpaperhangers.com">info@nationalpaperhangers.com</a> · National Paper Hangers · Designer Wallcoverings, 15442 Ventura Bl #102, Sherman Oaks CA 91335.</p>
+
+ <p class="muted" style="margin-top:24px;font-size:12px">Last updated <%= new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) %>.</p>
<% } else { %>
<p class="kicker">Terms</p>
<h1 class="display-sm">Terms of service</h1>
- <p>This is a placeholder terms-of-service page. Final terms — installer subscription terms, consumer booking terms, cancellation/refund policy, dispute resolution, and platform liability disclaimers — must be reviewed by counsel before launch.</p>
- <p>Contact: <a href="mailto:info@nationalpaperhangers.com">info@nationalpaperhangers.com</a></p>
+
+ <p class="lede"><strong>National Paper Hangers ("NPH") is a referral and lead-coordination service.</strong> NPH operates a directory of independent wallcovering installation studios. The contract for any wallcovering installation is between the consumer and the installer directly. NPH is not a contractor, does not perform installation work, and does not supervise, warrant, or guarantee any work performed by an installer.</p>
+
+ <h2>1. What NPH does</h2>
+ <ul>
+ <li>Operates a public directory of installation studios at nationalpaperhangers.com.</li>
+ <li>Routes consumer inquiries and bookings to the studio the consumer chooses.</li>
+ <li>Hosts the studio's calendar so consumers can self-book a consultation.</li>
+ <li>Collects an initial reservation deposit (<strong>$99</strong> by default, fully credited toward the consumer's project) and routes the deposit, less NPH's lead-coordination fee, to the installer's payout account via Stripe Connect.</li>
+ </ul>
+
+ <h2>2. What NPH does not do</h2>
+ <ul>
+ <li>NPH does <strong>not</strong> install wallpaper or perform any other contracting work.</li>
+ <li>NPH does <strong>not</strong> set the price for installation work; pricing is between the consumer and the installer.</li>
+ <li>NPH does <strong>not</strong> supervise, manage, or oversee installation jobs.</li>
+ <li>NPH does <strong>not</strong> warrant or guarantee work performed by an installer.</li>
+ <li>NPH does <strong>not</strong> employ installers; each installer is an independent business.</li>
+ </ul>
+
+ <h2>3. Verification disclaimer</h2>
+ <p>Installer credentials, insurance, and licensing details displayed on this site are self-reported by the installer. NPH reviews and re-validates these annually but does not independently audit them in real time. <strong>Consumers in California should verify a contractor's CSLB license number at <a href="https://search.cslb.ca.gov/" target="_blank" rel="noopener">search.cslb.ca.gov</a> before signing any contract for installation work over $500.</strong> Consumers in other jurisdictions should perform equivalent state-level license verification.</p>
+
+ <h2>4. Lead-coordination fee</h2>
+ <p>NPH retains a percentage of the reservation deposit (typically 25%, lower for enterprise-tier installers) as a lead-coordination fee. The remainder of the deposit is paid to the installer and credited toward the consumer's project. NPH's fee is exclusively for the lead, scheduling, and platform operation; NPH does not receive any portion of the consumer's payment for the installation work itself.</p>
+
+ <h2>5. Cancellation and refunds</h2>
+ <p>Consumers may cancel a booking up to 48 hours before the scheduled visit for a full refund of the reservation deposit. Cancellations within 48 hours are at the installer's discretion. Disputes between consumers and installers about installation work itself (scope, quality, completion) are between those parties; NPH is not a party and does not arbitrate.</p>
+
+ <h2>6. Installer subscription</h2>
+ <p>Installers subscribe to NPH on a Pro, Signature, or Enterprise plan. Subscription fees are billed monthly or annually via Stripe and may be canceled at any time from the installer's billing portal. Cancellation takes effect at the end of the current billing period.</p>
+
+ <h2>7. Limitation of liability</h2>
+ <p>NPH's aggregate liability for any claim arising from use of the service is limited to the fees the consumer or installer paid to NPH in the 12 months preceding the claim. NPH is not liable for any work performed or not performed by an installer, for any damage to a consumer's property, or for any other loss arising from the underlying installation contract between the consumer and the installer.</p>
+
+ <h2>8. Changes</h2>
+ <p>These terms may be updated. Material changes will be communicated by email to active users. Continued use of the service after a change constitutes acceptance.</p>
+
+ <h2>9. Contact</h2>
+ <p><a href="mailto:info@nationalpaperhangers.com">info@nationalpaperhangers.com</a> · National Paper Hangers · Designer Wallcoverings, 15442 Ventura Bl #102, Sherman Oaks CA 91335.</p>
+
+ <p class="muted" style="margin-top:24px;font-size:12px">Last updated <%= new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) %>. These terms describe NPH's current operating model and are not a substitute for the final terms a consumer or installer agrees to at sign-up; consult an attorney before relying on this document for any specific legal question.</p>
<% } %>
</section>
← bec9ac1 Bump platform fee 10%→25% + reframe as 'lead-coordination fe
·
back to NationalPaperHangers
·
Remove 'Schedule install' booking option — initial visit onl d15181a →