← Operations

SEO Department

SEO DEPARTMENT
Idle — waiting for the next scheduled run
last run: 2026-07-29 15:41 UTC
state updated: 2026-07-29 15:40 UTC
next: Wed 2026-07-29 21:01:17
Waiting on you (1)
[A-001] Add SoftwareApplication JSON-LD to the /unlock/ page (paste the prepared snippet, or grant an admin credential so the loop can) · not time-sensitive
Editor1 app-password can't edit PAGES (WP REST 403 rest_forbidden_context); this schema helps the main converting page win rich results
Approve Reject
Latest run — what it did / would do

SEO Loop — Last Run Report

**Run:** 3 · **Date:** 2026-07-29 · **Mode:** DRY_RUN=1 (read-only externally; local files updated
with WOULD-actions) · **Content cap:** 2/run (used 1 item; prepped, not published).

Outcome (lead)

Top-ROI item **crimpd-vs-lattice-vs-grip-and-grind** is prepped to the DONE bar in DRY_RUN: a
structurally complete draft left by the prior (timed-out) run was verified, its competitor facts
web-checked, **two factual errors corrected**, and it now passes every mechanical + copy check.
Nothing was published (correct for DRY_RUN). One item filed for Sara.

What WOULD run (live)

• **Publish `crimpd-vs-lattice-vs-grip-and-grind`** as `future`, **Mon Aug 17 15:00 UTC**, category
climbing-training (283), author 238. Slug/title/excerpt in
`SEO Department/drafts/crimpd-vs-lattice-vs-grip-and-grind.PUBLISH.md`.
• Body: `SEO Department/drafts/crimpd-vs-lattice-vs-grip-and-grind.html` (~1670 words).
• Checks (DRY_RUN): FAQPage JSON-LD present + matches visible FAQ; 4 internal links
(/lattice-training-app-alternative/, /stuck-at-v4/, /find-your-movement-limiter/, /unlock/);
0 em/en dashes; 0 banned terms; 7 limiters named; Bernhard testimonial verbatim. Copy audit PASS.
• Still WOULD (can't in DRY_RUN): generate + upload the branded 1200x630 card with alt text, set
featured_media, POST the post, GET-verify, record the WP id.
• **Fact corrections made to the draft (local edit, allowed in DRY_RUN):**
• Crimpd+ price: flat "$4.99/mo" → **$12.99/mo, $29.99/qtr, $59.99/yr (~$5/mo annually)** (crimpd.com).
• "75-plus sessions on the free tier" → the 75-plus library sits **behind Crimpd+** (crimpd.com).
• Verified true, kept: Crimpd built by Tom Randall & Ollie Torr of Lattice (ukclimbing/climbing.com);
Lattice £22.99/mo, £124.99/yr (latticetraining.com).

Reconciliation (site = truth)

Listed 22 live WP posts via REST (HTTP 200). All match LOOP-STATE: 4515 stuck-at-v4 (publish);
4517/4521/4523/4525/4527 (future, Jul 30 → Aug 13, correct dates). No drift; no correction needed.

Waiting on Sara (Approval-Queue)

• **A-001** — Add SoftwareApplication JSON-LD to the `/unlock/` page (paste prepared snippet, or grant
an admin credential). Blocked because the Editor1 app-password can't edit PAGES (REST 403). Not
time-sensitive.

Blocked (and the one unblock)

• **Keyword validation** for the crimpd article and posts 4521/4523/4525/4527 — Ahrefs/GSC not wired.
Unblock: a browser Ahrefs session (or GSC export). Loop proceeded on directional priority and
capped Confidence at 0.6 per the model. Not a stall.
• **Live publishing of the crimpd draft** — blocked only by DRY_RUN. Unblock: Sara flips DRY_RUN=0.
Note: publish/card helper scripts are NOT in this repo copy and must be re-staged for a live run.

Recomputed queue — top for next run (Confidence capped 0.6, Ahrefs unreachable)

| # | Opportunity | Score | State |
|---|---|---|---|
| 1 | crimpd-vs-lattice-vs-grip-and-grind | 1.44 | DRY-RUN prepped → publish when live (Aug 17) |
| 2 | Outreach: next verified press/review pitch | 1.26 | needs a verified new contact; DRY_RUN can't draft |
| 3 | best-climbing-apps-for-technique | 1.01 | write next (slot Thu Aug 20) |
| 4 | best-climbing-training-apps-2026 (XL hub) | 0.72 | |
| 5 | beginner-climbing-training-plan (XL pillar) | 0.63 | |
Ranking unchanged from the seed; only absolute scores dropped under the 0.6 Confidence cap.
Opportunity queue & state (LOOP-STATE)

LOOP-STATE — Grip & Grind SEO Self-Driving Loop

Source of truth = WordPress (query slugs) + Gmail (query drafts). This file is a convenience log.
Read this FIRST each run, then reconcile against WP/Gmail before acting.

RETRY & ESCALATION POLICY (when a step fails)

When any step errors or blocks, escalate through this ladder before giving up. One stuck item must
NEVER halt the whole run.
1. **Attempt 1** — run the step as planned.
2. **Different approach** — same goal, different method (revised query, different REST field or
endpoint, re-fetch the raw content, adjust the payload/format).
3. **Different tool** — switch tools or channels (REST API instead of browser; direct API instead
of an MCP wrapper; a different connector; plain HTTP vs a library).
4. **Refresh auth / browser / session** — re-authenticate, refresh the app password or token,
reconnect/reload the browser tab, re-stage a moved file, re-list connected folders, then retry.
5. **Stop after ~30 minutes on one item.** If still blocked:
a. Write a **detailed blocker report** in the "## Blockers (open)" section below: which item,
what you tried at each rung, the exact error text, a timestamp, and precisely what a human
needs to do to unblock it.
b. Create a **follow-up task** (TaskCreate) describing the fix and who/what can do it.
c. **Continue to the next backlog item.** Do not retry indefinitely and do not stall the loop.
**Guardrails override every rung.** Never cross an approval gate to get unblocked: do not send
email, edit live pages that need an admin credential, delete/redirect live content, or spend money
just to make a step pass. If the only path past a blocker crosses a guardrail, that is an automatic
stop-and-report (log it + follow-up task), not a retry.

Blockers (open)

• (none currently)

Run history

• **Run 1 — 2026-07-27**. First content run. Completed both technical items,
scheduled 2 articles, drafted 3 outreach emails. Ahrefs validation deferred (see below).
• **Run 2 — 2026-07-27**. Voice rewrite + content audit (all 22 posts, 0 issues); outreach
re-voiced and (per notes) SENT by Sara.
• **Run 3 — 2026-07-29 (DRY_RUN=1)**. Reconciled: all 22 WP posts match notes (6 recent posts
4515/4517/4521/4523/4525/4527 present + correctly dated). Rescored queue with Confidence capped
at 0.6 (Ahrefs unreachable). Top item = crimpd-vs-lattice-vs-grip-and-grind. A structurally
complete draft from the prior (timed-out, rc=124) 2026-07-29 loop already existed in `drafts/`;
verified it, **web-checked its competitor facts, and corrected two errors** (Crimpd+ price, free-tier
session overclaim). Draft now PASSES all mechanical + copy checks. Nothing published (DRY_RUN).
See `drafts/crimpd-vs-lattice-vs-grip-and-grind.PUBLISH.md` for the WOULD-publish spec.

Environment / access notes (important for next run)

• **Run 3 box (headless server, `/opt/seo-dept/state/Claude`):** WP creds are in env vars
`WP_GG_USER` / `WP_GG_APP_PASSWORD` (Send Edition creds also present: `WP_SE_*`). No `.wpcreds`
file here. WP REST GET works (listed 22 posts, HTTP 200).
• **Web research (WebSearch/WebFetch) IS available on this box** and is read-only — use it to verify
competitor facts and find outreach contacts. (Ahrefs keyword volume + GSC are still NOT wired.)
• **Helper scripts (publish*.py, make_cards*.js, revoice*.py, fixes.py) and the
`unlock-softwareapplication-jsonld.html` snippet are NOT in this repo copy.** They lived in the
prior `~/Claude` session. A LIVE run here must recreate/re-stage them (or Sara stages them) before
it can publish or generate featured-image cards.
• WP creds: `.wpcreds` (Editor1 application password). Works for POSTS.
• **PAGES are NOT editable with this token**: `context=edit` on any page returns
`rest_forbidden_context` (tested /unlock/ id 4083 and /about-us/ id 364), even though the
Editor role reports edit_pages capability. Posts are fine (context=edit works on post 4515).
=> Anything requiring a PAGE edit must go to "Needs Sara" or use an admin credential.
• SEO plugin: NOT Rank Math/Yoast (no REST namespace). Site runs GeneratePress + Toolset +
WP Fusion + WP Simple Pay + Code Snippets + Brevo (mailin). Meta description = post excerpt.
• Mac context folder (grip-and-grind-context skill) NOT accessible this run: device connected
(mac-lan) but zero folders granted. Voice was anchored on the two live exemplars + the skill's
terminology rules (read from /root/.claude/skills/grip-and-grind-context/SKILL.md). If deeper
brand docs are needed, Sara must grant folder access (primary path:
/Users/sarawadework/Cursor/Grip-and-Grind-Context/).
• Ahrefs = browser-only (Claude in Chrome). Not run this session (unattended; browser/login not
verified). Per loop rules, proceeded on strategy directional priority and logged validation as
DEFERRED. Validate keywords when a browser session with Sara present is available.
• Helper scripts: publish.py (exemplars), publish_new.py (this run's articles), make_cards.js /
make_cards_run.js (featured cards). Reuse/extend these.
• Scheduling cadence: Mon & Thu 15:00 (matches exemplars stuck-at-v4 Mon Jul 27 & lattice Thu
Jul 30). Next open slots after this run: **Mon Aug 10** and **Thu Aug 13**.
• Category used for new posts: climbing-training (id 283). Author id 238 (Sara Wade / Editor1).
• Verified-safe internal link targets (all live or live-by-publish): /master-your-footwork/,
/drills-for-body-position/, /drills-for-flagging/, /drills-for-drop-knees/, /finger-strength/,
/find-your-movement-limiter/, /unlock/, /stuck-at-v4/, /lattice-training-app-alternative/,
/climbing-plateau-guide/, /climbing-technique-drills-that-transfer/.

VOICE (Sara, run 2) — READ BEFORE WRITING ANYTHING

Sara flagged the earlier drafts as sounding like AI, not her. Rules she endorsed:
• **Lead with THEIR work/article, not "I'm Sara Wade, founder of..."** Open on a specific, genuine
observation about the recipient's site/roundup/coverage, then what the app is, then the ask.
• **Plain, human sentences.** No copywriter scaffolding.
• **Banned AI tells** (in addition to the banned brand terms): "Here's my ask:", the parallel
"If X, great. If not, Y" hard construction, piled-on reassurances ("no deadline, no follow-up
pressure"), copywriter verbs ("drop it in your inbox", "lift straight into").
• **Approved outreach CTA (verbatim pattern):** "Want me to send you a free account to try? If
it's useful, maybe it's worth a mention next time you cover climbing apps. If not, no worries at
all." (soft if/if-not is fine; the hard version is not.)
• Sign-off: "Sara / Grip & Grind / gripandgrindclimber.com" (light identity, no throat-clearing intro).
• Outreach drafts rewritten to this on 2026-07-27: GearJunkie, Gripped, 99Boulders.
• **ALL OUTREACH SENT by Sara 2026-07-27**: GearJunkie (sean@gearjunkie.com), Gripped
(brandon@gripped.com), 99Boulders (alex@99boulders.com), Teddy Dondanville
(twdondanville@gmail.com), + Hike The Planet contact form. Do NOT re-draft/re-send these.
Next run: watch sara@sendedition.com for replies; only follow up if Sara asks.
• **VOICE PASS DONE 2026-07-27:** all 4 scheduled posts (4521/4523/4525/4527) re-voiced from Sara's
REAL docs and updated via REST (revoice.py). All still PASS the publish check.
• **Context folder is now connected at `/Users/sarawadework/Documents/Grip-and-Grind-Context`.**
Canonical voice docs (read these before writing any G&G copy):
`2026-06-25-copy-quality-standard.md` (THE voice/quality bar) and
`content-strategy/2026-06-25-august-batch-core-commercial-cluster.md` (her actual blog voice on
these exact SEO topics). Master context: `2026-05-11-...-master-context-v2.15.md`.
• **Voice moves that define "sounds like Sara":** concrete "you" opening on a felt gym moment;
real climber vocab (thrutch, barn-door, cut feet, pumped, flow up, crux, beta, send, project);
name the enemy (strength-obsession, winging it, hangboard-first, 300 drills to scroll); the
misattribution reframe; contrast ("Most climbers try harder. Smart climbers drill."); "say what
it's NOT"; CTAs action-named in PARENTHESES not dashes.
• **FACT CORRECTIONS baked in (were wrong in the first drafts):** assessment = **10 minutes**;
benchmarks at weeks **0, 4, 8, 12**; rope grades **5.9 to 5.12** (not 5.11); trial = 7 days,
card required, $0 for 7 days, **cancel in two taps before day 8**; pricing $15/mo, $39/qtr
(~$13/mo), $129/yr (~$10.75/mo); the 15-min drill is a **Quick Unlock**; "movement level" rises.
• **Cleared testimonials (verbatim ONLY, these three):** Bernhard (stuck V4 -> V5s), Tina (first
V4 in three weeks), M.T. (drills -> dynamic/powerful moves). Used one per post.
• **CONTENT AUDIT + FIXES 2026-07-27** (fixes.py, revoice2.py; full report content-audit-2026-07-27.md):
Scanned all posts vs copy standard. Applied all four fix buckets:
• P1: assessment duration "15 to 20 min" -> "10 min" on live pillar 4445 + training-plan 4447;
deleted the 4446 `find-your-movement-limiter-post-dupe` draft (trashed).
• P2: rope grade 5.11 -> 5.12 (handled inside the 4517 re-voice).
• P3: 2025 posts cleaned (2222/2239/2241 "weakness" -> "movement limiter"; 2243 "climb harder
for longer" -> "climb strong for longer"; em/en dashes converted to commas / "to" across
1465,1555,1565,1680,2222,2236,2239,2241,2243; 2241 duration fixed).
• P4: re-voiced the two exemplars in Sara's voice: 4515 stuck-at-v4 (LIVE) + 4517 lattice
(future). Both PASS publish check, added cleared testimonials (Bernhard, Tina).
• RESULT: full re-scan = 22 posts, **0 issues** (no dashes, no banned terms, no fact errors).
• **Watch (next run):** post 4521 `best-climbing-training-app-for-beginners` overlaps the existing
published pillar `/climbing-training-app-beginners-intermediate/` (post 4445). Linked to it;
keep keywords distinct ("for beginners" vs "beginner and intermediate") to avoid cannibalizing.

OPPORTUNITY QUEUE (scored — recompute each cycle)

This replaces the old static backlog. Each cycle: score every OPEN opportunity with
`PRIORITIZATION-MODEL.md` (`ROI = Impact × Confidence × Longevity × Strategic fit × Urgency ÷ Effort`),
work the highest that clears the guardrails, then recompute. Work the highest score, NOT the top of
the list. Every item carries a **Why-now (Reason)** and **Expires**; **Urgency > 1.0 applies ONLY to
decaying/defend items** (a slipping page, a defended term), never to net-new work. Refilled by
generators: cadence tasks, the monthly GSC ranking-eval (refreshes), the semi-annual audit, outreach
research, competitor SERP checks.
**Active queue (recomputed Run 3, 2026-07-29). Confidence CAPPED at 0.6 for all net-new articles**
because Ahrefs/GSC is unreachable (PRIORITIZATION-MODEL: "If Ahrefs/GSC is unreachable, cap
Confidence at 0.6 until validated"). Ranking order is unchanged from the 2026-07-27 seed; only the
absolute scores drop. Revalidate → Conf 0.8/1.0 when Ahrefs/GSC lands.**
| Opportunity | Type | Imp | Conf | Long | Strat | Urg | Eff | Score | Notes (why now / expires) |
|---|---|---|---|---|---|---|---|---|---|
| crimpd-vs-lattice-vs-grip-and-grind | article (comparison) | 5 | 0.6 | 1.2 | 1.6 | 1.0 | 4 | **1.44** | TOP. **Run 3 DRY-RUN prepped**: draft corrected + passes; WOULD-schedule Mon Aug 17. Live run: publish. |
| Outreach: next verified press/review pitch | outreach | 3 | 0.6 | 0.7 | 1.0 | 1.0 | 1 | **1.26** | cheap; off the 2/run content cap; DRY_RUN can't create Gmail drafts (state change) |
| best-climbing-apps-for-technique | article (commercial) | 4 | 0.6 | 1.2 | 1.4 | 1.0 | 4 | **1.01** | cluster+funnel; net-new. #2 content item (slot Thu Aug 20) |
| best-climbing-training-apps-2026 | article (comparison HUB, XL) | 5 | 0.6 | 1.2 | 1.6 | 1.0 | 8 | **0.72** | year-stamped → Long 1.2, annual refresh |
| beginner-climbing-training-plan | article (PILLAR, XL) | 4 | 0.6 | 1.5 | 1.4 | 1.0 | 8 | **0.63** | durable but XL effort drags it (tuning-knob note) |
**When GSC data lands (mid-Oct):** refreshes of slipping pages enter as decay/defend items with
Urgency 1.3-1.6 and will typically top the queue (see model example E).
**Pending data (will likely jump the queue once scored):**
• Refreshes of underperformers — unlockable after the monthly ranking-eval pulls GSC data (first
meaningful run mid-Oct 2026). Refreshes are usually high-ROI (proven impressions = Conf 0.8-1.0,
low Effort). Add each as its own opportunity when the eval flags it.
• Phase 2/3 cluster articles from `content-strategy/` September batch — add + score when Phase 1 clears.
**Blocked / needs-Sara (not auto-picked):**
• `/unlock/` SoftwareApplication schema — needs an admin credential (Editor1 can't edit pages).
• Data-story PR — parked until ~1,000 assessments (currently ~45).
**Next content run (top 2 by score):** crimpd-vs-lattice-vs-grip-and-grind (DRY-RUN prepped, just
publish it when live), then best-climbing-apps-for-technique (write). Scheduled slots Mon Aug 17 +
Thu Aug 20 15:00. Also do the cheap outreach pitch (doesn't count toward the 2).

BACKLOG / COMPLETION LOG (detail)

Technical

• [DONE] Author bio (E-E-A-T) — set on Editor1 (Sara Wade, user 238) via REST. 43 words, passed
gate (1 pass). Grounded in verifiable facts (founder/creator); NO invented credentials.
**Flagged for Sara to approve / add specifics (years climbing, certs) if she wants.**
• [NEEDS SARA] SoftwareApplication JSON-LD on /unlock/ — cannot edit pages with this token
(REST 403). Exact snippet prepared: `unlock-softwareapplication-jsonld.html` (no aggregateRating).
Sara to paste into the /unlock/ page (or a Code Snippet) OR provide an admin credential.

Content — Phase 1 (2/week)

• [SCHEDULED] best-climbing-training-app-for-beginners — **post 4521**, future **2026-08-03 15:00**,
featured_media 4520 (alt set), FAQPage yes, 5 internal links, 0 dashes. Publish check PASS.
Copywriting audit PASS (1 pass). Keyword validation: DEFERRED (Ahrefs). Excerpt 155 chars.
• [SCHEDULED] why-youre-stuck-climbing-plateau (plateau pillar) — **post 4523**, future
**2026-08-06 15:00**, featured_media 4522 (alt set), FAQPage yes, 8 internal links, 0 dashes.
Publish check PASS. Copywriting audit PASS (1 pass). Keyword validation: DEFERRED. Excerpt 157.
• [SCHEDULED] grip-and-grind-vs-lattice — **post 4525**, future **2026-08-10 15:00**,
featured_media 4524 (alt set), FAQPage yes, 6 internal links, 0 dashes/banned. Publish check
PASS. Comparison-table format; distinct from lattice-training-app-alternative (links to it).
• [SCHEDULED] get-stronger-climbing-without-a-hangboard — **post 4527**, future **2026-08-13
15:00**, featured_media 4526 (alt set), FAQPage yes, 7 internal links, 0 dashes/banned. PASS.
• [DRY-RUN PREPPED] crimpd-vs-lattice-vs-grip-and-grind — full draft in
`drafts/crimpd-vs-lattice-vs-grip-and-grind.html`, publish spec in the `.PUBLISH.md` sidecar.
~1670 words, FAQPage + 4 internal links, 0 dashes, 0 banned terms, copy audit PASS (1 pass),
competitor facts web-verified/corrected. **WOULD-schedule Mon Aug 17 15:00 as post `future`.** No
WP id yet (DRY_RUN, no POST). Keyword volume DEFERRED (Ahrefs). Live run: upload card, POST, verify.
• [TODO] best-climbing-apps-for-technique
• [TODO] best-climbing-training-apps-2026 (comparison hub)
• [TODO] beginner-climbing-training-plan

Outreach — Gmail drafts (sara@sendedition.com), NEVER sent

**RULE (Sara, runs 1-2): OUTREACH CHANNEL = PRESS / REVIEW OUTLETS ONLY.**
Screen every target for competitive overlap first. Coaching/training BRANDS that sell their own
plans, courses, coaching, or apps (Power Company, Climb Strong, Lattice, Crimpd, TrainingBeta,
Uphill Athlete, etc.) are COMPETITORS, not promoters => do NOT pitch them.
GYMS are DEPRIORITIZED (Sara, run 2): low leverage (one small local audience per pitch, needs the
gym to actively distribute, overlap risk from gym coaching/classes). Do NOT pitch gyms unless Sara
explicitly reopens it.
Focus = editorial press + review sites (they don't sell training, reach many climbers at once, and
a roundup mention = durable referral traffic + a backlink that feeds the SEO push).
Candidate press/review targets to research next run (find + verify contact first):
GearJunkie (drafted), climbing.com, aitoolsbakery.com, 99Boulders, Gripped (gripped.com),
UKClimbing gear desk, OutdoorGearLab, Moja Gear (if active), plus climbing-app roundup bloggers.
• [DRAFTED] GearJunkie — Sean McCoy (Editor-in-Chief), sean@gearjunkie.com. Verified on
gearjunkie.com/contact + /about masthead. Draft id **r-6024048118551403320**. Press = valid.
CTA rewritten to reply-and-get-free-login (Sara feedback: weak CTA -> concrete yes/no ask).
• [REMOVED, COMPETITOR] Power Company Climbing (Kris Hampton) — sells custom plans/coaching/
Academy courses to the same self-coached climbers. Draft TRASHED per Sara.
• [REMOVED, COMPETITOR] Climb Strong (Steve Bechtel) — sells training programs/books/coach
seminars. Draft TRASHED per Sara.
• [NEEDS SARA] climbing.com — submissions email is JS-obfuscated (unreadable via fetch), and the
public submissions channel is for adventure/features, not gear/app roundups; gear-desk contact
not public. No verified email => not drafted. Suggest Sara use the site contact form or a known
gear editor. (Press = valid target once a contact is found.)
• [NEEDS SARA] aitoolsbakery.com — contact page is a form only, author anonymous, no public email.
No verified email => not drafted. Suggest Sara submit via aitoolsbakery.com/contact form.
(Review site = valid target.)
• [DRAFTED] Gripped (gripped.com) — Brandon Pullan, editor, brandon@gripped.com. VERIFIED on
gripped.com/contact/editorial/ (they take reviews on query). Draft id **r-593028694553818023**.
• [DRAFTED, INFERRED EMAIL] 99Boulders — Alex Beale (owner/editor, confirmed) but site is
contact-form-only; address alex@99boulders.com is the standard owner-firstname pattern, NOT
verified. Draft id **r-5186068179908569882**. Sara: confirm address or paste into their form
before sending. Best content fit (beginner-focused app guides).
• [NEEDS SARA] UKClimbing — contact page gated (402); UKC Gear desk / Dan Bailey. UK-based. Use
their site contact form. Valid press target.
• [DROPPED, POOR FIT] OutdoorGearLab — independent-purchase physical-gear lab; no app roundups,
won't accept free products. Not a fit for a software pitch.

Backlink outreach (run 2) — form-ready pitches delivered, file: backlink-outreach-pitches.md

Target = existing "best climbing apps" lists that rank and lack a movement-first app (link + gap).
All three are CONTACT-FORM ONLY (no public email), so delivered as paste-into-form pitches, NOT
Gmail drafts (guessing inbox addresses would bounce). Personalized to each site's actual list.
• [DEAD, DROPPED] The Climbing Guy — Sara reports theclimbingguy.com is no longer an active
website (2026-07-27). Removed as a target.
• [SENT by Sara] Hike The Planet — hikethepla.net/climbing-apps/ (Timothy Carlson). Sara submitted
the contact form 2026-07-27. Awaiting reply.
• [DRAFTED, direct email] Climbing House / Teddy Dondanville — their contact form kept failing with
a reCaptcha error, so converted to a DIRECT email to Teddy's verified personal address
twdondanville@gmail.com (from twdondanville.com). He's a freelance climbing writer across Climbing
House, Climbing.com, FlashPumped, so a direct relationship is higher value than one form.
Gmail draft id **r3562809833224128943**. New voice (leads with his work).
• Replacement target for The Climbing Guy: goclimbr.com = COMPETITOR (makes its own app), skipped;
flashpumped.com/contact = 404. Find another live roundup next run.
• reCaptcha tip for Sara on other forms: usually a browser/extension issue; try incognito or
disable ad-block/privacy extensions, which often break reCaptcha.
• Note: GearJunkie / Gripped / 99Boulders drafts (above) ALSO yield backlinks if they cover it.
• Later backlink targets (not pitched): Climbing Business Journal (new-products roundups),
boulderinginfo.online, climbing.com "6 Best Climbing Apps" (gated contact).

Needs Sara (unchanged, do not attempt)

• Google Search Console: DONE separately (property sc-domain:gripandgrindclimber.com under
sara.12.wade@gmail.com; wired into the monthly ranking-eval scheduled task).
• Review/star-rating schema — no genuine ratings; do not fabricate.
• Sending any outreach email — Sara sends.
• Reddit/UKClimbing participation — real human only.
• sendedition -> gripandgrind 301 migration + Send Edition articles — needs sendedition.com WP
creds + Sara's go-ahead.

PR — DATA-STORY PRESS RELEASE (PARKED, trigger = sample size)

Sara likes the data-story angle. Current assessments = **45 (brand new, as of 2026-07-27)** => far
too thin to pitch. DO NOT run until the sample is real.
• **Trigger:** ~1,000 assessed climbers for a headline release ("we analyzed 1,000+ climbers").
Optional softer "early findings" pitch to 99Boulders ONLY once past a few hundred, if the
per-grade pattern is already striking. Sara will flag when she crosses the threshold.
• **Data spec to pull when ready** (from the movement-limiter assessment):
1. Headline cut: primary movement limiter by grade band (V0-V2 / V3-V4 / V5-V6) — the shift is
the story (e.g., footwork dominates low, route-reading/fear rises with grade).
2. Overall: single most common movement limiter across all climbers.
3. Secondary cuts: boulder vs rope; self-reported beginner vs intermediate.
4. Honest framing: report UNIQUE climbers (not raw assessments); disclose self-selected app
users, not a random sample; use clean "more than X" numbers.
5. Headline candidate: "The #1 thing holding climbers back at each grade isn't strength."
• Pair the release with direct pitches (do NOT rely on paid wire alone; wire = mostly nofollow +
duplicate-content, low SEO value). Reserve paid wire only if there's budget behind a real hook.
• Routine/scheduled press releases = NOT recommended (low ROI for a small app). Earned coverage
via targeted editor pitches is the channel.

NEXT RUN should:

0. **If LIVE (DRY_RUN=0): publish the already-prepped crimpd draft first.** Re-stage/recreate the
card render helper + publish helper (not in this repo, see env notes), generate the featured card
per the `.PUBLISH.md` sidecar, POST `drafts/crimpd-vs-lattice-vs-grip-and-grind.html` as `future`
Mon Aug 17 15:00 with the excerpt/slug/title/category/author in the sidecar, upload+attach the
card with alt text, then run the publish check. Record the WP id here.
1. Reconcile against WP slugs + Gmail drafts, then **score the Opportunity Queue above with
PRIORITIZATION-MODEL.md and work the highest, not the top of the list.**
2. If browser+Ahrefs available, validate keywords (updates Confidence 0.6 → 0.8/1.0 and re-ranks the
queue) for posts 4521/4523/4525/4527 (retro), the crimpd draft, and the next articles.
3. Current top-2 content by score: **crimpd-vs-lattice-vs-grip-and-grind** (prepped), then
**best-climbing-apps-for-technique** (write). Slots **Mon Aug 17 & Thu Aug 20 15:00** (last scheduled = Aug 13).
4. Outreach = PRESS/REVIEW ONLY (cheap, high-ROI, off the 2/run cap): find a verified email for
climbing.com's gear desk; add Climbing Business Journal; find a live replacement roundup for the
dead Climbing Guy.
5. Data-story press release stays PARKED until Sara crosses ~1,000 assessments (currently ~45).

SCHEDULED POSTS SO FAR (2/week, Mon+Thu 15:00)

Jul 27 stuck-at-v4 (live) | Jul 30 lattice-training-app-alternative | Aug 3 (4521)
best-climbing-training-app-for-beginners | Aug 6 (4523) why-youre-stuck-climbing-plateau |
Aug 10 (4525) grip-and-grind-vs-lattice | Aug 13 (4527) get-stronger-climbing-without-a-hangboard.
✉︎ Send me a briefing now ↻ Refresh
← all departments
Grip & Grind · autonomous departments · ops.dishingwithmia.com