Teleperson
Features

Customer Service Quality Index

A per-company support quality score blended from public review and complaint data, plus an aggregated reviews stream.

The Customer Service Quality Index (CSQI) gives you an at-a-glance read on how well a company actually treats its customers — before you spend an hour on hold finding out the hard way. It blends review and complaint data from multiple public sources into a single 0–100 score with a letter grade.

Two new tabs in the side panel power the experience:

  • Quality — the score, the letter grade, and what went into it.
  • Reviews — the actual reviews and complaints behind the score, filterable by source.

Both tabs only appear in the rail when there's something to show. If a company isn't tracked in our quality index, the Quality tab is hidden; if no reviews have been pulled yet, the Reviews tab is hidden. As soon as data appears for a company, the corresponding tab shows up automatically.

Quality tab

The hero of the panel is a large A–F grade with the underlying score (0–100) and a 90-day trend arrow. Grades use a familiar scale:

GradeScoreMeaning
A90+Excellent
B80–89Good
C70–79Average
D60–69Below average
F< 60Poor

Below the hero, What goes into this score breaks down each contributing source — what it measures, the value it contributed, and how heavily it was weighted. If a source has no data for this company, it's marked Unavailable and the remaining sources' weights are renormalized so the missing data doesn't unfairly tank the score.

The footer shows the company's industry and when the score was last refreshed. Click the refresh icon to re-pull (this doesn't count against your daily quota).

What the sources measure

  • Trustpilot — Star rating from verified Trustpilot reviewers, weighted by review count. We pull confidence toward neutral when a company has very few reviews so a single 5-star review doesn't paint a false picture.
  • Google reviews — Star rating from Google Maps reviewers, weighted the same way as Trustpilot. We auto-discover the business profile from the company name + website on the first refresh; no admin setup required.
  • CFPB complaints — Volume of complaints filed with the U.S. Consumer Financial Protection Bureau over the last 90 days, ranked against other companies in the same sector. More complaints = lower percentile = lower score.
  • Reddit mentions — Recent posts that mention the company across all of Reddit. In v1 these are surfaced in the Reviews tab as additional context but don't contribute to the blended score — we want to validate that per-company queries return useful posts before we trust the signal enough to weight it. A future release will add sentiment analysis or engagement scoring at a planned weight of 0.10.

Future versions will add ACSI, Better Business Bureau, and app-store ratings.

Source weights

Sourcev1 weightNotes
CFPB0.22Sector-relative percentile
Trustpilot0.13Stars × review-count confidence
Google0.10Same normalizer as Trustpilot
Reddit0.00 → 0.10Display-only in v1; planned weight after v2 scoring

Weights are renormalized over only the sources that actually returned data for a given company, so a missing source doesn't tank the result.

Per-company configuration

Most external-source identifiers are auto-discovered or seeded — you don't need to configure anything per company. The exceptions, all stored in csqi_companies_meta, are:

  • cfpb_company — the legal name CFPB uses (e.g. "BANK OF AMERICA, NATIONAL ASSOCIATION"). Seeded by an internal script.
  • trustpilot_id — Trustpilot's business unit ID. Seeded by the same script.
  • google_place_id — auto-discovered from name + website on first refresh and cached.
  • reddit_query — auto-derived as "<Company Name>" (quoted phrase) on first refresh and cached. Admins can overwrite this row to refine noisy queries (e.g. add complaint for a brand whose name is a common word, or scope to a specific subreddit with subreddit:foo).

Self-hosted deployments

If you're running your own Supabase project, set these secrets before deploying csqi-refresh-company:

  • TRUSTPILOT_API_KEY
  • GOOGLE_API_KEY
  • REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, REDDIT_USER_AGENT — register a "script" type app at reddit.com/prefs/apps. The user-agent must identify your deployment, e.g. teleperson-csqi/1.0.

Each integration short-circuits silently if its credentials are missing, so you can roll out sources one at a time.

Reviews tab

The Reviews tab shows the actual reviews and complaints behind the score.

  • Source filter — Pills at the top let you narrow to All, Trustpilot, Google, CFPB, or Reddit. Counts on each pill show how many items are cached for that source.
  • Review cards — Each card shows the source badge, rating (Trustpilot and Google), date, title, body excerpt, and a link to view the original on the source site.
  • Google reviews link to the Google Maps page for the business; per Google's terms of service, review fields are refreshed at least every 30 days.
  • CFPB complaints are shown with redacted-by-CFPB consumer narratives and link back to the official CFPB complaint detail page.
  • Reddit mentions show the post title, a snippet of the body (or a pointer to the source for link posts), and the author/subreddit (u/someone in r/personalfinance). The link opens the original Reddit thread.

Reviews are cached snapshots from third parties — the source link is the authoritative copy.

How scores are computed

Scores are computed daily for our top tracked companies and on-demand for others. When you open the Quality tab on a company we don't have a recent score for, you'll see "Scoring this company…" while we pull fresh data — this usually takes under a minute. Keep the panel open and the score will appear.

The 90-day trend compares the current 7-day moving average of scores against the 7-day moving average from 90 days ago, so single-day spikes don't make the trend arrow bounce around.

Free vs Pro

The free plan includes 5 quality lookups per day. Pro removes the cap. Reviews aren't gated — once you've looked up a company, you can browse its reviews freely.

On this page