Elections in Russia, Saint Petersburg, 2021: results, turnout, and commission data. With image charts and brief introduction to election fraud methods used.

Overview

2021 Elections in Saint Petersburg, Russia

🇷🇺 Переключиться на русский

📈 Jump to charts
🤖 Telegram bot

war criminal helpers

In Russia, Saint Petersburg from 17th to 19th September 2021 several "elections" have been held, results most of which were successfully faked:

This repository provides all relevant electoral data: result protocols, commission addresses, members, their automatically-detected sibling guesses among all commissions' members, and reports from «Golos» elections fraud map.

Repository contents

  • For developers and researchers: all results, turnout protocols, commission addresses and their members in JSON format, which can be used for analytical and educational projects. In member files there are also siblings guesses among all other commissions' members, which may be potentially used for investigations.
  • As an example, what could be done using them: @spbik_bot source code, which allows quick commission data lookups and chart generation, which highlight the votes growth anomalies and show which commissions received official gratefulness, certificates of honours and badges «For active work in the elections».
  • For those who want to learn about elections in Russia: this README also provides general information about elections in Russia, how exactly specific results are forged, and charts to investigate (with descriptions for some of them).

If you want to quickly find all information about specific commission or electoral district, just send its number to the bot.

Note: only publicly available data is used in this repository. You can double check it on izbirkom.ru and vestnik.spbik.spb.ru for validness.

Project purposes

  • For researchers and investigators — provide a useful 2021 Saint Petersburg election JSON dataset, which can be converted to any other format. Commission members and their potential sibling connections may be cross-referenced with other data sets, and result protocols may suggest to which commissions to look. As of the moment of writing this text, there are not much details on how exactly election fraud is coordinated and what benefits commission members that commit crimes get.
  • For developers and designers — make it easier to create data visualisations and to find new ways to explain all election fraud types for bigger audiences. Or, maybe, to inspire to make good algorithms for election fraud detection.
  • For everyone — remind and record that elections in Saint Petersburg were openly stolen, and you can see that just by studying result protocols and connecting anomalies with observer reports and court cases.

License

For bot's source code GNU LGPLv3 is used, however:

  • JSON files could be used without any conditions. If you find them useful in any work or research you could just kindly put a link to this repository or support the creator (using any of the ways below).
  • Instead of copying all files, it's better to link this project as git submodule. This way you'll automatically have a link to this repository and used commit automatically and won't have a need to store clones of thousands of files.
  • In case you want to add a bot feature, new chart type, fix a bug, etc you may submit a Pull Request.
  • If you want to use this bot with changes (e.g. try to use for other regions and elections), you can fork it using GitHub, and just specify the list of changes in README.

Thanks

Thanks to all Russian voters, who didn't ignore the elections. Without their attendance, commission members wouldn't need to commit crimes, and there would be no traces of the real situation in protocols, as administrative resources misuse and propaganda would be enough for needed candidates.

Special thanks for those who fought for the rule of law and tried to prevent the election fraud: observers, independent election commission members, and others.

In response to candidate registration denials and arrests, Navalny's team came up with Smart Vote strategy: voting for just one strongest opponent to the kremlin's one. In some charts it's possible to see in the charts, why Roskomnadzor tried to limit access to their recommendations as much as they could, using illegal censorship и FSB pressure on Google's employees.

It's not possible to know whether over 60% voters who abstained really exist or not, however, if they do, there's a chance if all of them just supported Smart Vote strategy, winners in some electoral districts could be different.

And final thanks to TEC #9 (Lanskoe Municipality District), which descendant commissions used all types of fraud, and there are almost no protocols without fraud, thanks to which United Russia got the best result in that TEC. Without its crimes insolence, this project wouldn't exist.

Support project creator

This project was created just out of author's curiosity to find out few things:

  1. Real support of different candidates and parties in Saint Petersburg
  2. Who would win if there would be no insolent fraud
  3. How many people supported smart vote candidates, despite how its recommendations were censored by Roskomnadzor and FSB.

Unfortunately, nobody neither supported nor funded this project at any step of its creation. If you personally liked it, found any use of it, or would like to see more electoral projects (many ideas, but no time), you may donate using crypto or PayPal:

