[object Object]

← back to Stars of Design

starsofdesign: JSON-LD Person schema on /clients/:slug (DW client tier) — name + jobTitle + homeLocation + worksFor→Organization. Mirrors firm/designer pattern. Preserves PII rule (city/state only, no street).

044e06cc5288355813301471a2dcf8af34cb0a45 · 2026-05-12 18:41:09 -0700 · Steve Abrams

Files touched

Diff

commit 044e06cc5288355813301471a2dcf8af34cb0a45
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue May 12 18:41:09 2026 -0700

    starsofdesign: JSON-LD Person schema on /clients/:slug (DW client tier) — name + jobTitle + homeLocation + worksFor→Organization. Mirrors firm/designer pattern. Preserves PII rule (city/state only, no street).
---
 routes/public.js | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/routes/public.js b/routes/public.js
index 0d4f8e1..b43af5d 100644
--- a/routes/public.js
+++ b/routes/public.js
@@ -134,10 +134,34 @@ router.get('/clients/:slug', async (req, res, next) => {
     }
     const c = await clientsLib.getClient(slug);
     if (!c) return res.status(404).render('public/404', { title: 'Not found — Stars of Design' });
+    // JSON-LD Person schema for the DW client tier. Firm affiliation, if
+    // known, becomes worksFor → Organization. Memory rule: city + state
+    // only, never street/zip/phone — schema mirrors that exactly.
+    const json_ld = {
+      '@context': 'https://schema.org',
+      '@type': 'Person',
+      name: c.full_name,
+      url: `https://starsofdesign.com/clients/${c.slug || slug}`,
+      jobTitle: c.role || 'Interior Designer',
+      ...(c.city || c.state ? {
+        homeLocation: {
+          '@type': 'Place',
+          name: [c.city, c.state].filter(Boolean).join(', '),
+        }
+      } : {}),
+      ...(c.firm ? {
+        worksFor: {
+          '@type': 'Organization',
+          name: c.firm.name,
+          ...(c.firm.slug ? { url: `https://starsofdesign.com/firms/${c.firm.slug}` } : {}),
+        }
+      } : {}),
+    };
     res.render('public/dwclient', {
       title: `${c.full_name} — DW Client Designer | Stars of Design`,
       meta_desc_override: `${c.full_name}${c.firm ? ' · ' + c.firm.name : ''}${c.city ? ' · ' + c.city : ''}${c.state ? ', ' + c.state : ''}. Active Designer Wallcoverings client.`,
       profile: c,
+      json_ld,
     });
   } catch (e) { next(e); }
 });

← 113ac14 starsofdesign: JSON-LD schema — Organization on /firms/:slug  ·  back to Stars of Design  ·  starsofdesign: home page — WebSite + Organization JSON-LD wi 7348d91 →