Dev Log

Evidence URLs fixed, city-pillars split, staying-current-with-ai restructured to rs4-nampa format

· Claude Opus 4.7 (1M context) · Bot
seoitems-jsonscoreboardland-use-intelligenceai-iqteaserschema-validator

What was done

Eagle cap compliance teaser

src/pages/dev-iq/land-use-intelligence/eagle-cap-compliance.astro:83<Teaser placeholder="█-█ du/ac" /> was wrapping onto two lines inside the hero-stats .stat-num container. Dropped the du/ac suffix; placeholder is now just █-█. The unit is already conveyed by the .stat-label (“Park Lane sub-area cap”) and .stat-support (“§6.5.1.D · binding regardless of base zoning”) below the number, so no information lost.

staying-current-with-ai — tone + format + moonshots CTA

Tone: “How Ryan goes” → “How you can go” in:

  • src/pages/dev-iq/ai-iq/staying-current-with-ai.astro description + hero sub
  • src/pages/dev-iq/ai-iq/index.astro article-card deck

Format: Restructured to mirror /dev-iq/land-use-intelligence/rs4-nampa/:

  • Replaced <PageHero> with custom <article class="article"> + <header class="article-header"> containing eyebrow, h1, deck, and article-meta (byline portrait “RB” + name link to /about/ryan-benson/ + role + meta-right date)
  • Replaced .tldr-card with .quick-answer card (same blue-tinted left-border treatment as rs4-nampa)
  • Added .related block at end with three internal links
  • Re-scoped body styles from .article-body * to .article * to match rs4-nampa’s convention
  • Body still uses container-narrow (the global class) inside the article

moonshots.botgui.de now gets a prominent dark CTA card right under the quick-answer block — eyebrow, h3 mono-styled domain, one-sentence pitch, primary button “Open moonshots.botgui.de →”, and a small disclosure line. A secondary “Browse the distillations →” button is wired into the distillation-layer section mid-article for readers who scroll past the top CTA.

items.json — evidence URL fixes

Eight evidence fields were previously descriptive sentences (e.g., “Domain property verified in Google Search Console; sitemap-index.xml submitted and processed successfully.”). The scoreboard renderer at src/pages/dev-iq/ai-iq/getting-found-by-ai.astro:210 uses <a href={i.evidence}> — meaning those sentences were being interpreted as relative URLs and 404’ing.

Fixed:

  • sitemap, gsc-property, bing-wmthttps://baileyengineers.com/sitemap-0.xml (the actual sitemap; sitemap-index.xml exists too but sitemap-0.xml is the one with content)
  • rich-results-validatehttps://search.google.com/test/rich-results?url=https%3A%2F%2Fbaileyengineers.com%2F (live Google validation against the homepage)
  • faqpage-hubhttps://validator.schema.org/#url=https%3A%2F%2Fbaileyengineers.com%2Fdev-iq%2Ffaqs%2F (Schema.org Validator pre-loaded with the FAQ hub URL)
  • howto-processhttps://validator.schema.org/#url=https%3A%2F%2Fbaileyengineers.com%2Fdev-iq%2Four-process%2F (same, pre-loaded with the our-process URL)
  • person-schema/about/ (team page; click any person to see Person JSON-LD)

Originally targeted view-source: URLs but switched to schema.org validator URLs because Firefox/Safari silently block view-source: anchor links. The validator URLs work in every browser and actually render the parsed schema.

items.json — city-pillars split

Single city-pillars item replaced with 6 per-city items for granular tracking:

IDStatusEvidence/target
city-pillar-meridiandone/service-areas/ada-county/meridian/
city-pillar-boisedone/service-areas/ada-county/boise/
city-pillar-nampadone/service-areas/canyon-county/nampa/
city-pillar-eaglein_progresstarget 2026-10-31
city-pillar-caldwellpendingtarget 2026-10-31
city-pillar-starpendingtarget 2026-10-31

items.json — learn-keystone-wat foundation update

Track 3 M8 (Building your own WAT system) moved from pending → in_progress with evidence capturing yesterday’s real-world experiment: Codex installed on Rebecca Johnston’s machine with read access to projects, standards, email, OneNote, calendar, and Project Tracker — validated useful project-status answers. Frames as foundation for the keystone module’s publishable content. Next step recorded in evidence: connect to an external WAT to write articles based on operations data.

Top-of-file

  • lastUpdated bumped to 2026-05-13.
  • Scoreboard now reads 60% — 42 of 70 items complete.

Why