BTC: bc1qgfxx7hpwslxf7p3vvrmze8mxm5z3l26zx2mt6r
ETH: 0x9373E9DB2E18A1CFc7d370ecd2cc607b63ad697b
TON: EQDIChbAdWuLMNQhkDqhLVNP2O2kWTGpEIVbl7DqMvvk0RZF
PayPal: paypal.me/notamouranth

Results and charts

If you are not familiar with how election process looks like from voters perspective, and would like to briefly understand the process:

Election process and commissions

Local election commissions (LEC) are places, where people go to vote to put a ballot in a ballot box (which they get there too). Each voter is attached to specific LEC based on their registration address. To know where to go to vote, there's a special digital service. LECs are usually located in schools, preschool, universities, dormitories, hospitals and neuropsychiatries.

On the vote day, voter goes to LEC, where commission members sit at the tables with ballot papers and voters registry. Each commission member handles specific address range and works with the corresponding voters registry. Once voters approaches them, commission member finds the voter in the list. If voter is not found there, registration address in passport is checked (this happens frequently), and, if it falls into the address range, new voter entry line is being added.

Next, put a check in obtained ballot papers, and simply throw it in a single stationary ballot box.

On some elections (like State Duma elections) it's possible to vote abroad in embassies and consulates. It's possible to go there without any prior registration. There were 6 local election commissions attached to Saint Petersburg electoral districts:

  1. 🇩🇪 LEC 8317 — consulate general in Leipzig, Germany — attached to 217 State Duma district
  2. 🇩🇪 LEC 8413 — consulate general in Bonn, Germany — attached to 211 State Duma district
  3. 🇩🇪 LEC 8429 — same — 213 State Duma district
  4. 🇩🇪 LEC 8425 — same — 214 State Duma district
  5. 🇩🇪 LEC 8418 — same — 216 State Duma district
  6. 🇧🇬 LEC 8050 — embassy in Sofia, Bulgary — attached to 217 State Duma district

