RiskyEats Methodology

This page documents the data sources, dimensions, scoring, closure detection, trend classification, and anti-fabrication guarantees that underpin the briefing.

Data Sources

RiskyEats is built from three layers of source data:

Dimensions

The public briefing separates dimension panels including Red Alert emergency orders, Recent Failures, Worst of Worst multi-signal restaurants, Chronic Offenders, Bad Actors, Closure Watch, Distressed Licenses, Change of Ownership, New Licenses, Openings, Most Improved, and Clean Plates. The chip on each card names the panel whose rule placed that card.

Overlap rules. Chronic Offenders and Bad Actors can overlap — a restaurant can appear in both. Red Alert and Closure Watch are de-duped against Recent Failures so each restaurant lives in one panel.

Risk Scoring

The P0 scorer weights inspection history by public-health severity. High-priority findings raise score most sharply, intermediate findings add material risk, and basic findings add lighter context. Recency, repeat behavior, and closure or enforcement signals can raise the public-risk posture; clean or improving records dampen it.

How Severity Is Scored

The card severity score is inspection-derived and has no theoretical maximum. Higher means worse. The formula is high-priority violations times 100, intermediate violations times 10, basic violations times 1, plus 50 points when pest evidence is present. A clean inspection scores 0; one high-priority citation scores 100.

RiskyEats uses fixed editorial anchors so readers can interpret the number without pretending it is out of 100, 500, or 1,000: CLEAN below 10, ROUTINE 10-30, HEAVY 30-60, SEVERE 60-100, and EMERGENCY 100 or higher. The marker on each card is log-scaled with min(100, log10(score + 1) / log10(500) * 100), so a score of 256 lands deep in Emergency instead of barely past the threshold.

Letter Grade

Letter grades are derived from the inspection or pattern that earned the restaurant its card placement. Red Alert cards receive F, Clean Plates receive A, Recent Failures use the earning inspection after callback visits are skipped, and chronic or bad-actor cards use closure and complaint history so a clean latest callback does not erase the pattern.

Clean Run

Clean-run cards count consecutive inspections without a high-priority violation. The run length and days-since-high-priority text are inspection-history indicators, not an operator certification. A longer run means fewer recent serious citations in the DBPR record.

Most Improved

Most-improved scoring compares prior-window HP plus critical violation counts with recent-window HP plus critical counts. The percent-better badge reflects the drop between those windows, while the adjacent count badge shows the before-to-after violation totals that produced it.

Chronic Score

Chronic score ranks recent repeat inspection trouble over the 180-day chronic-offender window. Cards pair the score with the number of inspections in that window so a high count reflects repeated observed issues, not a single isolated visit.

Closure Score

Closure Score is the count of independent closure signals concurrently firing, capped at 4/4. The signals are silent_120d for a long DBPR quiet gap, license_inactive for inactive or cancelled DBPR license status, corp_dissolved for a dissolved Sunbiz operating corporation, and confirmed_closed_external for corroboration from external places, news, or operator-attested sources. A higher score means more independent closure evidence, not a health-inspection grade.

Worsts Signatures

Combo badges summarize which dimensions fired on the same restaurant or chain rollup. Letters map to evidence families: E means emergency-order or extant enforcement activity, L means license or lapsed administrative signal, B means bad-actor or historical pattern, G means ghost/distressed license signal, C means externally confirmed closure, D means DBPR-driven closure or disciplinary evidence, V means high-violation inspection evidence, and R means repeat-offender behavior. Combined badges such as EB, ELB, LB, LBG, LG, or LCR mean multiple evidence families fired together.

Callback Overdue Severity

Emergency-order cards mark a callback as overdue when DBPR has not posted a complying follow-up after the expected callback window. Warning means the callback is more than 14 days overdue; severe means the unresolved window is 30 days or longer.

Distress Badges

Distressed-license badges name the administrative signal that put the card in the license-risk group. sunbiz_iflal means the corporation is inactive or inactive-following-annual-report-late while the food-service license still matters. annual_gap means the DBPR inspection cadence is stale, typically 365+ days behind the expected annual visit. near_expiry means the DBPR license is close to expiration. delinquent means DBPR lists the license as delinquent. expired means the DBPR license expiration date has passed.

Bad Actor Badges

Bad-actor and chain flags compact systemic risk signals. high_violations means high-priority violation hits are materially elevated, repeat_offender means the same operator or license repeats serious events across visits or locations, and long_rap_sheet means the 11-year record contains enough closures or complaint inspections to qualify as a historical pattern. Extant badges weight active/recent evidence more heavily than purely historical evidence.

Chain Kind

Chain kind is assigned from places and operator enrichment. single means no statewide chain pattern is detected. regional means the operator appears to run multiple Florida locations. franchisee_owned means a local franchisee controls a subset of a larger brand's Florida locations. national or national_owned means the location is associated with a larger brand-owned chain footprint.

Chain Closure Exception

The chain_closure_exception flag lets a chain location remain in Closure Watch when the normal de-duplication rules would otherwise suppress it as a broad chain event. It is used when location-level evidence says this specific restaurant is closed or closing, even though the wider brand or franchise system may still operate elsewhere.

Operator Override

operator_override marks a card inserted or retained from an explicit operator-attested source rather than solely from automated scoring. Overrides still need a documented reason and are labeled separately so readers can distinguish editorial attestation from automated record joins.

Confidence Label

confidence_label is the plain-English attestation label for closure, opening, or chain-rollup evidence. Examples include Operator-attested closure, DBPR-confirmed plus multi-source corroborated, Google-confirmed opening, and Chain rollup signatures. The label explains why the source row is strong enough to surface on the card.

Recency Bucket

recency_bucket separates last_90_days closure evidence from historical backlog. last_90_days means the closure signal is recent enough for current editorial framing; historical means the card is retained as an older regulatory or places-data closure record.

Requires Revalidation

requires_revalidation is the staleness flag for old closure evidence. Closure cards whose latest inspection or verification touch is older than the 16-month threshold are marked for manual revalidation before they should be treated as fresh current-state evidence.

Closure Detection

Closure detection distinguishes active-but-quiet restaurants from confirmed permanent closures. A restaurant is not treated as permanently closed merely because it has no recent inspection. Permanent-closure classification requires a 90-day quiet gap paired with non-current license evidence or other validated closure signals.

The T3 classifier labels restaurant and metro trajectories as improving, stable, declining, or volatile by comparing recent inspection severity and frequency against prior windows. It is trend language, not a prediction of future conditions.

Anti-fabrication

The narrative engine is deterministic. Every restaurant name, count, date, violation class, and closure or license claim is emitted from validated records already loaded into the build. Missing inputs degrade to omissions or empty sections instead of invented copy.