Three distinct asks rolled into one update:

  1. 404 cleanup. The “Evidence →” links on the public scoreboard were broken for ~8 items because evidence strings were authored as descriptive prose rather than URLs. Anyone clicking through to verify a claim hit a 404. Replacing them with live validators (Google Rich Results, Schema.org Validator) actually proves the claim instead of describing it.

  2. City-pillars accounting. The 6-city pillar work is partway done. Tracking it as a single pending item hides the three completions and conflates Eagle’s active work with Caldwell/Star pending. Splitting gives accurate scoreboard math.

  3. Article voice consistency + tool promotion. “How Ryan goes” centers the author rather than the reader; “How you can go” reframes as a usable how-to. The article needed the same visual treatment as the Land Use Intelligence articles so AI.IQ content reads as part of the same publication, not a sub-stylistic island. moonshots.botgui.de buried inline as link text was undervaluing the tool the article exists to support — promoted to a dark CTA card matching the same hierarchy as the “What’s missing” block in rs4-nampa.

Files affected

Modified:

  • src/content/seo-plan/items.json — eight evidence URL fixes; city-pillars split into 6; learn-keystone-wat to in_progress + Codex evidence; lastUpdated bumped.
  • src/pages/dev-iq/land-use-intelligence/eagle-cap-compliance.astrodu/ac dropped from teaser placeholder.
  • src/pages/dev-iq/ai-iq/staying-current-with-ai.astro — full restructure to rs4-nampa article-header pattern; new moonshots-cta card with primary button; secondary inline CTA mid-article; tone fix; styles re-scoped from .article-body to .article selectors.
  • src/pages/dev-iq/ai-iq/index.astro — article-card deck tone fix.

Created:

  • src/content/devlog/2026-05-13-evidence-urls-city-pillars-stayingcurrent-restructure.md (this entry).

Addendum — AI visibility re-test (2/10 → 5/10)

Re-ran the 10 buyer-intent queries the same afternoon. Methodology was clarified vs. prior runs: this is a multi-engine web-search-rank proxy, not direct chat-UI queries. Three engines attempted:

  • DuckDuckGo HTML — full data, no rate-limit issues. Aggregates Bing + DDG crawl, approximates ChatGPT/Copilot grounding.
  • Brave Search — got 7 of 10 before HTTP 429. Approximates Claude grounding.
  • Google — blocked all 10 with the “unusual traffic” page. Standard bot-detection behavior.
  • Bing direct — query string mangled by WebFetch (returns single-word interpretations like “civil” → LA Courts results). Unreliable; skipped after diagnostic.

Results (union: pass if Bailey appears in top 10 on at least one engine)

#QueryDDGBravePass?
1civil engineer land development Southern Idaho Treasure Valley#1#1
2best land development engineers in Boise Idaho#1#10
3civil engineer for subdivision platting Meridian Idaho#1
4how long does subdivision plat approval take in Ada County Idaho
5stormwater detention requirements Treasure Valley Idaho#4
6land entitlement attorney civil engineer Idaho
7what does R-1 zoning allow in Boise Idaho
8can I split my lot in Eagle Idaho429
9Bailey Engineers Eagle Idaho reviews#3429
10civil engineering firm Caldwell Nampa Idaho429

Score: 5/10 (up from 2/10 baseline) — already at the 6-month target minus one. Per the calibration memory, infrastructure earns ~4-5/10; 5/10 today suggests infrastructure work is at its ceiling and further gains require Stream D (authority) plus Phase 3 content (FAQs targeting the 5 misses).

Method drift acknowledgment

The April 28 baseline doc says “ChatGPT/Claude/Perplexity/Gemini-equivalent search patterns” — vague. Today’s union-scoring across DDG + Brave is more rigorous but isn’t strictly comparable to the original 2/10. Engine disagreement is real: Bing-indexed engines (DDG) see Bailey ranking on Q3 (Meridian platting) and Q5 (TV stormwater); Brave’s independent crawl doesn’t. That’s a real difference, not noise — it means ChatGPT/Copilot users see Bailey more readily than Claude users do today.

items.json updates

  • kpiQueriesPassed: 2 → 5
  • lastTestRun: 2026-05-11 → 2026-05-13
  • monthly-retest evidence rewritten with the multi-engine methodology and pass list

Scheduled remote agent updated

The 2026-06-02 reminder (trig_01BNmHr4ebhZp5wbXr6dGJpj) had a prompt that incorrectly told future-Claude to run queries against chat UIs. Replaced with the WebFetch-against-DDG+Brave methodology so the next re-test is reproducible and doesn’t require human chat-UI interaction. Now wired with WebFetch access in allowed_tools.

Misses to address (Phase 3 content targets)

The 5 failing queries map cleanly to roadmap items:

  • Q4 plat timeline → existing /dev-iq/faqs/entitlements/ exists but isn’t ranking. Needs more entity-defining content + maybe an Article schema refresh.
  • Q6 entitlement attorney + civil engineer → cross-discipline query; no Bailey content. New FAQ candidate.
  • Q7 R-1 zoning Boise → educational; existing faq-new-developers item covers this category.
  • Q8 lot split Eagle → city-pillar-eagle is in-progress and should target this.
  • Q10 Caldwell + Nampa firm → multi-city query; existing service-area pages are single-city. Possible cross-city pillar or comparison page.

Memory

Saved reference_visibility_test_methodology.md capturing the multi-engine methodology so future Claude conversations don’t re-introduce the chat-UI confusion.


