Course arrival actions + fix sweep: contact CTA event, claims/bricks/reading-list fixes - #474
Merged
Merged
Conversation
seo-review-2026-08-13 §6 #1 (top-ranked open item): one conversion event so organic/course arrival can be judged at all. Delegated listener in the GA block catches every a[href*="/contact-us"] site-wide. Mark the event as a key event in GA4 admin (1-click, Paul). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GA/GSC/Clarity live pull triple-confirms arrival-not-content. Records: UTM action already shipped, title-pass veto per seo-review §6 #5, paid-pilot-full dead-click verified non-defect, contact_cta_click shipped, metrics-ledger gap flagged for Paul, Aug-17 editorial PRs folded in. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s, banned patterns) Swarm re-run of the Aug-17 fix classes over all 84 course pages + the 10 newest blog posts (Paul's request), calibrated on 90.20's recalibrated rules. 26 files, ~30 surgical fixes: - Further reading trimmed to <=4 external sources, dropping items already linked inline (12 course/blog lists; three sections deleted outright because every item was inline-duplicated) - 4 true bricks converted to list/blockquote (hire-track Rails reasons, outbound module-5 checklist, retros carried-over trio + ask script, switch-dev-shops inventory; pivot-ledger enumeration - NOT the protected taxonomy blocks) - Claims: 'rescue calls going back to 2011' -> 'since 2008' (canon), invented 80/20 hiring split, '80% of Rails apps', '40+ rescues' de-fabricated; illustrative-composite disclaimer added in five-tech-words - 2 banned-pattern rephrasings (negative parallelism, founders-we-work-with cohort phrase) 3 fabricated-fact findings held for Paul (see TASK-TRACKER Aug-20 note). Gates: hugo-build green, banned-pattern regression sweep clean, rendered scroll-gate samples verified (retros, hire-track). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Contributor
Screenshot diffs detected
|
…houghts Paul's review of hire-track: toptal.com/fractional/cto 404s behind Cloudflare - the working page is toptal.com/developers/cto (fixed on all 3 course pages carrying it). AI People Agency + Seedium were competitor listings in our own course - replaced with a JetThoughts entry (staffing/SOW, canon-safe wording); platform counts six->five on both pages. Cluster sweep: no SVG exhibits carry the names. Drive-by canon fix: app-web-development meta '17 years experience' -> 'since 2008'. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul: text-only post, high risk of losing the reader. Added the two house-style mermaid exhibits (pre-rendered SVG per the flake-prevention pipeline): the 4-week overlap timeline with the termination email deliberately LAST (the post's core inversion) in the first fold, and a condition->cheaper-move card grid for the when-switching-is-wrong section. Visual gate: first draft failed it - the LR timeline was illegible and overflowed at 390px, and a TD diamond tree rendered as a sparse wall. Reworked to TD timeline + LR card rows; verified 1280x800 and 390x844: readable without zoom, no body overflow, each ~1 viewport tall. Scores: look/readable/earns-scroll/helpful all pass on both. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…yle) Paul: add visuals to retros-founder-transparency-tool, not mermaid, via /impeccable. Two inline-SVG exhibits in the invoice-loop exemplar grammar (720-wide viewBox, Caveat/cursive stack, paper tones, labels inside shapes, red = the signal, green = outcome only): - retro-summary-annotated.svg replaces the plain text fence - the post's central artifact as an annotated document card: carried-over block red-flagged, margin notes for read-first / third-cycle signal / task-on-your-side. The fence was an example, not a copyable template, so the annotated version strictly beats it. - retro-plus-demo.svg in the demo section - the two-halves synthesis (process on one page + product on a screen -> nothing left to guess). Two render iterations: cursive fallback inside <img> runs wider than Caveat, so first pass clipped the title/annotations - all strings re-fit. Verified 1280x800 + 390x844: no overflow, readable without zoom, img.complete checked before judgment. 4/4 visual-gate scores both. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul: promote Ukraine instead of India. Both hiring pages (where-to-hire map + hire-track reference) now carry Ukraine (Kyiv, Lviv, Kharkiv) as the offshore row: $30-$70/hr ($60K-$140K annualized), deep Rails bench since the late 2000s - the bench JetThoughts itself hires from - and the timezone story flips from async-only to Kyiv-afternoon-equals-US-East- morning (live standups + overnight PR merges). JD template band $35-$55/hr, consistent with the budget guide's in-repo $35-$50 Ukraine figures. Swept the whole surface: quick-pick list, region table, anecdote city (Coimbatore -> Lviv, numbers unchanged), JD template, tomorrow-checklist, frontmatter keyword + description, AND the hiring-region-map.svg card + title/desc/alt (text gates can't see exhibits). Zero India references remain in content/course. Render-verified the updated SVG card. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ons-2026-08-20 # Conflicts: # .okf/log.md
Paul: Ukraine is the default. Default-2026 designation moved from Nearshore LATAM to Ukraine on both pages: region table + quick-pick (where-to-hire map), prose paragraphs (hire-track), and the hiring-region-map.svg badge + legend (purple = recommended default, neutral = timezone-first pick). LATAM reframed as the full-day-overlap pick. Render-verified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul: schedule + groom the next course sprints so other agents execute without the coordinator. New 50.03 execution doc carries the full queue - C1 arrival wave first (per the Aug-13 panel), C2 visual wave, C3 = the archived item-13 W4 scope resurfaced, C0 ratchet parallel-safe - each task with files, steps, gates, done-criteria, traps, and the global execution rules (WIP=1, C6 no-touch, gate classes, fallback-font + LR-390 visual traps, worktree isolation). Tracker points to it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Aug 20, 2026
GA4: mark contact_cta_click a key event; record the UI path and its traps Marked through the GA4 UI in Chrome, closing the last item parked on Paul. The bullet claiming this was permanently his - "the Admin API is not exposed to this session" - was a wrong inference. The read-only Data API indeed cannot mark key events, but the task never needed an API: Admin -> Data display -> Events -> Create event -> "Create with code" takes an event name plus a Mark-as-key-event toggle and needs no already-received data. Third instance in one day of asserting a capability limit instead of checking it, so the rule now generalises past tools to interfaces: exhaust the UI before declaring something blocked. Why it looked blocked: the star on the Events list only appears for events received in the last 28 days, and contact_cta_click had fired ZERO times - it shipped the same day in PR #474. Verified the handler is live and correct in the deployed HTML first; the metric reads zero because nobody has clicked a contact CTA yet, not because instrumentation is broken. Two dialog traps recorded: it pre-selects a $1 default key-event value (which would book phantom revenue on every click, set to "don't set"), and counting method stays "Once per event" so reporting can dedupe to sessions later but is never forced to. Deliberately NOT done, both flagged in the docs rather than silently skipped: - No synthetic click to unblock the star. In a conversion series whose true count is zero, a QA-origin first data point is undeletable and reads as a real conversion forever - same de-fabrication standard applied to testimonials and icp_profile_views earlier today. - Did not un-mark page_view, which still pollutes keyEvents (4,063 of them are page views). That changes how a headline metric reads and belongs to 2608 Phase 0.1, not to this request. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Aug-20 course-progress read (GA + GSC + Clarity live pull) plus the actions it justified, and the course/blog fix sweep Paul requested.
Commit 1 —
contact_cta_clickGA4 event (themes/beaver/layouts/partials/page/analytics.html)seo-review-2026-08-13 §6 #1, its top-ranked open item: one conversion event so arrival can be judged at all. Delegated listener catches every
a[href*="/contact-us"]site-wide. Paul: markcontact_cta_clickas a key event in GA4 admin (1 click).Commit 2 — Aug-20 analytics read → tracker + OKF log
Triple-confirms arrival-not-content: course pages at positions 5-13 with ~800 impressions and 2 clicks; real course arrivals 28d ≈ 12 Google / 7 ChatGPT-Perplexity / 4 LinkedIn; AI-assistant channel at 94% engagement. Records the title-pass veto (§6 #5: falsified experiment), the paid-pilot-full dead-click verdict (reading behavior, not a defect), the UTM check (all 16 LI drafts already tagged), and the empty metrics-ledger row (needs Paul).
Commit 3 — Course + last-10 blog fix sweep (swarm)
5 audit shards over all 84 course pages + 10 newest blog posts, calibrated on 90.20's recalibrated rules. 26 files, ~30 surgical fixes: further-reading trimmed to the ≤4-external cap (inline-duplicates dropped), 4 true bricks → list/blockquote, claims to canon ("2011"→"since 2008", invented 80/20 + "80% of Rails apps" + "40+ rescues" de-fabricated, composite disclaimer added), 2 banned-pattern rephrasings.
3 fabricated-fact findings held for Paul (TASK-TRACKER Aug-20 note): the five-tech-words "B2B HealthTech founder we shipped for" claim, the sow-reading-guide "$78K" dangling story, and the paid-pilot 12%/65% stats living inside an SVG.
Test plan
bin/hugo-buildgreen (validators + banned-strings ratchet)bin/qtest --changedgreen on the template change: 34 runs, 87 assertions, 53 screenshots, 0 failures (qtest is the standing default gate; the only template diff is an invisible head script)🤖 Generated with Claude Code