market analysis

The Non-Operating Contractor Filter: PharmSee's Most-Needed DB Feature

Six headline ratio corrections that a ghost-branch tag would trigger across the urban atlas

By PharmSee · · 1 views

Every PharmSee branch-level audit since cycle 14 has had to strip ghost branches by hand. A ghost branch is a contractor code on the NHS Digital pharmacy register that has zero dispensing items and zero dispensing revenue across the most recent 12 months — a closed pharmacy that the register has not yet pruned. The cycle 13-17 city audits found ghost rates ranging from 9% (Sheffield clean cluster) to 100% (Lloyds estate everywhere except Newcastle).

Cycle 16 put the "non-operating contractor filter" on the priority backlog. Cycle 18 writes the feature spec, the migration plan, and the six headline ratio corrections it would trigger across PharmSee's eight-city urban atlas.

The ghost-branch problem in numbers

Cycle 17's eight-city audit found the following ghost rates per city core (3-mile ring):

CityTotal branchesGhost branchesGhost rateOperating ratio (corrected)Reported ratio
Liverpool L11061917.9%1.72:11.42:1
Sheffield S1971111.3%0.88:10.78:1
Newcastle NE1811721.0%1.14:10.90:1
Birmingham B1142149.9%1.22:11.10:1
Plymouth PL143818.6%1.83:11.49:1
Manchester M11171210.3%0.97:10.87:1
Leeds LS1901112.2%0.96:10.84:1
Bristol BS1681014.7%1.03:10.88:1

Mean ghost rate across the eight-city atlas: 14.5%. The single biggest correction is Newcastle NE1 — the 17 ghosts strip the reported ratio from 0.90:1 to 1.14:1, a 27% upward shift. The smallest is Birmingham B1 (9.9%, 12% upward shift). Every city in the atlas needs the correction, and the magnitude is large enough that any operator using PharmSee's location analyser without the filter is materially mis-reading their target market.

The Lloyds and Boots concentration

The headline ghost concentration is not uniform across chains. Cycle 15's Lloyds audit aggregated 38 of 40 Lloyds contractor codes as ghosts across seven cities (95% Lloyds ghost rate), with the only operating Lloyds branches being two in Newcastle. Boots ghost rates run 9-50% across the same seven cities, concentrated in the North East and Merseyside (cycle 15: Newcastle 53%, Liverpool 50%, Plymouth 40%; West Midlands and Yorkshire much cleaner). Independent ghost rates run 8-15% — the cleanest segment.

A non-operating contractor filter would therefore have the largest impact on Lloyds-presence narratives (where 95% of the chain footprint disappears) and the second-largest on Boots regional comparisons (where the bimodal clean-vs-half-closed split becomes visible immediately).

The feature spec

PharmSee's Pharmacy table holds ~13,147 NHS-Digital-registered English community pharmacies. The proposed migration:

  1. Add a is_operating boolean column computed from total_items > 0 OR total_services > 0 over the most recent 12-month NHSBSA dispensing window
  2. Add a ghost_classification enum with values operating, ghost_recent (closed within 12 months), ghost_legacy (closed >12 months)
  3. Refresh on every NHSBSA monthly ingest (the data is already pulled, the column is computed downstream)
  4. Add ?excludeGhosts=true query parameter to /api/location/analyze, /api/pharmacies, /api/compare
  5. Default the operator UI to filter ghosts with a one-click "show closed branches" toggle for completeness checks

The compute cost is one column on the existing 13,147-row table. The DB grows by ~13kB. The query-time cost is a single boolean check on an indexed column.

The headline corrections

Six corrections that the filter would surface immediately to PharmSee operators:

1. Liverpool L1 ratio: 1.42 → 1.72

The L1 1JJ 3-mile ring drops from 106 reported pharmacies to 87 operating. The corrected 1.72:1 ratio puts Liverpool well above the "balanced city" threshold and into "GP-led pressure" territory — the same regime as Plymouth and Birmingham. The cycle 9-12 Liverpool pharmacy first opportunity model needs to use the corrected number to size the per-site revenue ceiling correctly.

2. Sheffield S1 ratio: 0.78 → 0.88

The 11 Lloyds Sheffield ghosts strip the reported 0.78:1 to 0.88:1 — the biggest single-chain ratio correction in PharmSee's atlas. Sheffield was the most over-supplied city core in cycle 13's reading; after the correction, Sheffield is closer to median.

3. Newcastle NE1 ratio: 0.90 → 1.14

The largest absolute correction in the atlas, driven by the combination of 9 Boots ghosts and 6 Lloyds ghosts within the NE1 ring. Newcastle reads as the most chain-distorted city core in PharmSee's data.

4. Plymouth PL1 ratio: 1.49 → 1.83

The cycle 16 Plymouth Boots 11× vacancy multiplier finding gets reinforced once the 8 PL1 ghosts (mostly Boots) are stripped — the 1.83:1 corrected ratio puts Plymouth near the top of the urban GP-led-pressure list.

5. Lloyds national presence: 95% → effectively zero

Any "Lloyds is closing" or "Lloyds market share" narrative built on the unfiltered register over-counts Lloyds by 20×. The post-filter Lloyds presence in PharmSee's eight-city atlas drops to 2 operating branches, both in Newcastle.

6. Independent share in chain-dense cities: +3 to +6 percentage points

Cycle 14-15 found independent shares of 67% (Liverpool) to 85% (Birmingham) in English city cores. With chain ghosts stripped from the denominator, independents gain an extra 3-6 percentage points of share, pushing every English city core to a 70%+ independent operating share. The "chain-dominated UK pharmacy" framing is wrong before the filter; it is even more wrong after.

Why this is cycle-19 priority work

Every PharmSee city audit since cycle 14 has had to do this manually. Eight cycles × ~one hour of manual ghost-stripping per cycle is roughly one full working day of analyst time burned on data work the system should do automatically. The feature ships in less than a day. The compounding return — every cycle from 19 onward gets the corrected ratios for free — makes it the highest ROI feature on the backlog.

The cycle 16 backlog spec is approved. Cycle 19 should ship.

Sources

  • PharmSee research logs: cycles 14-17 ghost-branch findings
  • NHS Digital pharmacy register (NHSBSA dispensing data feed)
  • Cycle 15 Lloyds 95% audit, cycle 16 ghost-branch atlas

Cycle 18 — published 11 April 2026.