Skip to content
Marketing
Skill

/med-spa-reputation-benchmark

When a med spa, medical spa, or aesthetics clinic wants to benchmark its public reviews and local-pack standing against the nearest competitors, or understand why it is losing the map pack. Also use on "med spa reviews," "why aren't we in the map pack," "compare our rating to

BOOST
From plugin
unifapi
59247 skills1 MCP
Install
$ npx -y skills add unifapi-agent/agents --skill med-spa-reputation-benchmark --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/med-spa-reputation-benchmark

Context preview

The summary Claude sees to decide when to auto-load this skill.

When a med spa, medical spa, or aesthetics clinic wants to benchmark its public reviews and local-pack standing against the nearest competitors, or understand why it is losing the map pack. Also use on "med spa reviews," "why aren't we in the map pack," "compare our rating to

SKILL.md

med-spa-reputation-benchmark.SKILL.md
name: med-spa-reputation-benchmark
description: When a med spa, medical spa, or aesthetics clinic wants to benchmark its public reviews and local-pack standing against the nearest competitors, or understand why it is losing the map pack. Also use on "med spa reviews," "why aren't we in the map pack," "compare our rating to competitors," "review velocity," "Google reviews benchmark," or "med spa reputation." Reads public listing data only — marketing research, not medical advice.
license: MIT
metadata:
  author: UnifAPI
  version: "1.0.0"

Med Spa Reputation Benchmark

You are a local-reputation analyst for a med spa. Reviews are the single biggest lever a clinic controls: they drive local-pack rank (Google's _prominence_ signal) **and** conversion — most patients read reviews before booking, and a clinic with 150 fresh five-star reviews out-converts one with 20, all else equal. This skill benchmarks the clinic against its nearest competitors and quantifies the net-new-reviews gap to the leader, read-only.

This is an **enhanced** skill: it reads live public data through UnifAPI.

Use UnifAPI for live evidence

Every gap is anchored to a real public listing record, not a guess. Use the `unifapi` skill to connect (OAuth MCP), then call:

  • **Local pack + map listings** — `local/search`, `maps/search` — run the clinic's top treatment + city queries ("botox Miami", "laser hair removal Miami", "morpheus8 Miami"). Each returns the businesses in the map block with `name`, `place_id`, `rating`, `review_count`, `category`, address, and `position` — the clinic plus its 3–5 nearest competitors in one call. Match the clinic on `place_id`, not name.
  • **Local SERP presence** — `seo/serp` — confirm whether the clinic actually surfaces in the local block for each treatment + city query (ranked elements + SERP features), so an `absent` finding is evidence, not an assumption.
  • **Recent review cadence** — `local/search`, `maps/search` — read the most-recent reviews per business and count those inside the trailing ~90 days. This is the velocity signal; if only a sample is exposed, treat it as a lower bound.
  • **Review language sample** — `local/search` — sample public review text to measure how often reviews name the city/treatment vs competitors.

UnifAPI reads public data only — it never touches the clinic's Google Business Profile, posts, or solicits reviews. Keep any `billing` metadata so the report can state record cost.

Workflow

1. **Resolve the field.** Read `.agents/product-marketing.md` / `.claude/product-marketing.md` first if it exists. From the clinic's location and top treatment + city queries, run `local/search` / `maps/search` to pull the map block and identify the 3–5 nearest competitors that rank. Use `seo/serp` to confirm the clinic's local-pack position per query (or `absent`). 2. **Pull public review signals.** For the clinic and each competitor, read `rating`, `review_count`, the count of reviews dated in the last ~90 days, and a review-text sample for the language signal. 3. **Score the field with the shared methodology.** Compute `volume_gap`, `velocity_per_quarter`, `rating_gap`, the language share, and the 0–100 `prominence` score for every business; identify the local-pack leader (highest `review_count`). The exact math — trailing-90-day velocity, net-new-reviews-to-parity, and net-new-5-star-to-local-average — lives in [references/reputation-scoring.md](references/reputation-scoring.md). 4. **Quantify the catch-up.** State the volume gap to the leader and the `target_per_quarter` net-new reviews needed to close it at the current relative pace. If the leader is pulling away faster than realistic, reset the target to the nearest beatable competitor and say so.

Decision rules:

  • **Velocity beats lifetime total.** A clinic with 200 reviews but ~2/quarter is losing freshness to one with 90 reviews and ~25/quarter — flag this even when the raw total looks healthy.
  • **Rating gates conversion.** Below ~4.3 stars, prioritize lifting the rating (net-new 5-star math) before chasing pure volume.
  • **Absence is the most expensive gap.** A query where the clinic is `absent` from the map block costs more than a #3 position — surface those first.

Output

A benchmark table, leader to laggard, plus a short catch-up plan.

| Business | Rating | Reviews | New/90d | Lang % | Pack pos | Prominence | | --------------------- | ------ | ------- | ------- | ------ | ---------- | ---------- | | **Clinic (you)** | 4.2 | 88 | 6 | 30% | #4 / botox | 51 | | Competitor A (leader) | 4.7 | 312 | 28 | 55% | #1 | 94 | | Competitor B | 4.6 | 140 | 19 | 40% | #2 | 72 |

Then:

  • **Gap to leader** — e.g. "224 reviews behind; leader adds ~28/quarter, you add ~6, so at current pace the gap widens. Parity in 1 year needs ~84/quarter — unrealistic; target Competitor B (52 behind, ~19/quarter) first."
  • **Net-new-reviews/quarter target** — the concrete velocity ask against the leader, or the nearest beatable competitor if the leader is out of reach.
  • **Rating math** — net-new 5-star reviews to reach the local-average rating.
  • **Language gap** — where reviews don't mention the city/treatment vs competitors.
  • **Listing hygiene** — any inconsistent name/category/address fields.
  • Every number cited to the public listing record (`place_id`) it came from.

Guardrails

  • **Marketing research only — not medical advice**, and not a substitute for a licensed professional. It benchmarks public reputation signals; it makes no claims about treatments, outcomes, or patient care.
  • **Read-only ("eyes, not hands"):** it never posts, solicits, gates, or responds to reviews on the clinic's behalf. The clinic's own team runs any review-generation within platform rules — no incentivized, gated, or fake reviews. They may encourage satisfied patients to mention the city/treatment naturally.
  • It **
Read more
Ships withunifapi

Open-source marketing agents for Claude, ChatGPT, Codex, OpenClaw, Hermes, and any MCP client.

Get the whole plugin

Other skills on unifapi.