Skip to content

chore(strategy): refresh market benchmark with current MSP-aware audit alternatives - #93

Closed
nish3451 wants to merge 27 commits into
mainfrom
chore/refresh-msp-aware-market-benchmark-lane1
Closed

chore(strategy): refresh market benchmark with current MSP-aware audit alternatives#93
nish3451 wants to merge 27 commits into
mainfrom
chore/refresh-msp-aware-market-benchmark-lane1

Conversation

@nish3451

@nish3451 nish3451 commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

What

The generic market-parity benchmark had not been refreshed since 2026-05-29 ("Market anchors last checked") while the buyer audience is founder-led Managed IT/MSP/cybersecurity companies. This refresh brings in current MSP-aware audit and marketing alternatives, with every anchor verified against public sources on 2026-08-11.

New MSP-aware alternatives (competitive proof matrix)

Alternative Market signal Source (verified 2026-08-11)
MSP marketing agency audits $549-$25k/mo; entry $549-$3k/mo; Tech Pro flat $3k/mo 100Signals Aug 2026 comparison (Tech Pro: free growth call, flat $3,000/mo for MSPs above $500K revenue)
MSP website/SEO audit packages $300-$1.8k/mo; audit included JoomConnect MSP SEO (website audit + keyword research in every tier; free SEO audit)
Free MSP marketing/authority audits Free; audit-led entry Managed Prospecting System (free authority audit; JoomConnect and 100Signals also give free audits)
MSP marketing subscription toolkits Free trial; $199/mo MSP Marketing Edge pricing (free trial, $199/mo US, no contract)

All four rows hold at do not claim yet until paid proof clears the proof bar — no claim is unlocked.

Housekeeping

  • Generator (scripts/export-market-benchmark.mjs) and all three tracked outputs (markdown doc, ops matrix md, ops matrix html) updated in sync; regenerated under the repo's fixed clock so the byte-identity operator-surface gate stays green.
  • Anchors date bumped 2026-05-29 → 2026-08-11.
  • New sources appended to the Sources section.

Verification

npm test62 checks, 0 failures (includes test-active-operator-surfaces byte-identity regeneration, test-client-readiness-contract source guard, and check-product-truth).

Summary by CodeRabbit

  • Documentation
    • Expanded competitive benchmarking to include MSP-focused audits, SEO packages, free-audit offers, and subscription tools.
    • Added current market pricing, offer signals, competitive positioning, claim restrictions, and supporting sources.
    • Updated market-anchor verification through August 11, 2026.
    • Refreshed generated benchmark content to reflect the broader comparison scope.

…t alternatives

The May 29 market anchors were stale for a buyer audience that is
founder-led Managed IT/MSP/cybersecurity companies. Refresh with
sources verified 2026-08-11:

- Tech Pro Marketing: free growth call entry, flat $3,000/mo inbound
  retainer for MSPs above $500K revenue (100Signals Aug 2026
  comparison, retainers $549-$25,000/mo, entry tier $549-$3,000/mo)
- JoomConnect: SEO tiers $300-$1,800/mo with website audit and
  keyword research in every tier, free SEO audit
- Free MSP-specific audits as a crowded entry point (JoomConnect,
  Managed Prospecting System, 100Signals)
- MSP Marketing Edge: 30-day free trial then $199/mo, no contract

Adds four MSP-aware rows to the competitive proof matrix, all
holding at 'do not claim yet' until paid proof clears the bar.
Regenerated docs keep the tracked fixed-clock date.
The benchmark generator source must stay clear of the retired-offer
30-day phrase per the client-readiness contract guard.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4ba16511-bb2e-441a-be6b-ddf841ed9e4d

📥 Commits

Reviewing files that changed from the base of the PR and between 3735629 and eb26bd6.

📒 Files selected for processing (3)
  • docs/strategy/market-parity-benchmark-2026.md
  • growth-brain/ops/competitive-proof-matrix.html
  • growth-brain/ops/competitive-proof-matrix.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • growth-brain/ops/competitive-proof-matrix.html
  • growth-brain/ops/competitive-proof-matrix.md
  • docs/strategy/market-parity-benchmark-2026.md

📝 Walkthrough

Walkthrough

The benchmark now covers MSP-focused audits and marketing offers. The exporter and published Markdown and HTML matrices include related pricing signals, competitive comparisons, claim restrictions, sources, and an updated verification date.

Changes

MSP competitive benchmark

Layer / File(s) Summary
Benchmark source updates
scripts/export-market-benchmark.mjs
The exporter adds four MSP alternatives, market evidence, comparison scope, claim restrictions, sources, and the 2026-08-11 verification date.
Markdown benchmark matrices
docs/strategy/market-parity-benchmark-2026.md, growth-brain/ops/competitive-proof-matrix.md
The Markdown documents include MSP market signals, competitive rows, sources, expanded scope, and the refreshed verification date.
HTML competitive matrix
growth-brain/ops/competitive-proof-matrix.html
The HTML matrix displays the four MSP alternatives, comparison details, supporting sources, and the refreshed verification date.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score: ⚪ Minimal · up to eb26b

This PR refreshes MSP-aware market benchmark sources and synchronized outputs without unlocking new claims; the reported checks pass, and no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the benchmark refresh and its focus on current MSP-aware audit alternatives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/refresh-msp-aware-market-benchmark-lane1

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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4ce0d222c2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