On these elections voters received from 1 up to 5 ballot papers:

  • When voter goes to LEC in Russia based on the registration address (most common case), they receive 4 ballot papers, 5 — if there were municipality elections.
  • When voter detaches from their default LEC and attaches to the nearest one (there's a special procedure for that available before voting starts), if registration address is from other State Duma electoral district, voter would get only 1 ballot paper — State Duma (parties).
  • If voter has attached to the specific commission and registration address is within the same State Duma electoral district as the commission voter has attached to, voter could get the second ballot paper — for the specific.
  • It is possible to participate in Legislative Assembly voting only in the default LEC. Therefore when you see a commission in which number of Legislative Assembly voters is significantly higher than State Duma, it's most likely the result of fraud protocol.
  • In abroad commissions, voters could vote only for State Duma parties. Combination of specific LEC's attached electoral district and voter's registration in Russia they could get the person vote paper too, however, in practice most of the commissions rejected to provide one.

The most detailed about fraud specifics in Saint Petersburg are collected in Saint Petersburg Observers Report. If you want to have a brief introduction to the fraud process:

Fraud methods and their traces in voting protocols

Election fraud methods are usually determined and coordinated by the territorial election commissions. Below the most common methods are described.

0. Registration denials and pre-vote preparations

It is important to understand that the list of candidates and parties is filtered, which plays a major part in getting the needed result. You may slightly read about pre-vote preparations in the Golos report. But despite that because the real support of the needed candidates is so little, election fraud methods below are still used.

1. Ballot stuffing.

The most common way to increase amount of votes for the needed candidate is to use much more ballot papers than one person is legally allowed to.

However, it's more complex than just finding a pack of ballot papers and putting it in the ballot box. If you do so without prior arrangement with the commission members, they would simply have to cancel the voting results, as ballot papers number would exceed the number they officially provided according to the voters registry.

Therefore, to make the fraud successful, you need to have a prior arrangement with at least one election commission member, who would illegally edit the voters registry to match the amount of provided ballot papers.

There are several methods to find the ballot stuffing in the result protocols. It's possible by comparison with the closest commissions results, as stuffing usually increases amount of votes for just 1 candidate or party, without affecting the result of the rest, using statistical analysis, e.g. Shpilkin's method

There's an alternative method though: by comparing different protocols of the same commission. Sometimes you may notice that number of people who participated in Legislative Assembly elections is significantly higher than the same number for State Duma elections. This is possible only if someone has put extra Legislative Assembly ballot papers in the box and forgot to do so for the State Duma.

2. Ballot safe-package replacements.

On September elections it was the first time when voters could come and vote for three days. In the end of the first (17.09) and the second (18.09) day, all papers from the stationary ballot box were packed in the special safe-packages.

The exact process of storing was designed to provide an ability for commission members to just replace the package contents during the night, which many commissions did.

How to detect: by turnout protocols and lowered number of votes for all candidates, except one. Any abnormal amount of voters on the first and the second day is the trace of the fraud activity, as in fact most of the voters came on the last day (19.09), then on the first day (17.09) and only then on the second (18.09). Meanwhile, 19.09 was the only date promoted in vote advertisements. When entire safe package contents of just one day gets replaced with votes for just one candidate, it reduces the amount of votes against that candidate, but preserves proportion between other candidates.

3. Handwritten results and fraud during count procedure.

Probably the dirtiest way to fake the election result in the given LEC. This way, the ballot papers amount and contents get completely ignored, and fake results get written in the final protocol.

Possible to see on result bars charts: handwritten protocols are usually the ones with abnormal result pattern that doesn't match the other ones.

4. Result override in the head TEC

Same as the previous fraud type, except that LEC may announce the proper result (sometimes even without any fraud), however, arbitrary result gets entered to the higher-level TEC protocol and electronic.

It's not possible to differ this method from the previous one without looking into violation reports.

5. Carousel voting

This method involves a group or several groups of people that drive through multiple election commissions and vote there without having the legal right to (registration address).

This usually arranged with TEC which arranges that LEC have a special commission member which does.

When such "carousel" members vote one by one, there's no way to trace them in the final protocols, as there's no way to differ them from the real voters. A group of 20 people could provide needed parties and candidates up to 400 votes within LECs of one TEC that has 20 local commissions.


Legislative Assembly of Saint Petersburg

Legislative Assembly has a lot of powers: from adopting city laws and controlling the budget up to assigning Magistrates' court and Statutory Court.

The special power of Legislative Assembly is to assign members of the head Saint Petersburg election commission, which organises the elections to Legislative Assembly.

This power excludes an option to have just elections in Saint Petersburg, as by having needed members it's able to ignore all election violation reports.

Below are charts that show how Legislative Assembly members have elected and descriptions of some of them. In case you couldn't find the one you were looking for, you can send election commission or district number to the bot.

In case you would like to learn more about Legisltive Assembly deputies, you may read this Zaks.ru article.

Relationship with Legislative Assembly with Federation Council

On federal level Legislative Assembly of Saint Petersburg is important, because it assigns one Federation Council member. One of the last and most important documents of Federation Council orders is, for example, the document from 22.02.2022 that allows use of russian army abroad in the undetermined location for the undetermined period which was supported by all members.

Legislative Assembly of Saint Petersburg assigned Andrey Kutepov there that declares that all sanctions against Russia do only good for russian people.

There are 200 Federation Council members: 30 are assigned directly by president (Vladimir Putin) and two per 85 Russian regions (one – from legislative power, one — from executive power).

The second Federation Council member is Valentina Matvienko, at the same time she is the head of it. Formally she is assigned by city governor Beglov, "elected" the same Saint Petersburg election commission in 2019.


Note: below is just a review of few electoral districts. It's possible to write a huge essay for each electoral district with detailed description on why specific candidate was assigned by the election fraud. If you want to improve this section, you can submit a pull request.


LA: District #21

The main candidate in district #21 was Maxim Reznik, 6-th Legislative Assembly deputy: YouTube channel, Telegram, campaign video, campaign website.

By using fabricated criminal case, Maxim was detained the next day Legislative Assembly elections were announced and put under house arrest. Local prosecutor illegally prohibited a meeting with notary, which made his further registration as a candidate impossible.

Different popular candidate Olga Galkina (5-th LA Assembly deupty) has successfully registered in this district and supported by Smart Vote strategy. When the voting was finished on 19th September at 20:00, members and heads of some local election commission ran away without announcing the result. 14 hours later TECs announced the fake results in that commissions.

On the chart above you may clearly see how such protocols managed to get Andrey Malkov from the last to the first place.

Andrey Malkov participated in the monitoring of the status of Saint Petersburg Sports and Concert Complex (it is located in the #21 electoral district area) and active promotion of the "SKA Arena" project after the soviet stadium was demolished. Vladimir Putin friends — Gennady Timchenko and Roman Rotenberg — are dreaming about the biggest ice skating area since 2018.


LA. District #3

In district #3 Irina Fatyanova did the most noticeable campaign in the city, during which she successfully got over 4 thousands signatures in support of her registration. You may read more about her campaign in this Economist article.

TEC #18, responsible for candidate registration, illegally canceled her candidate status following the procedure that does not exist in the law at all, and later the head Saint Petersburg election commission confirmed this decision.

After receiving this denial, she asked her supporters to come anyway and vote according to the Smart Vote strategy and called to become election observers.

Another candidate that was not able to participate was Ksenia Mihaylova. She was not allowed to participate because of absurd city court decision.

In district #3 all kinds of fraud were used, as well as administrative resources misuse, which was used to detain independent election observers. This way they faked the win of the Vyacheslav Makarov's daughter — Marina Makarova (changed the last name to "Lybaneva" during the election).

Above on the chart from the left to LEC 1652 — the most trustworthy protocols available. Right to them until LEC 1807, you may notice that the growth dynamics increases only for Marina — that's the result of simple ballot stuffing. After that commission are the commissions with the safe package replacements and hand-written results (amount of votes for Marina increases, for all other candidates combined — proportionally decreases). Black line is the sum of votes against Marina Lybaneva.


LA. District #2

In district #2 the main candidate was Boris Lazarevich Vishnevsky, city deputy since 2011: website, Telegram channel.

During ballot there were several Boris' "clones" registered — candidate who changed their names to "Boris Vishnevsky" just for these elections.

If you watch only for the final result, you may think that he missed just couple hundred votes in addition to those who mistakenly voted for his clones. In reality, Boris Vishnevsky's win was stolen by overridden protocols and carousel voting in support of Rzhanenkov.

He anyway remained the LA deputy, thanks to votes for Yabloko party, but if his win in district #2 wouldn't be stolen, there would be one more Yabloko party deputy in Legislative Assembly.

Boris also participated in State Duma elections in district #216, in which his win was stolen too. You can find charts for the State Duma elections in the folder.


LA. District #6

Mihail Amosov — one of three candidates on city governor elections in 2019 — won in district #6.

His win was not stolen, but you may notice that the gap from the United Russia candidate was significantly reduced by the fraud. Most likely it was used to hide real difference between their support. Just one LEC 509 formally got 1,743 votes for Dmitry Vasiliev.

Fake turnout and result in LEC #573

LA. District #6. LEC 509


LA. District #7

Nadezhda Tikhonova — the third candidate on 2019 governor elections — participated in LA district #7 and State Duma district #212, both of which were stolen from her, thanks to different election fraud methods used in the corresponding commissions.

The most absurd protocols are from LEC 573, where, formally, there was 100% turnout (1,922 people), 1,289 from which got to vote on the first day (17.09), and only 69 — on the last (19.09).

Fake turnout and result in LEC #573

LA. District #7. LEC #573


LA. District #24

One of the electoral districts that highlight that United Russia candidates are not the only holders of fake wins.


Other Legislative Assembly electoral districts

LA. District #1 LA. District #4 LA. District #5 LA. District #8 LA. District #9 LA. District #10 LA. District #11 LA. District #12 LA. District #13 LA. District #14 LA. District #15 LA. District #16 LA. District #17 LA. District #18 LA. District #19 LA. District #20 LA. District #22 LA. District #23 LA. District #25

Interesting findings in party voting (Legislative Assembly)

Despite the fact that the chart do not make it clear how many mandates approximately each party would get if there would be no election fraud, you may still clearly see the facts of the fraud, and sometimes not in favor of United Russia.

TEC 54

TEC 18

TEC 9

TEC 19

TEC 22

TEC 34

TEC 35

TEC 36

TEC 10

TEC 22

ТИК 22

Charts for all other territorial election commissions (TEC) can be found in the corresponding folder.

Mistakes during the election fraud

4 of 5 commissions which were involved in Lanskoe Municipality elections have drawn nonexistent significant support of United Russia candidates. But you may notice that in LEC 1806 one of these 5 candidates didn't receive any votes, and CPRF candidate got it instead.

Lanskoe Municipality

How did it happen? Answer is simple — CPRF candidate is just one line above the United Russia candidate, which won thanks to the dramatic fraud in other commissions. Most likely, whoever was entering the false data, made a mistake and put 488 votes to the wrong guy.

Lanskoe Municipality: table


On the next chart you may notice that in LEC 1798 (and, probably, 1805) CPRF's result was swapped with "Communists of Russia"'s result (red and brown bars).

TEC 9: State Duma parties

In different charts, in which you can clearly differ the close-to-reality protocols and protocols with stuffing for the specific candidate / party, you may sometimes notice one or couple commissions that have abnormal number of "invalid" or "taken home" ballot papers. Usually that's a trace of prepared pack of ballot papers for stuffing, but which commission members were not able to put in a stationary box (i.e. because of the election process observers activity).

State Duma electoral districts
Overall picture (for detailed review, refer to TEC charts)

State Duma: District #211 State Duma: District #212 State Duma: District #213 State Duma: District #214 State Duma: District #215 State Duma: District #216 State Duma: District #217 State Duma: District #218

District #211 by TEC (Tsentralny district))

State Duma: District #211 State Duma: District #211

District #211 by TEC (Nevsky district)

State Duma: District #211 State Duma: District #211 State Duma: District #211 State Duma: District #211 State Duma: District #211 State Duma: District #211 State Duma: District #211

District #212 by TEC (Kirovsky district)

State Duma: District #212 State Duma: District #212

District #212 by TEC (Krasnoselsky district)

State Duma: District #212 State Duma: District #212 State Duma: District #212 State Duma: District #212

District #212 by TEC (Petrodvortsovy district)

State Duma: District #212 State Duma: District #212

District #213 by TEC (Kalininsky district)

State Duma: District #213 State Duma: District #213 State Duma: District #213

District #213 by TEC (Vyborgsky district)

State Duma: District #213 State Duma: District #213 State Duma: District #213 State Duma: District #213 State Duma: District #213 State Duma: District #213

District #214 by TEC (Kalininsky district)

State Duma: District #214 State Duma: District #214 State Duma: District #214

District #214 by TEC (Krasnogvardeysky district)

State Duma: District #214 State Duma: District #214 State Duma: District #214 State Duma: District #214

District #215 by TEC (Primorsky district)

State Duma: District #215 State Duma: District #215 State Duma: District #215 State Duma: District #215 State Duma: District #215 State Duma: District #215

District #215 by TEC (Kurortny and Kronshtadtsky districts)

State Duma: District #215 State Duma: District #215

District #216 by TEC (Tsentralny district)

State Duma: District #216 State Duma: District #216

District #216 by TEC (Vasileostrovsky district)

State Duma: District #216 State Duma: District #216 State Duma: District #216

District #216 by TEC (Petrogradsky и Admiralteysky districts)

State Duma: District #216 State Duma: District #216 State Duma: District #216 State Duma: District #216

District #217 by TEC (Frunzensky district)

State Duma: District #217 State Duma: District #217 State Duma: District #217 State Duma: District #217 State Duma: District #217 State Duma: District #217

District #217 by TEC (Kolpinsky district)

State Duma: District #217 State Duma: District #217

District #218 by TEC (Moskovsky district)

State Duma: District #218 State Duma: District #218 State Duma: District #218

District #218 by TEC (Kirovsky district)

State Duma: District #218 State Duma: District #218 State Duma: District #218

District #218 by TEC (Pushkinsky district)

State Duma: District #218 State Duma: District #218


All charts charts can be found in the corresponding folder or generated manually using @spbik_bot.

You might also like...

optimize image & upload file to cloud as image bed with tiny image automic.

optimize image & upload file to cloud as image bed with tiny image automic.

Rush! 图片压缩 & 直传图床工具 这是一个兴趣使然的项目, 希望 Rush! 能让这个世界的网络资源浪费减少一点点 下载 Downloads 获取最新发行版 功能 Features 拖拽批量压缩图片, 支持格式 jpg/png/gif Drop to optimize, jpg/png/gif

Nov 12, 2022

This branch is created to make receive and send data to api using async and await methods

This branch is created to make receive and send data to api using async and await methods

Microverse-Leader-Board Project from module 2 week 4 This branch is created to make receive and send data to api using async and await methods Screens

Apr 22, 2022

A library with different methods to encode and decode data.

encryption_lib for Deno A library with different methods to encode and decode data. Usage Example: Caesar Cipher import { Caesar } from "https://deno.

Feb 3, 2022

A Javascript library to export svg charts from the DOM and download them as an SVG file, PDF, or raster image (JPEG, PNG) format. Can be done all in client-side.

svg-exportJS An easy-to-use client-side Javascript library to export SVG graphics from web pages and download them as an SVG file, PDF, or raster imag

Oct 5, 2022

All five assignments and the final group project is done in class CSCI5410 (Serverless Data Processing) Fall 2021 of MACS at Dalhousie University.

Dalhousie University | Fall 2021 | CSCI5410 | SDP (Serverless Data Processing) All five assignments and the final group project is done in class CSCI5

Dec 26, 2021

📚 Study guide and introduction to the modern front end stack.

📚 Study guide and introduction to the modern front end stack.

Grab Front End Guide Credits: Illustration by @yangheng This guide has been cross-posted on Free Code Camp. Grab is Southeast Asia (SEA)'s leading tra

Jan 3, 2023

Introduction to Metrics, Logs and Traces session companion code.

Introduction to Metrics, Logs and Traces in Grafana This is the companion repository to a series of presentations over the three pillars of observabil

Dec 24, 2022

For some realizations of the title and thinking of the book Introduction to Algorithms, if there is something wrong, please correct me.

Introduction-to-Algorithms Introduce Origin of this library Some implementations of the topics in Introduction to Algorithms and some reflections on t

Jun 9, 2022
Owner
Vyacheslav
Vyacheslav
Tiny website for previewing the ballot papers (house and senate) for Austalian federal elections

AusBallot Code for https://ausballot.netlify.app/ The AEC (Australian Electoral Commission) has this page to view all the candidates for an upcoming e

Robin Stocker 4 Jun 1, 2022
Chrome extension that uses vulnerabilities CVE-2021-33044 and CVE-2021-33045 to log in to Dahua cameras without authentication.

DahuaLoginBypass Chrome extension that uses vulnerability CVE-2021-33044 to log in to Dahua IP cameras and VTH/VTO (video intercom) devices without au

null 71 Nov 26, 2022
ln-charts parses the output of bos accounting commands into various charts for your Lightning Node.

ln-charts ln-charts parses the output of bos accounting commands into various charts for your Lightning Node. It runs on Angular, JS, HTML, CSS, ngx-c

Steven Ellis 21 Dec 18, 2022
Text Engraving & Extrusion demo based on Three.js is implemented with Typescript and webpack5. Used THREE-CSGMesh as the core tech to achieve engraving and extrusion results

Text Engraving & Extrusion Text Engraving & Extrusion demo is implemented using Three.js, with Typescript and webpack5. Used THREE-CSGMesh as the core

Jiahong Li 3 Oct 12, 2022
Leader Board is a simple project based on JavaScript programing language. The purpose of this project is to work with APIs and ASYNC & AWAIT methods. I have used vanilla JavaScript with web pack to implement this project

Leader Board - JavaScript Project Table of contents Overview The challenge Screenshot Links Project Setup commands My process Built with What I learne

Mahdi Rezaei 7 Oct 21, 2022
PLSC 21510/31510: Introduction to Text as Data for Social Science (Spring 2022)

PLSC 21510/31510: Introduction to Text as Data for Social Science Spring 2022 About Social scientists increasingly use large quantities of text-based

Rochelle Terman 16 Oct 17, 2022
Course material for a ~10 hours introductionary course for Julia. Topics: Introduction, Parallel Programming, Data Science

Development We use Franklin.jl to generate the lecture material. To do so, simply activate the environment, use Franklin and run the local server: act

GregorE 3 Dec 15, 2022
Introduction to R for Clinical Data for the R/Medicine 2022 Virtual Conference

This is the GitHub repository for the R/Medicine 2022 pre-conference workshop R/Medicine 101: Intro to R for Clinical Data. There is a course website

Stephan Kadauke 10 Sep 23, 2022