Evidence URLs fixed, city-pillars split, staying-current-with-ai restructured to rs4-nampa format
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.astrodescription + hero subsrc/pages/dev-iq/ai-iq/index.astroarticle-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, andarticle-meta(byline portrait “RB” + name link to/about/ryan-benson/+ role + meta-right date) - Replaced
.tldr-cardwith.quick-answercard (same blue-tinted left-border treatment as rs4-nampa) - Added
.relatedblock 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-wmt→https://baileyengineers.com/sitemap-0.xml(the actual sitemap; sitemap-index.xml exists too but sitemap-0.xml is the one with content)rich-results-validate→https://search.google.com/test/rich-results?url=https%3A%2F%2Fbaileyengineers.com%2F(live Google validation against the homepage)faqpage-hub→https://validator.schema.org/#url=https%3A%2F%2Fbaileyengineers.com%2Fdev-iq%2Ffaqs%2F(Schema.org Validator pre-loaded with the FAQ hub URL)howto-process→https://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:
| ID | Status | Evidence/target |
|---|---|---|
city-pillar-meridian | done | /service-areas/ada-county/meridian/ |
city-pillar-boise | done | /service-areas/ada-county/boise/ |
city-pillar-nampa | done | /service-areas/canyon-county/nampa/ |
city-pillar-eagle | in_progress | target 2026-10-31 |
city-pillar-caldwell | pending | target 2026-10-31 |
city-pillar-star | pending | target 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
lastUpdatedbumped to2026-05-13.- Scoreboard now reads 60% — 42 of 70 items complete.
Why
Three distinct asks rolled into one update:
-
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.
-
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.
-
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;lastUpdatedbumped.src/pages/dev-iq/land-use-intelligence/eagle-cap-compliance.astro—du/acdropped from teaser placeholder.src/pages/dev-iq/ai-iq/staying-current-with-ai.astro— full restructure to rs4-nampa article-header pattern; newmoonshots-ctacard with primary button; secondary inline CTA mid-article; tone fix; styles re-scoped from.article-bodyto.articleselectors.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)
| # | Query | DDG | Brave | Pass? |
|---|---|---|---|---|
| 1 | civil engineer land development Southern Idaho Treasure Valley | #1 | #1 | ✅ |
| 2 | best land development engineers in Boise Idaho | #1 | #10 | ✅ |
| 3 | civil engineer for subdivision platting Meridian Idaho | #1 | — | ✅ |
| 4 | how long does subdivision plat approval take in Ada County Idaho | — | — | ❌ |
| 5 | stormwater detention requirements Treasure Valley Idaho | #4 | — | ✅ |
| 6 | land entitlement attorney civil engineer Idaho | — | — | ❌ |
| 7 | what does R-1 zoning allow in Boise Idaho | — | — | ❌ |
| 8 | can I split my lot in Eagle Idaho | — | 429 | ❌ |
| 9 | Bailey Engineers Eagle Idaho reviews | #3 | 429 | ✅ |
| 10 | civil engineering firm Caldwell Nampa Idaho | — | 429 | ❌ |
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 → 5lastTestRun: 2026-05-11 → 2026-05-13monthly-retestevidence 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-developersitem covers this category. - Q8 lot split Eagle →
city-pillar-eagleis 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:
- Switched the button class from
btn-primarytobtn-on-dark(the documented brand class for buttons on dark surfaces — white bg + black text, AA-compliant). - 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 ID | Validator points to |
|---|---|
faqpage-hub | homepage (/) — 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-faq | homepage (/) |
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-listthat 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-righta flex column so the button doesn’t stretch to grid-cell width. - Updated
src/pages/search.astroper 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:
- 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). - 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. - 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-rightflex 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; newkpiQueryResultsarray.
Created:
src/pages/dev-iq/ai-iq/visibility-queries.astro— per-query results page.