Reviewed by: 6 AI agents (2 pro, 2 con, 2 judges)
Methodology: Two agents assessed strengths and opportunities. Two assessed weaknesses, risks, and technical problems. Two weighed the findings and ranked recommendations by impact, effort, and risk.
What the Site Does Well
Three-track color system (story.html) — Red, teal, and gold map Building, Assault, and Family to distinct visual channels. The hover highlighting across all three track columns lets a reader see simultaneity without being told about it. This is the single strongest information-design choice on the site.
Hinge-Date Matrix (story.html, section 8) — Forces the reader to look across rows and see that Feb 28, Apr 15, May 6, and May 10 each have entries in multiple columns. The convergence becomes self-evident from the data layout alone.
Meta tags and Open Graph — Every page has unique og:title, og:description, og:image, and twitter:card. Link previews on social media and search results render correctly and distinctly per page.
Alt text on all evidence photos — All 42 images in evidence-photos.html have specific, descriptive alt text (e.g., “FSK tape on AC exhaust hose at 113 degrees F, FLIR infrared”). Zero empty alt attributes.
Accessibility scaffolding — Skip links, aria-label, aria-hidden, aria-expanded, prefers-reduced-motion support, and focus-visible outlines appear across all pages. Unusually thorough for a hand-built static site.
Live countdown bar — Displaced days and trial countdown create urgency without editorializing. It is a clock, not a claim.
AI discoverability — robots.txt explicitly allows GPTBot, ClaudeBot, PerplexityBot. Companion llms.txt and agents.md files are referenced. Forward-thinking for search and AI indexing.
Lazy loading and print classes — Images use loading=”lazy” throughout. Print-specific CSS hides navigation and forces page breaks.
Recommended Improvements — Ranked by Priority
1. Self-host the Bob Faith headshot
File: bad-faith-bob.html, line 389
Problem: The hero image loads from Greystar’s CDN (s7d9.scene7.com). Greystar can remove, block, or replace this image at any time — breaking the page header or worse, serving a hostile replacement.
Fix: Download the image, save it locally, update the src attribute.
Effort: Easy (15 minutes)
Impact: HIGH — prevents an adversary from breaking your page
Risk: Low
2. Add JSON-LD structured data to index.html
File: index.html, inside <head>
Problem: No structured data markup. Google gets only the meta description. The site is invisible to rich snippets, knowledge panels, and programmatic search tools.
Fix: Add an Article or WebPage JSON-LD block with author, datePublished, headline, description, and criminal docket references.
Effort: Easy (20 minutes)
Impact: High — improves Google visibility and lets investigators’ tools parse the site programmatically
Risk: Low
3. Fix multiple <h1> tags on index.html
File: index.html, lines 874-881
Problem: Three <h1> elements on the cover page (title, subtitle, “Consolidated Master Report”). Search engines expect one <h1> per page. Multiple <h1> tags confuse crawlers and dilute heading weight.
Fix: Keep the first <h1> (“SYSTEMATIC ANTISEMITISM AT GOLDTEX APARTMENTS”). Demote the subtitle to a styled <p> and “CONSOLIDATED MASTER REPORT” to <h2>.
Effort: Easy (10 minutes)
Impact: Medium — improves SEO heading hierarchy
Risk: Low
4. Add rel="canonical" to subpages
Files: evidence-photos.html, supplemental.html, bad-faith-bob.html, and others missing it
Problem: Most subpages have og:url but no canonical link tag. Missing canonical tags can cause duplicate-content signals in search rankings.
Fix: Add <link rel="canonical" href="https://jlegal.pro/[page].html"> to each page’s <head>.
Effort: Easy (20 minutes across all pages)
Impact: Medium — prevents SEO penalties
Risk: Low
5. Pin CDN versions and add SRI hashes to external scripts
Problem: ApexCharts is loaded without a pinned version — a breaking or malicious CDN update auto-deploys. None of the three external scripts have integrity or crossorigin attributes. A CDN compromise would allow arbitrary JavaScript execution on the site.
Fix: Pin all CDN URLs to specific versions. Generate and add Subresource Integrity (SRI) hashes and crossorigin=”anonymous” attributes.
Effort: Easy (30 minutes)
Impact: HIGH — prevents supply-chain attack vector
Risk: Low
6. Add video poster frames to evidence-photos.html
File: evidence-photos.html, section 7.5
Problem: Three <video> elements have no poster attribute. On mobile, they render as black rectangles. Users must tap play to see anything.
Fix: Extract a representative frame from each video, save as a .jpg, add poster=”frame.jpg” to each <video> tag.
Effort: Easy (20 minutes)
Impact: Medium — journalists scrolling on a phone can see the content immediately
Risk: Low
7. Add prev/next navigation between narrative pages
Problem: The reading path story -> convergence -> three-surfaces is implicit but not surfaced. A reader who finishes story.html has no prompt to continue.
Fix: Add a “Next: The Convergence” link at the bottom of story.html, and corresponding prev/next links on convergence.html and three-surfaces.html.
Effort: Easy (30 minutes)
Impact: Medium — guides linear readers through the intended narrative sequence
Risk: Low
8. Add print/PDF styles for the main report
File: index.html
Problem: The existing @media print rules are minimal (just .no-print { display: none }). Printing produces a 100+ page mess with broken layouts, invisible dark-background text, and wasted hero banner space. The site frames itself as a “Consolidated Master Report” — attorneys and agencies will try to print it.
Fix: Add print CSS: page breaks before major sections, remove decorative gradients and dark backgrounds, set consistent font sizes, fix table rendering.
Effort: Easy (1 hour)
Impact: Medium — makes the report usable as a printed legal document
9. Verify all external links in bad-faith-bob.html
File: bad-faith-bob.html, “Record Under Bob Faith’s Leadership” section
Problem: ~30 external links to government enforcement actions (HUD, DOJ, California CRD, FTC). Government link rot is common. The HUD archive link format and California CRD link are particularly vulnerable. Every dead link in the settlements section is a gift to opposing counsel.
Fix: Automated link check. Replace any dead links with archived versions (Wayback Machine) or updated URLs.
Effort: Easy (30 minutes)
Impact: Medium — protects the site’s strongest credibility section
Risk: Low
10. Fix WCAG contrast on bad-faith-bob.html hashtags
File: bad-faith-bob.html, line 646
Problem: Hashtag text color #4a7a52 on background #0f1f14 has a contrast ratio of 3.42:1. WCAG AA minimum is 4.5:1.
Fix: Lighten the text color to at least #6aaa72 or similar to meet 4.5:1.
Effort: Easy (5 minutes)
Impact: Low — accessibility compliance for low-vision users
Risk: Low
Noted but Not Recommended Right Now
Extract shared CSS/JS into external files — Correct observation. index.html has 400+ lines of inline CSS duplicated across 20 pages. High-leverage long term, but medium effort, touches every file, and risks breaking the two nav systems. Save for a dedicated refactoring session.
Unify the two navigation systems — index.html uses a navy sticky nav-bar with dropdown; the other pages use a green jl-nav system. Two different nav experiences is jarring. But unifying them is medium effort with medium breakage risk. Worth doing, but not in a quick pass.
Build a structured evidence index — A single page listing every cited document (date, type, source, where referenced) would be valuable. But it requires auditing every citation across 7,650 lines. Medium effort. Better done as a standalone project.
L&I deadline math — One reviewer flagged that 20 business days from May 1 might be approximately May 29, not June 1. The site text specifies Memorial Day excluded and filing day not counted. Worth double-checking the exact count to ensure the “past its own deadline” framing is airtight.
SEO satellite domain links on bad-faith-bob.html — Links to bob-faith-greystar-ceo.com, bobfaith-greystar.com, greystar-bad-faith-bob.com, and greystar-rentals-hell.com at the bottom of the page. One reviewer flagged that an adversary or court could cite these as evidence of a coordinated harassment campaign rather than protected advocacy. Consider whether these links help or hurt the site’s “documented narrative” framing.
Swimlane chart mobile fallback (story.html) — The three-track swimlane chart loses its structure on mobile (lane labels and axis are display:none). A stacked-card layout preserving color coding would retain the convergence argument on phones. Medium effort.
Search function performance — The highlightText() function walks every text node in the 538KB page on each keystroke. Could freeze the UI on slow devices. A TreeWalker or requestIdleCallback optimization would help. Low priority.
This site uses cookies and analytics (including Google Analytics) to understand readership. No personal data is sold or shared. Privacy Policy