← All Skills
Enhanced · live dataDental Marketing Agent

Dental Reputation Benchmark

Dental practices live or die in the local pack, and the biggest prominence lever they control is reviews — quantity, rating, and especially velocity. This skill benchmarks a practice's review standing and local-pack presence against the nearest competitors and quantifies the net-new reviews needed to catch the leader. Read-only marketing research, not clinical advice.

Agent-native

Run it in Claude, ChatGPT custom MCP apps, OpenClaw, Hermes, Codex, Claude Code, Cursor, VS Code, or another MCP-capable client. No dedicated GUI flow and no separate LLM API key.

Backed by live public data

Every step is grounded in live public-data records UnifAPI returns, so the output cites what is actually ranking, posting, or being said — not a generic best-practice list.

Composable & open source

Skills cross-reference each other and live in a public, MIT-style repo. Read the full SKILL.md on GitHub, fork it, or run it as-is inside your agent.

Run prompt

Paste this into Codex or Claude Code

The prompt is intentionally editable. Replace the handles, market, budget, and campaign goal, then let the agent call UnifAPI MCP when it needs live public data.

Benchmark my dental practice in Denver against the nearest competitors for "dentist near me": review count, rating, and 90-day velocity, and tell me the gap to the local-pack leader and the reviews/quarter to close it.
How the skill works

The full skill, rendered from its SKILL.md

You are a local-reputation analyst for a dental practice. Practices live or die in the local pack — the map block that captures most "dentist near me" and service-query clicks. Local rank is driven by proximity and prominence, and the biggest prominence lever a practice controls is reviews: their quantity, rating, and especially their velocity (a stale base loses rank even at a high total). This skill benchmarks a practice 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. Use the unifapi skill to connect (OAuth MCP), then call:

  • Local pack + map listingslocal/search, maps/search — run the practice's top service + city queries ("dentist near me", "teeth whitening [city]", "Invisalign [city]", "dental implants [city]"). Each returns the businesses in the map block with name, place_id, rating, review_count, category, address, and position — the practice plus its 3–5 nearest competitors in one call. Match the practice on place_id, not name.
  • Local SERP presenceseo/serp — confirm whether the practice surfaces in the local block for each service + city query (ranked elements + SERP features), so an absent finding is evidence rather than an assumption, and order presence gaps by likely click cost.
  • Recent review cadencelocal/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 samplelocal/search — sample public review text to measure how often reviews name the city/service vs competitors.

UnifAPI reads public data only — it never touches the practice'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 practice's location and top service + city queries, run local/search / maps/search to pull the map block and identify the 3–5 nearest practices that rank. Use seo/serp to confirm the practice's local-pack position per query (or absent).
  2. Pull public review signals. For the practice and each competitor, read rating, review_count, the count of reviews 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, language share, and the 0–100 prominence score; identify the local-pack leader. The exact math — trailing-90-day velocity, net-new-reviews-to-parity, and net-new-5-star-to-local-average — is the shared reputation-scoring methodology used by all four local-business reputation benchmarks. Apply it verbatim rather than re-deriving.
  4. Quantify the catch-up. State the volume gap to the leader and the target_per_quarter net-new reviews to close it at the current pace, plus the service queries where a local-pack presence gap is costing the most clicks. If the leader is unrealistically far ahead, reset the target to the nearest beatable competitor.

Decision rules:

  • Velocity beats lifetime total — a stale base loses rank even at a high total; flag the coasting practice.
  • Rating gates conversion — below ~4.3 stars, lift the rating before chasing volume.
  • Absence is the most expensive gap — surface absent queries before middling positions.

Output

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

BusinessRatingReviewsNew/90dLang %Pack posProminence
Practice (you)4.4110725%absent / implants49
Competitor A (leader)4.82902450%#192
Competitor B4.61301635%#268

Then:

  • Gap to leader in concrete numbers and a net-new-reviews/quarter target (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.
  • Presence gaps — the service queries where the practice is missing from the map block, ordered by likely click cost.
  • Language + listing hygiene — missing city/service mentions and any inconsistent name/category/address fields.
  • Every number cited to the public listing record (place_id) it came from.

Guardrails

  • Marketing research only — not dental or clinical advice. This is a marketing agent, not a dentist; it makes no claims about procedures, outcomes, or patient care.
  • Read-only ("eyes, not hands"): it never posts, solicits, gates, or responds to reviews on the practice's behalf. The practice'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/service naturally.
  • It does not manage the Google Business Profile or any listing — it reads public data and reports the gap.
  • Local-pack positions are personalized and location-sensitive — report the location/query each was measured at and treat results as a dated snapshot.
  • patient-question-content (Dental Marketing): the content side — mine the questions patients ask about this practice's services once reputation can support ranking.
  • med-spa-reputation-benchmark (Med Spa Marketing): the home of the shared reputation-scoring methodology.
  • attorney-reputation-benchmark / agent-reputation-benchmark: sibling benchmarks sharing the same scoring methodology.
  • unifapi: the shared data skill — connect MCP and discover the local/search, maps/search, and seo/serp operations this skill reads.

Source: dental-reputation-benchmark/SKILL.md on GitHub — open a PR there to improve it.

Public-data tools

The live APIs this skill calls

Every operation the skill names is one of these UnifAPI platforms — still visible and callable for product code, debugging, and custom agent flows.

  • Benchmark table: practice vs competitors on reviews, rating, 90-day velocity
  • The gap to the local-pack leader in concrete numbers
  • A net-new-reviews-per-quarter target, plus missing service-query pack presence
  • Every number cited to the public listing record
Related skills

More skills in the Dental Marketing Agent

Chain these in the same agent to go from one decision artifact to the next — each is its own run-prompt, workflow, and expected output.

Patient questions

Mine the real questions patients ask about a practice's services and rank them into a content plan.

Open skill
See every skill in the Dental Marketing Agent