gym-transformation-challenge — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gym-transformation-challenge (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Structure a time-bound (usually 6-week) front-end challenge that fills the gym at low friction, breaks even on its own ad spend, and is engineered to ascend challengers into recurring membership.
Decide and write down each element:
The challenge is not the business; the membership is. Decide before launch how a challenger becomes a member.
Fill the conversion-offer-sheet template for the exact offer presented to challengers.
See references/challenge-blueprint for the full deliverables per week.
Run challenge_pnl.js with the cohort's numbers. It returns front-end profit or loss after ad spend and fulfillment, and projected back-end revenue from conversions. See references/challenge-economics.
Fill challenge-offer-sheet (the public offer), conversion-offer-sheet (the end-of-challenge membership offer), and challenge-runbook (the internal week-by-week checklist with owners and timing).
A challenge is ready to launch only when:
Self-contained Node script. Save as challenge_pnl.js and run with node challenge_pnl.js. No dependencies.
// Challenge P&L and back-end projection. Edit inputs, then: node challenge_pnl.js
const inputs = {
fillCount: 20, // paid challengers enrolled
challengePrice: 499, // price per challenger
costPerLead: 25, // ad cost per lead
showRate: 0.4, // share of leads that become paid challengers
fulfillmentPerChallenger: 120, // cost to deliver the challenge per person
conversionToMembership: 0.5, // share of challengers who become members
membershipLtv: 1558, // contribution LTV per member
}
function pnl(i) {
const leadsNeeded = i.fillCount / i.showRate
const adSpend = leadsNeeded * i.costPerLead
const frontEndRevenue = i.fillCount * i.challengePrice
const fulfillmentCost = i.fillCount * i.fulfillmentPerChallenger
const frontEndProfit = frontEndRevenue - adSpend - fulfillmentCost
const cacPerChallenger = adSpend / i.fillCount
const newMembers = i.fillCount * i.conversionToMembership
const cacPerMember = adSpend / newMembers
const backEndRevenue = newMembers * i.membershipLtv
const totalValue = frontEndProfit + backEndRevenue
return {
leadsNeeded, adSpend, frontEndRevenue, fulfillmentCost, frontEndProfit,
cacPerChallenger, newMembers, cacPerMember, backEndRevenue, totalValue,
}
}
const r = pnl(inputs)
const m = (n) => '$' + n.toFixed(0)
console.log('FRONT END')
console.log(' Leads needed: ', Math.ceil(r.leadsNeeded))
console.log(' Ad spend: ', m(r.adSpend))
console.log(' Challenge revenue: ', m(r.frontEndRevenue))
console.log(' Fulfillment cost: ', m(r.fulfillmentCost))
console.log(' Front-end profit: ', m(r.frontEndProfit),
r.frontEndProfit >= 0 ? '(self-funding)' : '(loss, back-end must cover)')
console.log(' CAC per challenger: ', m(r.cacPerChallenger))
console.log('BACK END')
console.log(' New members: ', r.newMembers)
console.log(' CAC per member: ', m(r.cacPerMember))
console.log(' Projected LTV value: ', m(r.backEndRevenue))
console.log('TOTAL projected value: ', m(r.totalValue))FRONT END
Leads needed: 50
Ad spend: $1250
Challenge revenue: $9980
Fulfillment cost: $2400
Front-end profit: $6330 (self-funding)
CAC per challenger: $63
BACK END
New members: 10
CAC per member: $125
Projected LTV value: $15580
TOTAL projected value: $21910Read it: $1,250 of ads fills 20 challengers who pay $9,980. After ads and fulfillment the challenge nets $6,330 before a single membership sells, so it self-funds. Half convert, adding $15,580 in projected lifetime contribution. Drop the fill or conversion rate and watch where the model breaks.
CHALLENGE OFFER. [FILL: challenge name]
Promise: [FILL: one specific result in 6 weeks]
Price: $[FILL] (payment plan: [FILL])
Includes: [FILL: sessions/week, nutrition plan, check-ins, scans, group]
Guarantee: [FILL: the risk-reversal you offer]
Scarcity: [FILL: spots per cohort]
Urgency: [FILL: start date, doors close date]
Who it's for: [FILL: avatar]CHALLENGER-TO-MEMBER OFFER (presented week 5)
Member rate: $[FILL]/mo (challenger-only, this week only)
What continues: [FILL: same coach, group, plan, sessions/week]
Onboarding bonus: [FILL: e.g. free body-comp re-test, branded gear]
Terms: [FILL: commitment length, start date]
Why now line: "[FILL: keep the result you just earned]"
Deadline: [FILL: offer expires end of week 6]CHALLENGE RUNBOOK. [FILL: cohort name / dates]
PRE-LAUNCH (owner: [FILL])
[ ] Cohort filled to [FILL] spots, payment collected
[ ] Welcome message + first scan booked
WEEK 1 (owner: [FILL])
[ ] Baseline scan, onboarding, first-win session, group intros
WEEKS 2-4 (owner: [FILL])
[ ] Sessions delivered, weekly check-ins, attendance tracked
[ ] Early results posted in the group
WEEK 5 (owner: [FILL])
[ ] Mid-result review, conversion offer presented, consults booked
WEEK 6 (owner: [FILL])
[ ] Final scan, celebration, remaining conversions closed
[ ] Before/after proof and testimonials collectedFull 6-week run-of-show and deliverables:
The conversion mechanic: every challenger gets a one-to-one results review where the coach shows the progress, names the result still available with continued training, and presents the challenger-only member rate with a deadline.
A challenge is self-funding when up-front challenge revenue covers ad spend and fulfillment, leaving the back-end membership as profit. The four levers are fill count, challenge price, cost per lead (which sets ad spend through the show rate), and conversion to membership. Tune them in challenge_pnl.js.
If the front-end runs at a loss (low price or high cost per lead), the back-end can still justify it - but only when conversion and LTV are strong and the gym has the cash to wait for dues. The safer design keeps the front-end at or above breakeven so growth never depends on borrowing against future revenue.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.