diff --git a/ynr/apps/candidates/migrations/0093_alter_ballot_by_election_reason.py b/ynr/apps/candidates/migrations/0093_alter_ballot_by_election_reason.py
new file mode 100644
index 000000000..be6bf4290
--- /dev/null
+++ b/ynr/apps/candidates/migrations/0093_alter_ballot_by_election_reason.py
@@ -0,0 +1,70 @@
+# Generated by Django 5.2.13 on 2026-06-05 14:30
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("candidates", "0092_alter_ballot_by_election_reason"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="ballot",
+ name="by_election_reason",
+ field=models.CharField(
+ blank=True,
+ choices=[
+ ("DEATH", "The elected member died"),
+ ("RESIGNATION", "The elected member resigned"),
+ (
+ "ELECTORAL_COURT",
+ "The election of the elected member was declared void by an election court",
+ ),
+ (
+ "FAILURE_TO_ACCEPT",
+ "The previous election winner did not sign a declaration of acceptance",
+ ),
+ (
+ "FAILURE_TO_ATTEND_MEETINGS",
+ "The elected member failed to attend meetings for six months",
+ ),
+ ("DISQUALIFICATION", "The elected member was disqualified"),
+ (
+ "LOSING_QUALIFICATION",
+ "The elected member no longer qualified as a registered elector",
+ ),
+ (
+ "RECALL_PETITION",
+ "The elected member was recalled by a successful recall petition",
+ ),
+ (
+ "ELECTED_COUNCIL_MAYOR",
+ "The elected member was elected mayor of the council, and cannot hold both positions.",
+ ),
+ (
+ "ELECTED_PARLIAMENT",
+ "The elected member was elected Member of the UK Parliament, and cannot hold both positions.",
+ ),
+ (
+ "ELECTED_STRATEGIC_AUTHORITY_MAYOR",
+ "The elected member was elected mayor of a strategic authority, and cannot hold both positions.",
+ ),
+ (
+ "ELECTED_SENEDD",
+ "The elected member was elected Member of the Senedd, and cannot hold both positions.",
+ ),
+ (
+ "ELECTED_SCOTTISH_PARLIAMENT",
+ "The elected member was elected Member of the Scottish Parliament, and cannot hold both positions.",
+ ),
+ ("OTHER", "Other"),
+ ("UNKNOWN", "Unknown"),
+ ("", "Neither a by-election nor a ballot"),
+ ],
+ default="",
+ help_text='\n Reasons why a by-election may be triggered.\n\n Not all of these can be applied to all election types.\n\n e.g. a recall petition is only used in Westminster, and failure to attend meetings\n applies to local government.\n\n An empty string represents ballots that are not applicable, e.g because they\'re not by-elections.\n\n The choices here are in part based on:\n UK Electoral Commission guidance on casual vacancies:\n https://www.electoralcommission.org.uk/guidance-returning-officers-administering-local-government-elections-england/casual-vacancies-and-elections/how-casual-vacancies-occur\n\n \'Disqualification\' can be caused by an elected member being elected to another position.\n Since \'DISQUALIFICATION\' sounds bad, we\'ve made special cases for by-elections triggered\n because the member was elected to another position and is disqualified from holding both.\n In these cases the legislation is:\n https://www.legislation.gov.uk/ukpga/2000/22/section/9HA (ELECTED_COUNCIL_MAYOR)\n https://commonslibrary.parliament.uk/research-briefings/cbp-10853/ (ELECTED_PARLIAMENT)\n https://commonslibrary.parliament.uk/research-briefings/cbp-10853/ (ELECTED_STRATEGIC_AUTHORITY_MAYOR)\n https://www.legislation.gov.uk/ukpga/2006/32/part/1/crossheading/disqualification (ELECTED_SENEDD)\n https://www.legislation.gov.uk/ukpga/1998/46/part/I/crossheading/disqualification (ELECTED_SCOTTISH_PARLIAMENT)\n ',
+ max_length=40,
+ ),
+ ),
+ ]
diff --git a/ynr/apps/candidates/models/popolo_extra.py b/ynr/apps/candidates/models/popolo_extra.py
index 040119dc7..0e53a902f 100644
--- a/ynr/apps/candidates/models/popolo_extra.py
+++ b/ynr/apps/candidates/models/popolo_extra.py
@@ -123,23 +123,23 @@ class ByElectionReason(models.TextChoices):
)
ELECTED_COUNCIL_MAYOR = (
"ELECTED_COUNCIL_MAYOR",
- "This by-election was called because the elected member was elected mayor of the council, and cannot hold both positions.",
+ "The elected member was elected mayor of the council, and cannot hold both positions.",
)
ELECTED_PARLIAMENT = (
"ELECTED_PARLIAMENT",
- "This by-election was called because the elected member was elected Member of the UK Parliament, and cannot hold both positions.",
+ "The elected member was elected Member of the UK Parliament, and cannot hold both positions.",
)
ELECTED_STRATEGIC_AUTHORITY_MAYOR = (
"ELECTED_STRATEGIC_AUTHORITY_MAYOR",
- "This by-election was called because the elected member was elected mayor of a strategic authority, and cannot hold both positions.",
+ "The elected member was elected mayor of a strategic authority, and cannot hold both positions.",
)
ELECTED_SENEDD = (
"ELECTED_SENEDD",
- "This by-election was called because the elected member was elected Member of the Senedd, and cannot hold both positions.",
+ "The elected member was elected Member of the Senedd, and cannot hold both positions.",
)
ELECTED_SCOTTISH_PARLIAMENT = (
"ELECTED_SCOTTISH_PARLIAMENT",
- "This by-election was called because the elected member was elected Member of the Scottish Parliament, and cannot hold both positions.",
+ "The elected member was elected Member of the Scottish Parliament, and cannot hold both positions.",
)
OTHER = "OTHER", "Other"
UNKNOWN = "UNKNOWN", "Unknown"