Principles
- There are no scores, rankings or “ratings” of MPs. The number of bills submitted or speeches made does not measure the quality of the work.
- Every metric has a definition and a coverage status: complete, partial, not imported, no structured data. A zero with complete data is a verified zero.
- We distinguish official links (stated by the source) from inferred ones (e.g. a vote linked to a bill from the text of its topic). Inferred links are marked in the interface.
- The sponsors of a bill are not necessarily the authors of any particular text in the law; a proposal adopted in committee may not make it into the final text.
- Historical affiliation (group, position) is determined from dated memberships as of the date of the event.
Identity of persons
parliament.bg issues a new identifier for each term of office. Terms are merged into one person by full name and date of birth. Roll-call votes are matched by full name within a National Assembly; speeches by first name and surname, only when the match is unambiguous.
Votes
For each MP the roll-call files contain “+” (for), “−” (against), “=” (abstain) or “0” (did not vote), and at registration “П” (present) / “О” (absent). “Did not vote” does not necessarily mean absent. The “adopted/not adopted” result is computed by a simple majority of those voting; special majorities are not modelled. The stage (first/second reading, procedure…) is determined from the topic. Procedural motions (e.g. for live broadcast) are not counted as proposals on bills. The registration code “Р” is not explained by the source; since those marked “Р” go on to vote, it is counted as present. The date and content of every file are checked against the sitting: when a file from another day or of another kind is attached to a sitting, the CSV version is used if it is correct; otherwise the roll-call results are not imported and the sitting is flagged with a data-quality note.
Absences
The National Assembly publishes a register of unexcused absences: from a plenary sitting or from a meeting of a particular committee. Absences for valid reasons are not recorded, so the lack of a record means “no unexcused absence recorded”, not necessarily presence. Records are shown in the timeline and in the calendar tooltips, but are not counted as activity. The source returns at most 100 records per request, so on the few days with more records (whole groups absent) the list is incomplete; the count is then a lower bound (“≥ N”) and the metric is marked as partial.
Declarations of assets and interests
The declarations come from the public register of the Anti-Corruption Commission and are shown by year, as filed, without corrections, currency conversion or summing across years. We do not reproduce spouses' income, the names of other persons or the exact addresses of properties (the municipality remains). The original file is linked to each declaration. MPs' pay is not published separately: it is set by the Rules of Procedure and is the same for everyone; the declarations state the annual tax base from employment income.
Cohesion, agreement and co-sponsorship
- Group majority in a vote is the most common of “for”, “against” and “abstain” among the group's members who voted (from the official result by group). In a tie the group has no majority. Independents are not a group.
- Cohesion = members voting with the majority / members voting. Only votes with at least 3 voting members are counted; “did not vote” is not a position.
- Agreement between two groups = share of votes in which both have a majority and it is the same.
- With the group majority (in the profile) = share of the MP's votes as a group member that match the group majority in the same vote; the MP's own vote is part of that majority.
- Co-sponsorship: two MPs are linked if they are among the sponsors of the same bill. The network layout is automatic, and how close the dots are has no meaning of its own.
These are descriptive shares and counts, not an assessment of “loyalty” or of work; procedural votes count the same as all others.
Search
Search is full-text: every word entered must appear, and it is also matched as the start of a word („бюджет“ also finds „бюджета“, „бюджетът“), regardless of case. Transcript results are ordered from newest to oldest; speeches by the presiding officer are not indexed.
Deduplication
A bill with many sponsors counts once for each of them, and only once per sponsor, however many documents or stages it appears in. Proposals between first and second reading are counted by registration number.
Metric definitions
Days in office
days_in_office- Sum of the days between the start and the end (or today) of each term, based on membership of the National Assembly.
National Assemblies
assemblies_served- Number of National Assemblies in which the person has been an MP, according to the profiles on parliament.bg (including ones not imported).
Bills submitted
bills_sponsored- Number of distinct bills in which the person is listed as a sponsor. A joint bill counts once for each sponsor. Also shown per 100 days in office.
…as sole sponsor
bills_sole_sponsor- Bills in which the person is the only listed sponsor.
…passed at first reading
bills_passed_first- Bills submitted for which parliament.bg records adoption at first reading in the plenary.
…adopted and promulgated
bills_enacted- Bills submitted that were promulgated in the State Gazette (with the issue number given). Adoption of a bill does not mean that all of its provisions became part of the law.
…pending
bills_pending- Bills submitted with no final decision in the current National Assembly.
…no decision before the Assembly ended
bills_lapsed- Bills submitted that were not adopted before the end of the National Assembly's term.
…withdrawn
bills_withdrawn- Bills submitted that are marked as withdrawn.
…rejected
bills_rejected- Bills submitted that were rejected in the plenary (as recorded on parliament.bg).
Amendment proposals (between readings)
amendments_proposed- Number of registered written proposals (Art. 83 of the Rules of Procedure of the National Assembly) in which the person is a sponsor. One proposal may cover many provisions. Also shown per 100 days in office.
…on different bills
amendments_bills- Number of distinct bills on which the person has made proposals.
Adopted / rejected in committee
amendments_outcome- The outcome of proposals is contained in the committee reports (PDF) and is not published in structured form. Not calculated.
Proposals voted on in the plenary
proposals_voted- Plenary votes whose subject refers to a proposal by the person ("proposal by …"). The link is inferred from the text of the subject. Revotes are not counted separately.
…adopted in the plenary
proposals_voted_adopted- Of the above, those with more “for” votes than half of those voting (calculated; special majorities are not taken into account).
Votes cast
votes_cast- Roll-call votes in which the person voted “for”, “against” or “abstain”. Also shown per 100 days in office.
“For”
votes_for- Roll-call votes “for”.
“Against”
votes_against- Roll-call votes “against”.
“Abstained”
votes_abstain- Roll-call votes “abstain”.
No vote
votes_not_cast- Votes during the term in which the person is on the roll-call list but did not vote (code “0”). Does not distinguish absence from being present without voting.
Vote participation (%)
vote_participation- Votes cast / (votes cast + no vote) × 100.
With the group majority (%)
votes_with_group- Share of “for”/“against”/“abstain” votes cast as a member of a parliamentary group that match the group's majority in the same vote (based on the official results by group; the person's vote is part of that majority). Votes in which the group is tied or fewer than 3 members voted are not counted. Independent MPs are not included.
Sittings with registration
sittings_registered- Sittings with roll-call data in which the person is registered as present at least once (code “П”, as well as “Р”, which is registration by other means, whose meaning the source does not explain).
Sittings in the roll-call data
sittings_in_records- Sittings with roll-call data in which the person appears on the list.
Unexcused absences from the plenary
absences_plenary- Entries for the person in the National Assembly's “Unexcused absences” register of the type “absence from the plenary”. The register contains only the absences that the National Assembly has marked as unexcused.
Unexcused absences from committees
absences_committee- Entries in the same register for absence from a sitting of a standing or temporary committee.
Speeches
speeches- Speeches in the plenary according to the transcripts (replies, counter-replies and reports are counted separately). Chairing the sitting is not counted. Also shown per 100 days in office.
Words spoken
speech_words- Total number of words in the speeches above.
Turns as presiding chair
presiding_turns- Interventions while chairing a sitting (Chair/Deputy Chair).
Parliamentary questions
questions- Questions and interpellations to members of the Council of Ministers listed in the profile. Also shown per 100 days in office.
…of which interpellations
interpellations- Interpellations (Art. 107 of the Rules of Procedure), i.e. records of the type “Interpellation”.
Committee memberships
committee_memberships- Distinct standing and temporary committees in which the person is a member or holds a leading position.
Leading positions in committees
committee_leadership- Distinct committees in which the person is Chair or Deputy Chair.
Changes of parliamentary group
group_changes- Number of times the person becomes a member of a different parliamentary group within a single term.