Our approach
Red flags on this site fall into two classes, and each flag is tagged with its class where it appears. Algorithmic flags (low attendance, travel expense outliers) are generated automatically from publicly available council data — no editorial judgement is applied to their detection, and every such flag is the result of a data point crossing a pre-defined threshold. Finding-based and reviewed flags (code of conduct, conflicts of interest) carry judgement made outside the detection pipeline: a recorded Standards Committee outcome, or a declaration cross-reference approved by a human editor before publication. The sections below document each check.
The purpose of this system is to surface patterns that warrant public attention, not to make accusations. A red flag indicates that a data point has met a specific condition — there may be legitimate reasons for the underlying behaviour.
Flags are reviewed periodically. When the underlying condition of an algorithmic flag is no longer met (for example, attendance improves above the threshold), the flag is automatically resolved and removed from the active list. Editorially reviewed conflict flags are withdrawn only by the same human review that published them.
AI-assisted illustration
Some investigations carry editorial illustrations rather than photographs. These are conceptual, clearly non-photographic images created with AI assistance and reviewed by a person before publication. Each is credited on the image as “AI-assisted”.
Our rules: illustrations are symbolic only; they never depict an identifiable real person, never reconstruct a real event as if it were documentary, and are never presented as photographs. They exist to illustrate a theme, not to evidence a claim — the evidence is always in the linked records.
Low Attendance
A low attendance flag is raised when a councillor's attendance falls below 60%. This threshold applies in two ways:
- Overall attendance — the councillor's attendance across all committees and meetings is below 60%.
- Individual committee attendance — the councillor's attendance on any single committee they are a member of is below 60%.
Attendance is calculated as the number of meetings where the councillor was marked as “present” divided by the total number of meetings held for which they had attendance recorded. Apologies and absences are both counted as non-attendance for the purposes of this calculation. Where the council's record shows a member sent a substitute to cover their apologies, the apology still counts as non-attendance — the seat was not personally attended — but the substitution is noted on their profile.
A councillor who attends a meeting as a substitute is credited with that attendance, marked as a substitution. A councillor who merely sits in on a committee they hold no seat on is recorded as an observer: observed meetings are listed but do not count towards, or against, their attendance percentage in either direction.
Committee-level averages are calculated over every recorded appearance, so when a member sends a substitute the same seat contributes both an apology and an attendance to that average. The council's register does not reliably link a substitute to the member they covered, so no correction is estimated. Meeting pages therefore report attendance as itemised counts — attended, apologies, absent — rather than a single “X of Y” figure.
The 60% threshold was chosen because Cornwall Council's own rules require members to attend at least one meeting in a six-month period to avoid disqualification. Our threshold is set higher to reflect a reasonable expectation of regular participation.
Conflict of Interest Votes Inactive
This check would raise a flag when a councillor voted on a decision where they had a declared interest. It cannot currently fire: Cornwall Council does not publish how individual councillors vote — Full Council minutes name only the mover and seconder of a motion — so no per-councillor vote record exists for this check to read. It remains documented here because the check is defined in the detection system and would activate if the council began publishing named votes.
Under the council's code of conduct, members with a disclosable pecuniary interest should not participate in discussion or vote on the matter. Were the data published, a dispensation might still have been granted, or the nature of the interest might not have required withdrawal — the flag would surface the data point for public scrutiny, not imply wrongdoing.
Code of Conduct
A code of conduct flag republishes a Standards Committee outcome: it is raised only where Cornwall Council's published decision on a conduct complaint records that a breach was found (an upheld complaint), and where this site's own severity classification of the case is “serious”. Both conditions are required — the site's AI-assigned severity alone can never raise a flag.
Unlike the attendance and expense checks, this flag is not an arithmetic threshold: the judgement it carries was made by the council's own standards process, and the flag links to the published case so the outcome can be read in the council's wording. Complaints that were dismissed, withdrawn, not investigated, or where no breach was found never raise a flag.
Conflict of Interest
A conflict of interest flag records a cross-reference between a councillor's declared or documented interests and the committees they sit on or the matters those committees decide. Candidate conflicts are identified with AI assistance, but no conflict flag is published without a human editor reviewing and approving it — this is the one flag type on the site whose publication is an editorial decision, and it is tagged as editorially reviewed wherever it appears.
A declared interest is not itself wrongdoing — declaration is exactly what the rules require. The flag surfaces the overlap for public scrutiny, with the evidence date of the underlying declaration shown alongside it.
Travel Expense Outlier
A travel expense outlier flag is raised when a councillor's travel expenses are in the top 10% (90th percentile) of all councillors for the most recent financial year.
Only the travel category of expenses is used for this calculation — not total allowances. Basic allowance and special responsibility allowance are set by the council's independent remuneration panel and are not at the councillor's discretion, so they are excluded from outlier detection.
High travel expenses may be entirely legitimate — for example, councillors representing rural wards may incur higher travel costs. This flag surfaces the data point for public scrutiny; it does not imply misuse.
Data sources
- Attendance data — scraped from Cornwall Council's Modern.gov portal, which publishes attendance records for all public meetings.
- Decision records — extracted from published meeting minutes on Modern.gov. Cornwall Council does not publish how individual councillors vote, so no per-councillor voting record exists in this data and none is claimed.
- Standards Committee decision notices — Cornwall Council's published outcomes on code of conduct complaints, which code of conduct flags republish.
- Interest declarations — councillors' declared and documented interests, cross-referenced against their committee seats and reviewed by an editor before any conflict flag is published.
- Expense data — sourced from Cornwall Council's published allowances and expenses reports. Only the travel category is used for outlier detection.
Update frequency
Red flag detection runs periodically after new council data is scraped. Flags are automatically resolved when the underlying condition is no longer met. The date each flag was first detected is displayed alongside the flag entry.
Image sources
Photographs used on this site are sourced from openly licensed or free-to-use platforms. The following sources are approved for use:
| Source | Licence | Best for | Attribution |
|---|---|---|---|
| Wikimedia Commons | CC BY-SA 4.0 / Public Domain | County Hall, landmarks, town centres | Yes (CC BY-SA). Not needed for Public Domain. |
| Geograph | CC BY-SA 2.0 | Ward-specific locations, villages, streets | Yes. Format: © [Author], cc-by-sa/2.0 |
| Unsplash | Unsplash Licence (free) | Generic Cornwall coastal/moorland landscapes | No (but appreciated) |
| Pexels | Pexels Licence (free) | Generic landscape fallbacks | No |
| Flickr Creative Commons | CC BY / CC BY-SA | Cornwall landmarks, events, varied subjects | Yes for CC BY-SA |
| Own photographs | Full ownership | Anything | No |
| Cornwall Political Watch (AI-assisted illustration) | Owned | Investigation hero & thematic art | Per-image AI-assisted credit |
Updates to this methodology
22 August 2026 — Every published flag type documented
Two flag types that appeared on the red flags page were not previously documented here: Code of Conduct (which republishes a Standards Committee outcome and requires a found breach) and Conflict of Interest (a declaration cross-reference approved by a human editor before publication). Both now have sections above, and every flag on the site is tagged with whether it is an algorithmic threshold, a council finding, or editorially reviewed.
The Conflict of Interest Votes check is now marked inactive: Cornwall Council does not publish how individual councillors vote, so the check has no data to read and has never raised a flag. The description of voting records as a data source has been corrected accordingly.
22 August 2026 — Attendance counting refined
Attendance percentages previously treated every appearance in the council's attendance registers the same way. The council's own records draw finer distinctions, and the calculation now respects them: a councillor who sits in on a committee they hold no seat on is recorded as an observer and no longer counts towards, or against, any attendance percentage; a councillor who attends as a substitute is credited with that attendance and labelled as such; and where a member sent a substitute to cover their apologies, the apology still counts as non-attendance but the cover is now shown.
Under the previous method, sitting in on other committees' meetings could only ever push a councillor's percentage up. Roughly one in six recorded appearances site-wide was an observation rather than an attended duty, so while council-wide averages barely move, some individual percentages will change by several points — in both directions — as historical records are re-read against the council's registers over the week following this update. Red flags are recalculated nightly and will reflect the restated figures automatically.
No underlying council record has changed, and none was misquoted: this is a change in how the same public registers are summarised, applied uniformly to all 87 councillors.
Image attributions
The following third-party images are used on this site and require attribution under their respective licences.
- county-hall.webp — © David Dixon, Geograph, CC BY-SA 2.0
- wards/default.webp — © Edmund Shaw, Geograph, CC BY-SA 2.0
- wards/newquay-central-pentire.webp — © DS Pugh, Geograph, CC BY-SA 2.0
- wards/falmouth-arwenack.webp — © David Dixon, Geograph, CC BY-SA 2.0
- wards/st-ives-east-lelant-carbis-bay.webp — © Jonathan Billinger, Geograph, CC BY-SA 2.0
- wards/penzance-east.webp — © Wayland Smith, Geograph, CC BY-SA 2.0
- wards/padstow.webp — © David Hawgood, Geograph, CC BY-SA 2.0
- wards/bude.webp — © David Robinson, Geograph, CC BY-SA 2.0
- wards/truro-boscawen-redannick.webp — © Lewis Clarke, Geograph, CC BY-SA 2.0
- wards/bodmin-st-petrocs.webp — © Mike Searle, Geograph, CC BY-SA 2.0
- wards/penryn.webp — © David Dixon, Geograph, CC BY-SA 2.0
- wards/camborne-roskear-tuckingmill.webp — © Mike Smith, Geograph, CC BY-SA 2.0
- wards/redruth-central-carharrack-st-day.webp — © Tony Atkin, Geograph, CC BY-SA 2.0
- wards/saltash-tamar.webp — © Tom Jolliffe, Geograph, CC BY-SA 2.0
- wards/launceston-north-north-petherwin.webp — © Ruth Sharville, Geograph, CC BY-SA 2.0
- wards/lostwithiel-lanreath.webp — © Chris Downer, Geograph, CC BY-SA 2.0
- wards/helston-north.webp — © Dave Kelly, Geograph, CC BY-SA 2.0
- wards/liskeard-central.webp — © Tony Atkin, Geograph, CC BY-SA 2.0
- wards/altarnun-stoke-climsland.webp — © Derek Harper, Geograph, CC BY-SA 2.0
- wards/rame-peninsula-st-germans.webp — © Edmund Shaw, Geograph, CC BY-SA 2.0
- wards/torpoint.webp — © Kate Jewell, Geograph, CC BY-SA 2.0
- wards/mullion-st-keverne.webp — © Philip Halling, Geograph, CC BY-SA 2.0
- wards/perranporth.webp — © Richard Law, Geograph, CC BY-SA 2.0
- wards/st-agnes.webp — © Chris Gorringe, Geograph, CC BY-SA 2.0
- wards/fowey-tywardreath-par.webp — © Martin Bodman, Geograph, CC BY-SA 2.0
- wards/looe-east-deviock.webp — © DS Pugh, Geograph, CC BY-SA 2.0