marketSignal: "$549-$25k/mo; entry $549-$3k/mo; Tech Pro flat $3k/mo.",
strongAt: "MSP-specific programs.",
tinyStudioCanBeatBy: "One-page speed.",
currentStatus: marketProofReady ? "watch" : "fail",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require paid proof before relaxing the MSP audit claim

When five Looms have been sent and only one prospect replies, marketProofReady becomes true and this row changes from “do not claim yet” to “use carefully,” even if there is still no paid client or delivered result supporting the stated one-page-speed advantage. This conflicts with the market-parity gate in scripts/check-market-parity-readiness.mjs, which requires validated paid Day 0, approved delivery, and retention evidence before better/comparable claims; gate this status on the corresponding paid delivery proof rather than market traction alone.

Useful? React with 👍 / 👎.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d0192c945c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +26 to +27
Generated: 2026-08-06.
Market anchors last checked: 2026-05-29.
Market anchors last checked: 2026-08-11.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Regenerate the report after checking its anchors

The committed owner dashboard says it was generated on 2026-08-06 while its newly added anchors were checked on 2026-08-11, so the artifact presents an impossible/stale generation history and misstates the freshness of its contents. The same mismatch is propagated to the ops Markdown and HTML outputs; update the generated date when refreshing these source-backed anchors.

Useful? React with 👍 / 👎.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 95b3ef05c1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

marketSignal: "Free trial; $199/mo.",
strongAt: "Content volume.",
tinyStudioCanBeatBy: "Done-for-you proof.",
currentStatus: metrics.counts.clientsReady > 0 && metrics.counts.loomsRecorded >= 5 ? "watch" : "fail",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Count historical Looms for the subscription proof gate

When one of exactly five recorded Loom prospects advances to won, lost, or paused, export-growth-metrics.mjs removes it from counts.loomsRecorded because that metric only includes active prospects. Consequently, even after the won prospect becomes a ready paid client, this new row remains fail until an unnecessary sixth active Loom is recorded, contradicting the proof bar's historical requirement that five Looms have been recorded and sent. Use loomsRecordedIncludingInactive (or another historical proof count) for this gate.

Useful? React with 👍 / 👎.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6f6b4612fa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

marketSignal: "$300-$1.8k/mo; audit included.",
strongAt: "Ongoing SEO.",
tinyStudioCanBeatBy: "Fault map + fix.",
currentStatus: metrics.counts.clientsReady > 0 ? "watch" : "fail",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exclude owned-startup clients from MSP proof gates

When the only ready client is an owned-startup proof folder, clientsReady still becomes positive because export-growth-metrics.mjs does not distinguish proof types, so this row—and the analogous predicates at lines 164 and 174—changes to “use carefully” without external client evidence. check-market-parity-readiness.mjs explicitly uses isOwnedStartupProof to exclude these folders from external delivery proof; apply the same exclusion here so internal product work cannot unlock MSP comparison claims.

Useful? React with 👍 / 👎.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1899a3f87e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

marketSignal: "$549-$25k/mo; entry $549-$3k/mo; Tech Pro flat $3k/mo.",
strongAt: "MSP-specific programs.",
tinyStudioCanBeatBy: "One-page speed.",
currentStatus: marketProofReady ? "watch" : "fail",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve reply proof after the prospect closes

When the sole respondent is later marked lost, export-growth-metrics.mjs stops counting that prospect as a reply because replyStages includes only replied, call-booked, and won; with five other active recorded Looms, this predicate therefore moves the new MSP-agency row back to “do not claim yet” even though the benchmark's historical requirement (“at least one real prospect replies”) remains satisfied. Record or derive historical reply evidence rather than relying on the prospect's current terminal stage.

Useful? React with 👍 / 👎.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 976aa3e7f4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

marketSignal: "$300-$1.8k/mo; audit included.",
strongAt: "Ongoing SEO.",
tinyStudioCanBeatBy: "Fault map + fix.",
currentStatus: metrics.counts.clientsReady > 0 ? "watch" : "fail",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require in-niche proof for MSP comparisons

When the ready client belongs to an unrelated company type, this predicate still changes the MSP-specific row to “use carefully”: clientsReady counts every validated client, while contracts/sprint-application.v1.schema.json explicitly permits companyType: "other". The same issue affects the predicates at lines 164 and 174, allowing delivery outside Managed IT/MSP/cybersecurity to unlock audience-specific comparison claims; derive these statuses from ready clients whose application company type is in the benchmarked niche.

Useful? React with 👍 / 👎.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

…re-market-benchmark-lane1

# Conflicts:
#	docs/strategy/market-parity-benchmark-2026.md
#	growth-brain/ops/competitive-proof-matrix.html
#	growth-brain/ops/competitive-proof-matrix.md
#	scripts/export-market-benchmark.mjs
…enchmark-lane1' into chore/refresh-msp-aware-market-benchmark-lane1
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@nish3451

Copy link
Copy Markdown
Collaborator Author

This PR's diff against main is now empty — its content already landed. The live market-benchmark refresh is tracked by #37. Closing as landed.

@nish3451 nish3451 closed this Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant