Skip to content

Course arrival actions + fix sweep: contact CTA event, claims/bricks/reading-list fixes - #474

Merged
pftg merged 11 commits into
masterfrom
course-arrival-actions-2026-08-20
Aug 20, 2026
Merged

pftg merged 11 commits into
masterfrom
course-arrival-actions-2026-08-20

Conversation

@pftg

@pftg pftg commented Aug 20, 2026

Copy link
Copy Markdown
Member

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_click GA4 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: mark contact_cta_click as 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-build green (validators + banned-strings ratchet)
  • bin/qtest --changed green 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)
  • Banned-pattern regression grep clean across all edited files
  • Rendered scroll-gate samples verified in-browser (retros post, hire-track reference)
  • Emitted production JS verified in built head (Hugo minifier parsed it)

🤖 Generated with Claude Code

pftg and others added 3 commits August 20, 2026 10:28
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>
@coderabbitai

coderabbitai Bot commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5879a114-2732-4eaa-96e8-091257757060


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

pftg and others added 8 commits August 20, 2026 10:49
…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>
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
pftg merged commit c4b5e93 into master Aug 20, 2026
6 checks passed
@pftg
pftg deleted the course-arrival-actions-2026-08-20 branch August 20, 2026 10:36
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant