diff --git a/scripts/check.mjs b/scripts/check.mjs index f73e8d0..eee4532 100644 --- a/scripts/check.mjs +++ b/scripts/check.mjs @@ -211,6 +211,7 @@ const requestedConceptSlugs = [ "living-story-loop", "groundtruth-audit-loop", "recovery-proof-loop", + "refund-follow-up-loop", ]; const submissionPromptAnchors = new Map([ ["ticket-to-pr-ready-loop", ["bug report", "customer complaint"]], @@ -267,6 +268,10 @@ const submissionPromptAnchors = new Map([ "recovery-proof-loop", ["disposable, isolated clean-room", "actual RPO and RTO", "never overwrite production"], ], + [ + "refund-follow-up-loop", + ["Start the claim now", "keep following up", "genuinely blocked"], + ], ]); const beginnerClarityAnchors = new Map([ ["promise-to-proof-loop", ["marketing", "current product behavior", "customer trust"]], @@ -302,6 +307,10 @@ const beginnerClarityAnchors = new Map([ "recovery-proof-loop", ["real recovery point", "representative business reads and writes", "restored production data"], ], + [ + "refund-follow-up-loop", + ["pending refund is progress, not success", "money actually arrives", "permissions already granted"], + ], ]); assert.equal(collection.mainEntity.numberOfItems, loops.length); @@ -319,7 +328,7 @@ assert.deepEqual(agentLoopTerm.sameAs, [ "https://code.claude.com/docs/en/agent-sdk/agent-loop", "https://arxiv.org/abs/2210.03629", ]); -assert.equal(loops.length, 49); +assert.equal(loops.length, 50); assert.equal(slugs.size, loops.length); assert.equal(featuredLoopSlugs.length, 3); assert.equal(new Set(featuredLoopSlugs).size, featuredLoopSlugs.length); @@ -805,6 +814,7 @@ assert(html.includes("Alex Burkhart (@neuralwhisperer)")); assert(html.includes("Buddy Hadry (@buddyhadry)")); assert(html.includes("Mohamed (@aivibecode)")); assert(html.includes("Eric Lott")); +assert(html.includes("Jason (@jxnlco)")); for (const removedSlug of [ "focused-ai-signal-brief", "hands-on-tool-evaluation-loop", diff --git a/scripts/loop-data.mjs b/scripts/loop-data.mjs index 934b601..942d8e5 100644 --- a/scripts/loop-data.mjs +++ b/scripts/loop-data.mjs @@ -7,7 +7,7 @@ export const site = { description: "Practical AI agent workflows for engineering, research, editorial work, evaluation, and operations.", updated: "2026-06-21", - socialImageVersion: "20260621", + socialImageVersion: "20260621-2", socialImageExtension: "png", socialImageMimeType: "image/png", }; @@ -21,9 +21,9 @@ export const categories = [ ]; export const featuredLoopSlugs = [ + "refund-follow-up-loop", "five-minute-repository-maintainer-loop", "full-product-evaluation-loop", - "fresh-clone-loop", ]; const categorySlugByLabel = new Map([ @@ -35,6 +35,7 @@ const categorySlugByLabel = new Map([ ["AI data operations workflow", "operations"], ["AI deployment operations workflow", "operations"], ["AI recovery operations workflow", "operations"], + ["AI consumer advocacy workflow", "operations"], ["AI search visibility workflow", "content"], ["AI editorial workflow", "content"], ["AI visual design workflow", "design"], @@ -2062,6 +2063,51 @@ export const loops = [ "production-error-sweep", ], }, + { + number: "050", + slug: "refund-follow-up-loop", + title: "The refund follow-up loop", + summary: + "Keeps pursuing a refund until the money arrives or the agent genuinely needs the user.", + seoTitle: "Refund Follow-Up Loop for AI Agents | Loop Library", + description: + "A persistent follow-up workflow that starts a refund claim, watches replies and deadlines, and keeps the case moving until the money arrives.", + categoryLabel: "AI consumer advocacy workflow", + author: "Jason (@jxnlco)", + sourceUrl: "https://x.com/jxnlco", + published: "2026-06-21", + modified: "2026-06-21", + prompt: + "Get my refund for [company and charge info]. Start the claim now through an approved support channel, then keep following up on replies, promises, and deadlines until the refund arrives. Keep a short case note so each follow-up has context. Stop only when the refund is received or you are genuinely blocked and need me.", + verifyTitle: + "The refund is received, or a genuine blocker requires the user.", + verifyDetail: + "An open claim, promise, or pending refund is progress, not success; keep following up until the money arrives or no approved next step remains.", + useWhen: + "Use this when someone owes you a refund and getting it may take more than one support conversation or follow-up.", + steps: [ + "Gather the charge, reason for the refund, useful evidence, current status, and any earlier conversation or promise.", + "Start or continue the claim through a support channel the user has approved, then note what happened and what should happen next.", + "Follow up whenever a reply, promise, or deadline creates a useful next step; keep the case moving instead of treating a pending status as done.", + "Stop when the refund arrives, or explain the genuine blocker when the next useful step needs the user.", + ], + why: + "Refunds often stall because a promise or pending status gets treated as completion. This loop keeps ownership through delays and handoffs until the money actually arrives.", + note: + "Use truthful information and the permissions already granted. If the next step needs a new permission or decision, bring that blocker to the user instead of stopping silently.", + keywords: [ + "refund follow up", + "consumer advocacy", + "customer support escalation", + "refund status tracking", + "case log", + ], + related: [ + "promise-to-proof-loop", + "living-story-loop", + "recent-feedback-sweep", + ], + }, ]; validateLoopData(loops); diff --git a/site/assets/social/100-percent-test-coverage-loop-20260621-2.png b/site/assets/social/100-percent-test-coverage-loop-20260621-2.png new file mode 100644 index 0000000..04b1d19 Binary files /dev/null and b/site/assets/social/100-percent-test-coverage-loop-20260621-2.png differ diff --git a/site/assets/social/accessibility-repair-loop-20260621-2.png b/site/assets/social/accessibility-repair-loop-20260621-2.png new file mode 100644 index 0000000..1b902ca Binary files /dev/null and b/site/assets/social/accessibility-repair-loop-20260621-2.png differ diff --git a/site/assets/social/architecture-satisfaction-loop-20260621-2.png b/site/assets/social/architecture-satisfaction-loop-20260621-2.png new file mode 100644 index 0000000..f50e43f Binary files /dev/null and b/site/assets/social/architecture-satisfaction-loop-20260621-2.png differ diff --git a/site/assets/social/artifact-to-skill-loop-20260621-2.png b/site/assets/social/artifact-to-skill-loop-20260621-2.png new file mode 100644 index 0000000..5940397 Binary files /dev/null and b/site/assets/social/artifact-to-skill-loop-20260621-2.png differ diff --git a/site/assets/social/autonomy-loop-20260621-2.png b/site/assets/social/autonomy-loop-20260621-2.png new file mode 100644 index 0000000..401f093 Binary files /dev/null and b/site/assets/social/autonomy-loop-20260621-2.png differ diff --git a/site/assets/social/axelrod-subagent-arena-loop-20260621-2.png b/site/assets/social/axelrod-subagent-arena-loop-20260621-2.png new file mode 100644 index 0000000..95280ac Binary files /dev/null and b/site/assets/social/axelrod-subagent-arena-loop-20260621-2.png differ diff --git a/site/assets/social/boeing-747-benchmark-20260621-2.png b/site/assets/social/boeing-747-benchmark-20260621-2.png new file mode 100644 index 0000000..bebcdf1 Binary files /dev/null and b/site/assets/social/boeing-747-benchmark-20260621-2.png differ diff --git a/site/assets/social/clodex-adversarial-review-loop-20260621-2.png b/site/assets/social/clodex-adversarial-review-loop-20260621-2.png new file mode 100644 index 0000000..270b21e Binary files /dev/null and b/site/assets/social/clodex-adversarial-review-loop-20260621-2.png differ diff --git a/site/assets/social/codex-completion-contract-loop-20260621-2.png b/site/assets/social/codex-completion-contract-loop-20260621-2.png new file mode 100644 index 0000000..e617f8b Binary files /dev/null and b/site/assets/social/codex-completion-contract-loop-20260621-2.png differ diff --git a/site/assets/social/cold-load-trimmer-loop-20260621-2.png b/site/assets/social/cold-load-trimmer-loop-20260621-2.png new file mode 100644 index 0000000..87f1c9c Binary files /dev/null and b/site/assets/social/cold-load-trimmer-loop-20260621-2.png differ diff --git a/site/assets/social/customer-ai-deployment-loop-20260621-2.png b/site/assets/social/customer-ai-deployment-loop-20260621-2.png new file mode 100644 index 0000000..266d163 Binary files /dev/null and b/site/assets/social/customer-ai-deployment-loop-20260621-2.png differ diff --git a/site/assets/social/devils-advocate-design-loop-20260621-2.png b/site/assets/social/devils-advocate-design-loop-20260621-2.png new file mode 100644 index 0000000..542b4d5 Binary files /dev/null and b/site/assets/social/devils-advocate-design-loop-20260621-2.png differ diff --git a/site/assets/social/easy-onboarding-loop-20260621-2.png b/site/assets/social/easy-onboarding-loop-20260621-2.png new file mode 100644 index 0000000..5ab9e65 Binary files /dev/null and b/site/assets/social/easy-onboarding-loop-20260621-2.png differ diff --git a/site/assets/social/exhaustive-logging-coverage-loop-20260621-2.png b/site/assets/social/exhaustive-logging-coverage-loop-20260621-2.png new file mode 100644 index 0000000..cda40ae Binary files /dev/null and b/site/assets/social/exhaustive-logging-coverage-loop-20260621-2.png differ diff --git a/site/assets/social/five-minute-repository-maintainer-loop-20260621-2.png b/site/assets/social/five-minute-repository-maintainer-loop-20260621-2.png new file mode 100644 index 0000000..d05d1c6 Binary files /dev/null and b/site/assets/social/five-minute-repository-maintainer-loop-20260621-2.png differ diff --git a/site/assets/social/fresh-clone-loop-20260621-2.png b/site/assets/social/fresh-clone-loop-20260621-2.png new file mode 100644 index 0000000..5f11a12 Binary files /dev/null and b/site/assets/social/fresh-clone-loop-20260621-2.png differ diff --git a/site/assets/social/full-product-evaluation-loop-20260621-2.png b/site/assets/social/full-product-evaluation-loop-20260621-2.png new file mode 100644 index 0000000..046cebc Binary files /dev/null and b/site/assets/social/full-product-evaluation-loop-20260621-2.png differ diff --git a/site/assets/social/goal-forge-loop-20260621-2.png b/site/assets/social/goal-forge-loop-20260621-2.png new file mode 100644 index 0000000..dc7ecd5 Binary files /dev/null and b/site/assets/social/goal-forge-loop-20260621-2.png differ diff --git a/site/assets/social/groundtruth-audit-loop-20260621-2.png b/site/assets/social/groundtruth-audit-loop-20260621-2.png new file mode 100644 index 0000000..80a1a73 Binary files /dev/null and b/site/assets/social/groundtruth-audit-loop-20260621-2.png differ diff --git a/site/assets/social/housekeeper-loop-20260621-2.png b/site/assets/social/housekeeper-loop-20260621-2.png new file mode 100644 index 0000000..0094ad6 Binary files /dev/null and b/site/assets/social/housekeeper-loop-20260621-2.png differ diff --git a/site/assets/social/infinite-clickbait-loop-20260621-2.png b/site/assets/social/infinite-clickbait-loop-20260621-2.png new file mode 100644 index 0000000..f8106ad Binary files /dev/null and b/site/assets/social/infinite-clickbait-loop-20260621-2.png differ diff --git a/site/assets/social/living-story-loop-20260621-2.png b/site/assets/social/living-story-loop-20260621-2.png new file mode 100644 index 0000000..c7545ee Binary files /dev/null and b/site/assets/social/living-story-loop-20260621-2.png differ diff --git a/site/assets/social/loop-harness-verification-loop-20260621-2.png b/site/assets/social/loop-harness-verification-loop-20260621-2.png new file mode 100644 index 0000000..83b86d8 Binary files /dev/null and b/site/assets/social/loop-harness-verification-loop-20260621-2.png differ diff --git a/site/assets/social/loop-library-20260621-2.png b/site/assets/social/loop-library-20260621-2.png new file mode 100644 index 0000000..af7d235 Binary files /dev/null and b/site/assets/social/loop-library-20260621-2.png differ diff --git a/site/assets/social/multi-llm-convergence-loop-20260621-2.png b/site/assets/social/multi-llm-convergence-loop-20260621-2.png new file mode 100644 index 0000000..c798afd Binary files /dev/null and b/site/assets/social/multi-llm-convergence-loop-20260621-2.png differ diff --git a/site/assets/social/nightly-changelog-sweep-20260621-2.png b/site/assets/social/nightly-changelog-sweep-20260621-2.png new file mode 100644 index 0000000..47aa6db Binary files /dev/null and b/site/assets/social/nightly-changelog-sweep-20260621-2.png differ diff --git a/site/assets/social/overnight-docs-sweep-20260621-2.png b/site/assets/social/overnight-docs-sweep-20260621-2.png new file mode 100644 index 0000000..e0e2ceb Binary files /dev/null and b/site/assets/social/overnight-docs-sweep-20260621-2.png differ diff --git a/site/assets/social/pixel-safe-css-trim-loop-20260621-2.png b/site/assets/social/pixel-safe-css-trim-loop-20260621-2.png new file mode 100644 index 0000000..c600ca6 Binary files /dev/null and b/site/assets/social/pixel-safe-css-trim-loop-20260621-2.png differ diff --git a/site/assets/social/post-release-baseline-loop-20260621-2.png b/site/assets/social/post-release-baseline-loop-20260621-2.png new file mode 100644 index 0000000..6ee204a Binary files /dev/null and b/site/assets/social/post-release-baseline-loop-20260621-2.png differ diff --git a/site/assets/social/prepare-new-project-loop-20260621-2.png b/site/assets/social/prepare-new-project-loop-20260621-2.png new file mode 100644 index 0000000..d83fd95 Binary files /dev/null and b/site/assets/social/prepare-new-project-loop-20260621-2.png differ diff --git a/site/assets/social/product-update-podcast-loop-20260621-2.png b/site/assets/social/product-update-podcast-loop-20260621-2.png new file mode 100644 index 0000000..ec4c218 Binary files /dev/null and b/site/assets/social/product-update-podcast-loop-20260621-2.png differ diff --git a/site/assets/social/production-data-cleanup-loop-20260621-2.png b/site/assets/social/production-data-cleanup-loop-20260621-2.png new file mode 100644 index 0000000..4740533 Binary files /dev/null and b/site/assets/social/production-data-cleanup-loop-20260621-2.png differ diff --git a/site/assets/social/production-error-sweep-20260621-2.png b/site/assets/social/production-error-sweep-20260621-2.png new file mode 100644 index 0000000..b309261 Binary files /dev/null and b/site/assets/social/production-error-sweep-20260621-2.png differ diff --git a/site/assets/social/promise-to-proof-loop-20260621-2.png b/site/assets/social/promise-to-proof-loop-20260621-2.png new file mode 100644 index 0000000..d12cd45 Binary files /dev/null and b/site/assets/social/promise-to-proof-loop-20260621-2.png differ diff --git a/site/assets/social/propagation-compliance-loop-20260621-2.png b/site/assets/social/propagation-compliance-loop-20260621-2.png new file mode 100644 index 0000000..854ae8f Binary files /dev/null and b/site/assets/social/propagation-compliance-loop-20260621-2.png differ diff --git a/site/assets/social/quality-streak-loop-20260621-2.png b/site/assets/social/quality-streak-loop-20260621-2.png new file mode 100644 index 0000000..f89c1dd Binary files /dev/null and b/site/assets/social/quality-streak-loop-20260621-2.png differ diff --git a/site/assets/social/recent-feedback-sweep-20260621-2.png b/site/assets/social/recent-feedback-sweep-20260621-2.png new file mode 100644 index 0000000..085ac8d Binary files /dev/null and b/site/assets/social/recent-feedback-sweep-20260621-2.png differ diff --git a/site/assets/social/recovery-proof-loop-20260621-2.png b/site/assets/social/recovery-proof-loop-20260621-2.png new file mode 100644 index 0000000..d23b92a Binary files /dev/null and b/site/assets/social/recovery-proof-loop-20260621-2.png differ diff --git a/site/assets/social/refund-follow-up-loop-20260621-2.png b/site/assets/social/refund-follow-up-loop-20260621-2.png new file mode 100644 index 0000000..5119809 Binary files /dev/null and b/site/assets/social/refund-follow-up-loop-20260621-2.png differ diff --git a/site/assets/social/repository-cleanup-loop-20260621-2.png b/site/assets/social/repository-cleanup-loop-20260621-2.png new file mode 100644 index 0000000..321bacf Binary files /dev/null and b/site/assets/social/repository-cleanup-loop-20260621-2.png differ diff --git a/site/assets/social/revolve-self-improvement-loop-20260621-2.png b/site/assets/social/revolve-self-improvement-loop-20260621-2.png new file mode 100644 index 0000000..4050a83 Binary files /dev/null and b/site/assets/social/revolve-self-improvement-loop-20260621-2.png differ diff --git a/site/assets/social/self-improving-champion-loop-20260621-2.png b/site/assets/social/self-improving-champion-loop-20260621-2.png new file mode 100644 index 0000000..a910e86 Binary files /dev/null and b/site/assets/social/self-improving-champion-loop-20260621-2.png differ diff --git a/site/assets/social/seo-geo-visibility-loop-20260621-2.png b/site/assets/social/seo-geo-visibility-loop-20260621-2.png new file mode 100644 index 0000000..e86d7cb Binary files /dev/null and b/site/assets/social/seo-geo-visibility-loop-20260621-2.png differ diff --git a/site/assets/social/stale-safe-batch-release-loop-20260621-2.png b/site/assets/social/stale-safe-batch-release-loop-20260621-2.png new file mode 100644 index 0000000..e263759 Binary files /dev/null and b/site/assets/social/stale-safe-batch-release-loop-20260621-2.png differ diff --git a/site/assets/social/strip-miner-loop-20260621-2.png b/site/assets/social/strip-miner-loop-20260621-2.png new file mode 100644 index 0000000..4399c7e Binary files /dev/null and b/site/assets/social/strip-miner-loop-20260621-2.png differ diff --git a/site/assets/social/sub-50ms-page-load-loop-20260621-2.png b/site/assets/social/sub-50ms-page-load-loop-20260621-2.png new file mode 100644 index 0000000..8805ced Binary files /dev/null and b/site/assets/social/sub-50ms-page-load-loop-20260621-2.png differ diff --git a/site/assets/social/test-stabilizer-loop-20260621-2.png b/site/assets/social/test-stabilizer-loop-20260621-2.png new file mode 100644 index 0000000..188576f Binary files /dev/null and b/site/assets/social/test-stabilizer-loop-20260621-2.png differ diff --git a/site/assets/social/test-suite-speed-loop-20260621-2.png b/site/assets/social/test-suite-speed-loop-20260621-2.png new file mode 100644 index 0000000..e50f98f Binary files /dev/null and b/site/assets/social/test-suite-speed-loop-20260621-2.png differ diff --git a/site/assets/social/ticket-to-pr-ready-loop-20260621-2.png b/site/assets/social/ticket-to-pr-ready-loop-20260621-2.png new file mode 100644 index 0000000..d57625d Binary files /dev/null and b/site/assets/social/ticket-to-pr-ready-loop-20260621-2.png differ diff --git a/site/assets/social/ui-ux-score-loop-20260621-2.png b/site/assets/social/ui-ux-score-loop-20260621-2.png new file mode 100644 index 0000000..a084be7 Binary files /dev/null and b/site/assets/social/ui-ux-score-loop-20260621-2.png differ diff --git a/site/assets/social/war-loops-frontend-designer-20260621-2.png b/site/assets/social/war-loops-frontend-designer-20260621-2.png new file mode 100644 index 0000000..6dd3ad7 Binary files /dev/null and b/site/assets/social/war-loops-frontend-designer-20260621-2.png differ diff --git a/site/catalog.json b/site/catalog.json index 5a45ac6..97580db 100644 --- a/site/catalog.json +++ b/site/catalog.json @@ -20,7 +20,7 @@ "adaptation": "Use only details supplied by the user or found in systems they placed in scope. Ask when a missing detail is necessary for safety or success." }, "updated": "2026-06-21", - "loopCount": 49, + "loopCount": 50, "categories": [ { "slug": "engineering", @@ -2411,6 +2411,58 @@ "url": "https://signals.forwardfuture.ai/loop-library/loops/production-error-sweep/" } ] + }, + { + "number": "050", + "slug": "refund-follow-up-loop", + "title": "The refund follow-up loop", + "url": "https://signals.forwardfuture.ai/loop-library/loops/refund-follow-up-loop/", + "category": { + "slug": "operations", + "label": "Operations" + }, + "author": "Jason (@jxnlco)", + "published": "2026-06-21", + "modified": "2026-06-21", + "description": "A persistent follow-up workflow that starts a refund claim, watches replies and deadlines, and keeps the case moving until the money arrives.", + "useWhen": "Use this when someone owes you a refund and getting it may take more than one support conversation or follow-up.", + "prompt": "Get my refund for [company and charge info]. Start the claim now through an approved support channel, then keep following up on replies, promises, and deadlines until the refund arrives. Keep a short case note so each follow-up has context. Stop only when the refund is received or you are genuinely blocked and need me.", + "verification": { + "title": "The refund is received, or a genuine blocker requires the user.", + "detail": "An open claim, promise, or pending refund is progress, not success; keep following up until the money arrives or no approved next step remains." + }, + "steps": [ + "Gather the charge, reason for the refund, useful evidence, current status, and any earlier conversation or promise.", + "Start or continue the claim through a support channel the user has approved, then note what happened and what should happen next.", + "Follow up whenever a reply, promise, or deadline creates a useful next step; keep the case moving instead of treating a pending status as done.", + "Stop when the refund arrives, or explain the genuine blocker when the next useful step needs the user." + ], + "why": "Refunds often stall because a promise or pending status gets treated as completion. This loop keeps ownership through delays and handoffs until the money actually arrives.", + "implementationNote": "Use truthful information and the permissions already granted. If the next step needs a new permission or decision, bring that blocker to the user instead of stopping silently.", + "keywords": [ + "refund follow up", + "consumer advocacy", + "customer support escalation", + "refund status tracking", + "case log" + ], + "related": [ + { + "slug": "promise-to-proof-loop", + "title": "The promise-to-proof loop", + "url": "https://signals.forwardfuture.ai/loop-library/loops/promise-to-proof-loop/" + }, + { + "slug": "living-story-loop", + "title": "The Living Story loop", + "url": "https://signals.forwardfuture.ai/loop-library/loops/living-story-loop/" + }, + { + "slug": "recent-feedback-sweep", + "title": "The recent-feedback sweep", + "url": "https://signals.forwardfuture.ai/loop-library/loops/recent-feedback-sweep/" + } + ] } ] } diff --git a/site/catalog.md b/site/catalog.md index 7276fee..5f7b36e 100644 --- a/site/catalog.md +++ b/site/catalog.md @@ -450,3 +450,12 @@ URL above. - Verify: Every required recovery scenario succeeds repeatedly from a real recovery point. Fresh clean-room restores satisfy integrity, dependency, representative read/write, RPO, and RTO checks under unchanged criteria, with failures preserved as regression drills and restored data destroyed securely. - Keywords: backup recovery testing, disaster recovery drill, RPO and RTO validation, clean room restore, recovery proof - Related: [The quality streak loop](https://signals.forwardfuture.ai/loop-library/loops/quality-streak-loop/), [The post-release baseline loop](https://signals.forwardfuture.ai/loop-library/loops/post-release-baseline-loop/), [The production error sweep](https://signals.forwardfuture.ai/loop-library/loops/production-error-sweep/) + +## 050 — [The refund follow-up loop](https://signals.forwardfuture.ai/loop-library/loops/refund-follow-up-loop/) + +- Category: Operations +- Use when: Use this when someone owes you a refund and getting it may take more than one support conversation or follow-up. +- Prompt: Get my refund for [company and charge info]. Start the claim now through an approved support channel, then keep following up on replies, promises, and deadlines until the refund arrives. Keep a short case note so each follow-up has context. Stop only when the refund is received or you are genuinely blocked and need me. +- Verify: The refund is received, or a genuine blocker requires the user. An open claim, promise, or pending refund is progress, not success; keep following up until the money arrives or no approved next step remains. +- Keywords: refund follow up, consumer advocacy, customer support escalation, refund status tracking, case log +- Related: [The promise-to-proof loop](https://signals.forwardfuture.ai/loop-library/loops/promise-to-proof-loop/), [The Living Story loop](https://signals.forwardfuture.ai/loop-library/loops/living-story-loop/), [The recent-feedback sweep](https://signals.forwardfuture.ai/loop-library/loops/recent-feedback-sweep/) diff --git a/site/catalog.txt b/site/catalog.txt index 7276fee..5f7b36e 100644 --- a/site/catalog.txt +++ b/site/catalog.txt @@ -450,3 +450,12 @@ URL above. - Verify: Every required recovery scenario succeeds repeatedly from a real recovery point. Fresh clean-room restores satisfy integrity, dependency, representative read/write, RPO, and RTO checks under unchanged criteria, with failures preserved as regression drills and restored data destroyed securely. - Keywords: backup recovery testing, disaster recovery drill, RPO and RTO validation, clean room restore, recovery proof - Related: [The quality streak loop](https://signals.forwardfuture.ai/loop-library/loops/quality-streak-loop/), [The post-release baseline loop](https://signals.forwardfuture.ai/loop-library/loops/post-release-baseline-loop/), [The production error sweep](https://signals.forwardfuture.ai/loop-library/loops/production-error-sweep/) + +## 050 — [The refund follow-up loop](https://signals.forwardfuture.ai/loop-library/loops/refund-follow-up-loop/) + +- Category: Operations +- Use when: Use this when someone owes you a refund and getting it may take more than one support conversation or follow-up. +- Prompt: Get my refund for [company and charge info]. Start the claim now through an approved support channel, then keep following up on replies, promises, and deadlines until the refund arrives. Keep a short case note so each follow-up has context. Stop only when the refund is received or you are genuinely blocked and need me. +- Verify: The refund is received, or a genuine blocker requires the user. An open claim, promise, or pending refund is progress, not success; keep following up until the money arrives or no approved next step remains. +- Keywords: refund follow up, consumer advocacy, customer support escalation, refund status tracking, case log +- Related: [The promise-to-proof loop](https://signals.forwardfuture.ai/loop-library/loops/promise-to-proof-loop/), [The Living Story loop](https://signals.forwardfuture.ai/loop-library/loops/living-story-loop/), [The recent-feedback sweep](https://signals.forwardfuture.ai/loop-library/loops/recent-feedback-sweep/) diff --git a/site/feed.xml b/site/feed.xml index 880f6b2..46357da 100644 --- a/site/feed.xml +++ b/site/feed.xml @@ -549,4 +549,15 @@ A disaster-recovery validation workflow that restores randomly selected real recovery points, verifies integrity and RPO/RTO, and preserves failures as regression drills. + + The refund follow-up loop + https://signals.forwardfuture.ai/loop-library/loops/refund-follow-up-loop/ + + 2026-06-21T00:00:00-07:00 + 2026-06-21T00:00:00-07:00 + + Jason (@jxnlco) + + A persistent follow-up workflow that starts a refund claim, watches replies and deadlines, and keeps the case moving until the money arrives. + diff --git a/site/index.html b/site/index.html index 84db22f..c379948 100644 --- a/site/index.html +++ b/site/index.html @@ -58,11 +58,11 @@ />
-

Showing 49 loops

+

Showing 50 loops

@@ -1546,12 +1552,10 @@

data-copy-root data-category="engineering" data-published="2026-06-18" - data-featured="true" data-search="fresh clone clean environment readme onboarding setup documentation hidden assumptions disposable 0xumbra" >
- Featured Engineering By 0xUmbra
@@ -2478,6 +2482,42 @@

+ + +
+ Featured + Operations + By Jason (@jxnlco) +
+

+ + The refund follow-up loop + +

+

Keeps pursuing a refund until the money arrives or the agent genuinely needs the user.

+

+ Get my refund for [company and charge info]. Start the claim + now through an approved support channel, then keep following + up on replies, promises, and deadlines until the refund + arrives. Keep a short case note so each follow-up has + context. Stop only when the refund is received or you are + genuinely blocked and need me. +

+ + + + + + diff --git a/site/llms.txt b/site/llms.txt index 58dd60c..29bf4d2 100644 --- a/site/llms.txt +++ b/site/llms.txt @@ -35,4 +35,4 @@ For guided finding, auditing, repairing, adapting, and designing loops: `npx skills add Forward-Future/loop-library --skill loop-library -g` -Catalog updated 2026-06-21. Published loops: 49. +Catalog updated 2026-06-21. Published loops: 50. diff --git a/site/loops/100-percent-test-coverage-loop/index.html b/site/loops/100-percent-test-coverage-loop/index.html index 2acee93..770a293 100644 --- a/site/loops/100-percent-test-coverage-loop/index.html +++ b/site/loops/100-percent-test-coverage-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/accessibility-repair-loop/index.html b/site/loops/accessibility-repair-loop/index.html index 6e324e1..bfdf353 100644 --- a/site/loops/accessibility-repair-loop/index.html +++ b/site/loops/accessibility-repair-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/accessibility-repair-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/accessibility-repair-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/architecture-satisfaction-loop/index.html b/site/loops/architecture-satisfaction-loop/index.html index 9e76b9a..3770900 100644 --- a/site/loops/architecture-satisfaction-loop/index.html +++ b/site/loops/architecture-satisfaction-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/architecture-satisfaction-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/architecture-satisfaction-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/artifact-to-skill-loop/index.html b/site/loops/artifact-to-skill-loop/index.html index dd6aaf9..47eece1 100644 --- a/site/loops/artifact-to-skill-loop/index.html +++ b/site/loops/artifact-to-skill-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/artifact-to-skill-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/artifact-to-skill-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/autonomy-loop/index.html b/site/loops/autonomy-loop/index.html index 8394b86..af9d68d 100644 --- a/site/loops/autonomy-loop/index.html +++ b/site/loops/autonomy-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/autonomy-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/autonomy-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/axelrod-subagent-arena-loop/index.html b/site/loops/axelrod-subagent-arena-loop/index.html index b8e1087..76cbbe4 100644 --- a/site/loops/axelrod-subagent-arena-loop/index.html +++ b/site/loops/axelrod-subagent-arena-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/axelrod-subagent-arena-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/axelrod-subagent-arena-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/boeing-747-benchmark/index.html b/site/loops/boeing-747-benchmark/index.html index 850fc59..796633c 100644 --- a/site/loops/boeing-747-benchmark/index.html +++ b/site/loops/boeing-747-benchmark/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/boeing-747-benchmark-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/boeing-747-benchmark-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/clodex-adversarial-review-loop/index.html b/site/loops/clodex-adversarial-review-loop/index.html index e3d4bbd..92d0b88 100644 --- a/site/loops/clodex-adversarial-review-loop/index.html +++ b/site/loops/clodex-adversarial-review-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/clodex-adversarial-review-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/clodex-adversarial-review-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/codex-completion-contract-loop/index.html b/site/loops/codex-completion-contract-loop/index.html index 257d4a5..55af02f 100644 --- a/site/loops/codex-completion-contract-loop/index.html +++ b/site/loops/codex-completion-contract-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/codex-completion-contract-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/codex-completion-contract-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/cold-load-trimmer-loop/index.html b/site/loops/cold-load-trimmer-loop/index.html index 72d2e31..6b0ba47 100644 --- a/site/loops/cold-load-trimmer-loop/index.html +++ b/site/loops/cold-load-trimmer-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/cold-load-trimmer-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/cold-load-trimmer-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/customer-ai-deployment-loop/index.html b/site/loops/customer-ai-deployment-loop/index.html index d1a7d84..50596cf 100644 --- a/site/loops/customer-ai-deployment-loop/index.html +++ b/site/loops/customer-ai-deployment-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/customer-ai-deployment-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/customer-ai-deployment-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/devils-advocate-design-loop/index.html b/site/loops/devils-advocate-design-loop/index.html index f45a553..2839d7a 100644 --- a/site/loops/devils-advocate-design-loop/index.html +++ b/site/loops/devils-advocate-design-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/devils-advocate-design-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/devils-advocate-design-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/easy-onboarding-loop/index.html b/site/loops/easy-onboarding-loop/index.html index 35285c6..1d2ab76 100644 --- a/site/loops/easy-onboarding-loop/index.html +++ b/site/loops/easy-onboarding-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/easy-onboarding-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/easy-onboarding-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/exhaustive-logging-coverage-loop/index.html b/site/loops/exhaustive-logging-coverage-loop/index.html index deb49ca..2910646 100644 --- a/site/loops/exhaustive-logging-coverage-loop/index.html +++ b/site/loops/exhaustive-logging-coverage-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/exhaustive-logging-coverage-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/exhaustive-logging-coverage-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/five-minute-repository-maintainer-loop/index.html b/site/loops/five-minute-repository-maintainer-loop/index.html index 202d0e3..14928fa 100644 --- a/site/loops/five-minute-repository-maintainer-loop/index.html +++ b/site/loops/five-minute-repository-maintainer-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/five-minute-repository-maintainer-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/five-minute-repository-maintainer-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/fresh-clone-loop/index.html b/site/loops/fresh-clone-loop/index.html index 690abec..2fa5772 100644 --- a/site/loops/fresh-clone-loop/index.html +++ b/site/loops/fresh-clone-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/fresh-clone-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/fresh-clone-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/full-product-evaluation-loop/index.html b/site/loops/full-product-evaluation-loop/index.html index bb4c2b1..3b8fcb3 100644 --- a/site/loops/full-product-evaluation-loop/index.html +++ b/site/loops/full-product-evaluation-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/full-product-evaluation-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/full-product-evaluation-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/goal-forge-loop/index.html b/site/loops/goal-forge-loop/index.html index 2f5df8b..1e8ff9f 100644 --- a/site/loops/goal-forge-loop/index.html +++ b/site/loops/goal-forge-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/goal-forge-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/goal-forge-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/groundtruth-audit-loop/index.html b/site/loops/groundtruth-audit-loop/index.html index f1bb0a6..aa2d2a4 100644 --- a/site/loops/groundtruth-audit-loop/index.html +++ b/site/loops/groundtruth-audit-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/groundtruth-audit-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/groundtruth-audit-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/housekeeper-loop/index.html b/site/loops/housekeeper-loop/index.html index b62c1a1..f7f9aaf 100644 --- a/site/loops/housekeeper-loop/index.html +++ b/site/loops/housekeeper-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/housekeeper-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/housekeeper-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/infinite-clickbait-loop/index.html b/site/loops/infinite-clickbait-loop/index.html index 5da3d87..65b78ab 100644 --- a/site/loops/infinite-clickbait-loop/index.html +++ b/site/loops/infinite-clickbait-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/infinite-clickbait-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/infinite-clickbait-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/living-story-loop/index.html b/site/loops/living-story-loop/index.html index fd51735..2a1626e 100644 --- a/site/loops/living-story-loop/index.html +++ b/site/loops/living-story-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/living-story-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/living-story-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/loop-harness-verification-loop/index.html b/site/loops/loop-harness-verification-loop/index.html index 30b8e6f..2686e18 100644 --- a/site/loops/loop-harness-verification-loop/index.html +++ b/site/loops/loop-harness-verification-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/loop-harness-verification-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/loop-harness-verification-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/multi-llm-convergence-loop/index.html b/site/loops/multi-llm-convergence-loop/index.html index 2150837..1e14c8a 100644 --- a/site/loops/multi-llm-convergence-loop/index.html +++ b/site/loops/multi-llm-convergence-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/multi-llm-convergence-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/multi-llm-convergence-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/nightly-changelog-sweep/index.html b/site/loops/nightly-changelog-sweep/index.html index db24dd6..1c1f7b6 100644 --- a/site/loops/nightly-changelog-sweep/index.html +++ b/site/loops/nightly-changelog-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/nightly-changelog-sweep-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/nightly-changelog-sweep-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/overnight-docs-sweep/index.html b/site/loops/overnight-docs-sweep/index.html index 20fe465..eae2490 100644 --- a/site/loops/overnight-docs-sweep/index.html +++ b/site/loops/overnight-docs-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/overnight-docs-sweep-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/overnight-docs-sweep-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/pixel-safe-css-trim-loop/index.html b/site/loops/pixel-safe-css-trim-loop/index.html index e4e03f3..a81b0a9 100644 --- a/site/loops/pixel-safe-css-trim-loop/index.html +++ b/site/loops/pixel-safe-css-trim-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/pixel-safe-css-trim-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/pixel-safe-css-trim-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/post-release-baseline-loop/index.html b/site/loops/post-release-baseline-loop/index.html index 8931518..6696171 100644 --- a/site/loops/post-release-baseline-loop/index.html +++ b/site/loops/post-release-baseline-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/post-release-baseline-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/post-release-baseline-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/prepare-new-project-loop/index.html b/site/loops/prepare-new-project-loop/index.html index c5db256..da54380 100644 --- a/site/loops/prepare-new-project-loop/index.html +++ b/site/loops/prepare-new-project-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/prepare-new-project-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/prepare-new-project-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/product-update-podcast-loop/index.html b/site/loops/product-update-podcast-loop/index.html index e981a75..c2dbe74 100644 --- a/site/loops/product-update-podcast-loop/index.html +++ b/site/loops/product-update-podcast-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/product-update-podcast-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/product-update-podcast-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/production-data-cleanup-loop/index.html b/site/loops/production-data-cleanup-loop/index.html index 834ed6c..4a51e25 100644 --- a/site/loops/production-data-cleanup-loop/index.html +++ b/site/loops/production-data-cleanup-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-data-cleanup-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-data-cleanup-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/production-error-sweep/index.html b/site/loops/production-error-sweep/index.html index 53e0e5e..bddf0cf 100644 --- a/site/loops/production-error-sweep/index.html +++ b/site/loops/production-error-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-error-sweep-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-error-sweep-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/promise-to-proof-loop/index.html b/site/loops/promise-to-proof-loop/index.html index 632ff65..7be0396 100644 --- a/site/loops/promise-to-proof-loop/index.html +++ b/site/loops/promise-to-proof-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/promise-to-proof-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/promise-to-proof-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/propagation-compliance-loop/index.html b/site/loops/propagation-compliance-loop/index.html index ec65e04..13c4265 100644 --- a/site/loops/propagation-compliance-loop/index.html +++ b/site/loops/propagation-compliance-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/propagation-compliance-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/propagation-compliance-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/quality-streak-loop/index.html b/site/loops/quality-streak-loop/index.html index 79a6815..a6e1bd4 100644 --- a/site/loops/quality-streak-loop/index.html +++ b/site/loops/quality-streak-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/quality-streak-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/quality-streak-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/recent-feedback-sweep/index.html b/site/loops/recent-feedback-sweep/index.html index dd46633..0d2e90b 100644 --- a/site/loops/recent-feedback-sweep/index.html +++ b/site/loops/recent-feedback-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/recent-feedback-sweep-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/recent-feedback-sweep-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/recovery-proof-loop/index.html b/site/loops/recovery-proof-loop/index.html index 8559381..6f9ea1d 100644 --- a/site/loops/recovery-proof-loop/index.html +++ b/site/loops/recovery-proof-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/recovery-proof-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/recovery-proof-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/refund-follow-up-loop/index.html b/site/loops/refund-follow-up-loop/index.html new file mode 100644 index 0000000..e37ab11 --- /dev/null +++ b/site/loops/refund-follow-up-loop/index.html @@ -0,0 +1,355 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Refund Follow-Up Loop for AI Agents | Loop Library + + + + + + +
+ + +
+
+

Loop 050

+

The refund follow-up loop

+

A persistent follow-up workflow that starts a refund claim, watches replies and deadlines, and keeps the case moving until the money arrives.

+ + +
+ +
+
+
+
+

Ready-to-use prompt

+

Copy the loop

+
+ +
+

Get my refund for [company and charge info]. Start the claim now through an approved support channel, then keep following up on replies, promises, and deadlines until the refund arrives. Keep a short case note so each follow-up has context. Stop only when the refund is received or you are genuinely blocked and need me.

+
+ +
+

Verify / stop

+
+

The refund is received, or a genuine blocker requires the user.

+

An open claim, promise, or pending refund is progress, not success; keep following up until the money arrives or no approved next step remains.

+
+
+ +
+ + Context and guidance + When to use it, steps, safety notes, and related loops + + +
+
+
+
Published
+
+
+
+
Updated
+
+
+
+ +
+

Use this when

+

Use this when someone owes you a refund and getting it may take more than one support conversation or follow-up.

+
+ +
+

How to run it

+
    +
  1. Gather the charge, reason for the refund, useful evidence, current status, and any earlier conversation or promise.
  2. +
  3. Start or continue the claim through a support channel the user has approved, then note what happened and what should happen next.
  4. +
  5. Follow up whenever a reply, promise, or deadline creates a useful next step; keep the case moving instead of treating a pending status as done.
  6. +
  7. Stop when the refund arrives, or explain the genuine blocker when the next useful step needs the user.
  8. +
+
+ +
+

Why it works

+

Refunds often stall because a promise or pending status gets treated as completion. This loop keeps ownership through delays and handoffs until the money actually arrives.

+
+ +
+

Implementation note

+

Use truthful information and the permissions already granted. If the next step needs a new permission or decision, bring that blocker to the user instead of stopping silently.

+
+ + +
+
+ +
+
+
+ + + +
+ + diff --git a/site/loops/repository-cleanup-loop/index.html b/site/loops/repository-cleanup-loop/index.html index 7765d25..5418f90 100644 --- a/site/loops/repository-cleanup-loop/index.html +++ b/site/loops/repository-cleanup-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/repository-cleanup-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/repository-cleanup-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/revolve-self-improvement-loop/index.html b/site/loops/revolve-self-improvement-loop/index.html index 85c9f51..78146d9 100644 --- a/site/loops/revolve-self-improvement-loop/index.html +++ b/site/loops/revolve-self-improvement-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/revolve-self-improvement-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/revolve-self-improvement-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/self-improving-champion-loop/index.html b/site/loops/self-improving-champion-loop/index.html index f705d0d..d282295 100644 --- a/site/loops/self-improving-champion-loop/index.html +++ b/site/loops/self-improving-champion-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/self-improving-champion-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/self-improving-champion-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/seo-geo-visibility-loop/index.html b/site/loops/seo-geo-visibility-loop/index.html index 3ebde05..b91eb0e 100644 --- a/site/loops/seo-geo-visibility-loop/index.html +++ b/site/loops/seo-geo-visibility-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/seo-geo-visibility-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/seo-geo-visibility-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/stale-safe-batch-release-loop/index.html b/site/loops/stale-safe-batch-release-loop/index.html index 1b03e0a..efb5abc 100644 --- a/site/loops/stale-safe-batch-release-loop/index.html +++ b/site/loops/stale-safe-batch-release-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/stale-safe-batch-release-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/stale-safe-batch-release-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/strip-miner-loop/index.html b/site/loops/strip-miner-loop/index.html index 1564d99..29a479f 100644 --- a/site/loops/strip-miner-loop/index.html +++ b/site/loops/strip-miner-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/strip-miner-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/strip-miner-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/sub-50ms-page-load-loop/index.html b/site/loops/sub-50ms-page-load-loop/index.html index d48e7c7..f495c88 100644 --- a/site/loops/sub-50ms-page-load-loop/index.html +++ b/site/loops/sub-50ms-page-load-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/sub-50ms-page-load-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/sub-50ms-page-load-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/test-stabilizer-loop/index.html b/site/loops/test-stabilizer-loop/index.html index 1d4b51e..c29ea56 100644 --- a/site/loops/test-stabilizer-loop/index.html +++ b/site/loops/test-stabilizer-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/test-stabilizer-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/test-stabilizer-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/test-suite-speed-loop/index.html b/site/loops/test-suite-speed-loop/index.html index e1064ff..e30c6a9 100644 --- a/site/loops/test-suite-speed-loop/index.html +++ b/site/loops/test-suite-speed-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/test-suite-speed-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/test-suite-speed-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/ticket-to-pr-ready-loop/index.html b/site/loops/ticket-to-pr-ready-loop/index.html index 6183195..7ba414f 100644 --- a/site/loops/ticket-to-pr-ready-loop/index.html +++ b/site/loops/ticket-to-pr-ready-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/ticket-to-pr-ready-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/ticket-to-pr-ready-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/ui-ux-score-loop/index.html b/site/loops/ui-ux-score-loop/index.html index 9d26b4b..018957b 100644 --- a/site/loops/ui-ux-score-loop/index.html +++ b/site/loops/ui-ux-score-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/ui-ux-score-loop-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/ui-ux-score-loop-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/loops/war-loops-frontend-designer/index.html b/site/loops/war-loops-frontend-designer/index.html index 82b5d8a..939f710 100644 --- a/site/loops/war-loops-frontend-designer/index.html +++ b/site/loops/war-loops-frontend-designer/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -102,7 +102,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/war-loops-frontend-designer-20260621.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/war-loops-frontend-designer-20260621-2.png", "width": 1200, "height": 630 }, diff --git a/site/sitemap.xml b/site/sitemap.xml index c7ea331..eba8749 100644 --- a/site/sitemap.xml +++ b/site/sitemap.xml @@ -208,4 +208,8 @@ https://signals.forwardfuture.ai/loop-library/loops/recovery-proof-loop/ 2026-06-21 + + https://signals.forwardfuture.ai/loop-library/loops/refund-follow-up-loop/ + 2026-06-21 + diff --git a/skills/loop-library/references/catalog.md b/skills/loop-library/references/catalog.md index 7276fee..5f7b36e 100644 --- a/skills/loop-library/references/catalog.md +++ b/skills/loop-library/references/catalog.md @@ -450,3 +450,12 @@ URL above. - Verify: Every required recovery scenario succeeds repeatedly from a real recovery point. Fresh clean-room restores satisfy integrity, dependency, representative read/write, RPO, and RTO checks under unchanged criteria, with failures preserved as regression drills and restored data destroyed securely. - Keywords: backup recovery testing, disaster recovery drill, RPO and RTO validation, clean room restore, recovery proof - Related: [The quality streak loop](https://signals.forwardfuture.ai/loop-library/loops/quality-streak-loop/), [The post-release baseline loop](https://signals.forwardfuture.ai/loop-library/loops/post-release-baseline-loop/), [The production error sweep](https://signals.forwardfuture.ai/loop-library/loops/production-error-sweep/) + +## 050 — [The refund follow-up loop](https://signals.forwardfuture.ai/loop-library/loops/refund-follow-up-loop/) + +- Category: Operations +- Use when: Use this when someone owes you a refund and getting it may take more than one support conversation or follow-up. +- Prompt: Get my refund for [company and charge info]. Start the claim now through an approved support channel, then keep following up on replies, promises, and deadlines until the refund arrives. Keep a short case note so each follow-up has context. Stop only when the refund is received or you are genuinely blocked and need me. +- Verify: The refund is received, or a genuine blocker requires the user. An open claim, promise, or pending refund is progress, not success; keep following up until the money arrives or no approved next step remains. +- Keywords: refund follow up, consumer advocacy, customer support escalation, refund status tracking, case log +- Related: [The promise-to-proof loop](https://signals.forwardfuture.ai/loop-library/loops/promise-to-proof-loop/), [The Living Story loop](https://signals.forwardfuture.ai/loop-library/loops/living-story-loop/), [The recent-feedback sweep](https://signals.forwardfuture.ai/loop-library/loops/recent-feedback-sweep/)