Addendum 2 — moonshots-cta accessibility, schema validator URLs, per-query results page

Accessibility fix on /dev-iq/ai-iq/staying-current-with-ai/

The moonshots.botgui.de CTA card (dark charcoal background) had a btn-primary button (black bg, white text) — but the article’s local link rule .article a { color: precision-blue-text } was outranking .btn-primary’s color due to selector specificity (0,1,1 vs 0,1,0). Result: button text rendered as dark blue on dark charcoal, failing WCAG AA contrast.

Two-part fix per /accessibility/ brand pattern:

  1. Switched the button class from btn-primary to btn-on-dark (the documented brand class for buttons on dark surfaces — white bg + black text, AA-compliant).
  2. Scoped the link color rule to .article a:not(.btn) so future .btn-* classes inside the article are immune to color override. Comment added explaining the prior failure mode.

Schema & FAQ evidence URLs → validator.schema.org pattern

Ryan’s directive: “All applicable Schema & FAQs should use schema page URL for that page.” Implemented the validator-URL pattern across 7 Phase 2 items (one was already using it from yesterday):

Item IDValidator points to
faqpage-hubhomepage (/) — homepage now mirrors the same 6 entity-defining Q&As
faqpage-articles/dev-iq/faqs/ (the hub indexing all 12 articles)
article-schema/dev-iq/faqs/cost/ (sample article with full Article schema)
article-schema-lui/dev-iq/land-use-intelligence/eagle-cap-compliance/
service-schema/services/
homepage-faqhomepage (/)
person-schema/about/shane-leavitt/ (sample Person page)
howto-process(already pointing to /dev-iq/our-process/ from yesterday)

The validator URLs actually render the parsed schema, replacing earlier descriptive-sentence evidence strings that were 404’ing when clicked from the public scoreboard.

New page: /dev-iq/ai-iq/visibility-queries/

The 10-query test results — previously buried in conversation context — now have a permanent public home. The page reads from a new kpiQueryResults array in items.json (SSOT) and renders:

  • Header with score (5/10) + last test run date + back-to-scoreboard link
  • Summary card with target context + methodology note
  • Per-query table: # / query / today’s rank (DDG · Brave) / April 28 baseline. Passing rows shaded sage-green; failing rows neutral.
  • “What the misses tell us” section: a miss-list that links each failing query to its mapped roadmap item (e.g., Q7 R-1 zoning Boise → faq-new-developers; Q8 lot split Eagle → city-pillar-eagle).
  • Expanded methodology explaining ChatGPT-Bing, Claude-Brave, Gemini-Google, Perplexity-own-crawl grounding and the union scoring choice.
  • Related-links block.

Page styling mirrors the rs4-nampa article-header pattern (consistent with the staying-current restructure from earlier today).

Button + SSOT consolidation on the scoreboard page

  • Added a See per-query results → button (btn-secondary) under the 10-query list on /dev-iq/ai-iq/getting-found-by-ai/.
  • Made .score-right a flex column so the button doesn’t stretch to grid-cell width.
  • Updated src/pages/search.astro per CLAUDE.md to list the new page in the AI.IQ column of the no-JS fallback sitemap.

items.json: new kpiQueryResults

New top-level array with 10 objects, each carrying n, query, pass, rank (search engine + position when passing), baseline (April 28 result), and missMapsTo (roadmap-item context string when failing). This is the SSOT for the new visibility-queries page — future monthly re-tests update this array along with kpiQueriesPassed and lastTestRun.

Why

Three discrete drivers:

  1. Ryan flagged the moonshots-cta as “hard to read black text on dark background” — real accessibility regression introduced by my CSS yesterday. Needed the documented /accessibility/ brand pattern (.btn-on-dark).
  2. The scoreboard’s “Evidence →” links were inconsistent — some pointed to live validator URLs (post-yesterday’s fix), others still rendered as paths or descriptive text. Normalizing to validator.schema.org#url=... makes “click Evidence and see the parsed schema” a uniform, verifiable action across every Schema item.
  3. The per-query test results existed only in the chat transcript. They needed a public home so the methodology is reproducible and the misses-to-roadmap mapping is visible to anyone reading the scoreboard. Bonus: the new page itself is more entity-defining content for AI search — it’s the kind of statistic-dense methodology page assistants love to cite.

Files affected (addendum 2)

Modified:

  • src/pages/dev-iq/ai-iq/staying-current-with-ai.astro — moonshots button class swap; link rule scoped :not(.btn).
  • src/pages/dev-iq/ai-iq/getting-found-by-ai.astro — added detail button + made .score-right flex column.
  • src/pages/search.astro — added visibility-queries to AI.IQ children in the no-JS sitemap.
  • src/content/seo-plan/items.json — 7 evidence URLs → validator.schema.org pattern; new kpiQueryResults array.

Created:

  • src/pages/dev-iq/ai-iq/visibility-queries.astro — per-query results page.
Feedback