2023 Sejm election · district no. 3 · martastozek.pl
Marta StożekRazemdamyradę! (‘Together we can do it!’) — a Sejm campaign from strategy to delivery
For five months I designed Marta Stożek's whole campaign: from the strategy, through a website with a map of 107 local petitions that I designed and built myself in Webflow, to measurement, ads, banners with QR codes, e-mail, MMS and the campaign's back office. A small budget, a few months and the electoral code — and, in the end, 19,434 votes.

Petitions on the district map
107 petitions
Petition · all of Wrocław
Wrocławianie i Dolnoślązacy domagają się jednego biletu na kolej KD i MPK
486 of 500 signatures
Names, figures and form data in the scenes are made up.
- local petitions
- 107
- Google Ads conversions
- 10,559
- Google search impressions
- 36,000
- votes on 15 October
- 19,434
00The brief
A whole campaign, a small budget and the electoral code
On this project I stepped out of the product designer's role and became the designer of an election campaign. It lasted a few months on a small budget: I planned the team's work and looked for solutions that were effective but cheap — while keeping to the rules that bind an election committee.
A few months
From May to election night on 15 October 2023 — no time for long iterations.
A small budget
Every action had to give a lot for little: organic traffic, cheap conversions, a build without an agency.
The electoral code
A candidate may not state outright that she belongs to a party whose list she is not running on.
15.10.2023 Election day
Say it without saying it
Marta Stożek ran on the Lewica (Left) list, but she is a Razem activist. The site had to comply with the electoral code and still let people see that she is Razem's candidate — without saying so outright.
A description of what the 2023 boards of the site show.
What the site could not say
Marta Stożek — the Razem party's candidate
Act I
The website
A site that collects residents' issues — designed and built from scratch.
01Visual design
A site that acts locally
I combined design with knowledge of politics and public communication. The site had to be attractive, functional and consistent with Razem's identity — within the limits of the electoral code.
What I did
- Research into the needs of voters, supporters and activists: profiles, preferences, motivations and problems.
- A review of competitors and inspirations — Polish and foreign political and civic sites.
- A look at Razem's and the candidate's strategy and narrative: mission, values, programme, slogans.
- A moodboard, style guide and wireframes, then the layouts of every page in Figma.
Process
- 1NeedsWho the voters, supporters and activists are — and what they look for.
- 2CompetitorsPolitical and civic sites from Poland and abroad: strengths, weaknesses, good practice.
- 3StrategyThe candidate's and the party's mission, values, programme and slogans.
- 4StyleA moodboard, a style guide and wireframes.
- 5FigmaThe layouts of every page of the site.
Petitions instead of banners
On a small budget the team and I bet on organic traffic: a system for reporting, signing and sharing petitions about local issues in the district. Residents shared the petitions on social media and commented on the candidate's posts about their issues.
It set the candidate apart as someone who really works for Wrocław rather than just ‘hanging on banners’.
A resident reports a problem through ‘Report a local issue’.
A resident reports a problem through ‘Report a local issue’.
01.1Site map
Nine pages, each ending in an action
The site tells the candidate's story, but above all it leads to an action: a signature, a report, a meeting sign-up, a donation or a vote.
Petycje — Every petition by district, with a map and a search.
Pick a page to see where it leads.
01.2Home page
From the spot to ‘Głosuję’ in ten steps
I designed the home page as a funnel: each block brings you closer to pledging your vote and signing up for an election reminder.

The hero in 2023 (recording)
Hero and the candidate
Q&A
‘Vote on 15 October’
Screenshot, 2023
01.3O mnie
Mother, feminist, leader
The ‘About’ page shows the candidate as a mother, a professional and an activist.
A mother of five
‘I have the diplomatic skills of a mother of five’ — that's how her description on the home page begins.
Screenshot, 2023
01.4Program wyborczy
Four pillars, four colours
The programme rests on four pillars. Each has its own colour on the site — in headings, icons and graphics.
Bezpieczna rodzina
Każda rodzina ma równe prawo do szczególnej opieki państwa polskiego, dostępu do ochrony zdrowia, edukacji i wsparcia w opiece nad dziećmi, osobami niesamodzielnymi i osobami z niepełnosprawnościami. Tak rozumiem troskę o rodzinę.
Quotes: the 2023 board (Safe family) and martastozek.pl, 29.10.2026.
01.5Problemy lokalne
107 petitions on the district map
The petitions page lists every issue by district, with a map and a search. Below is a working replica on the site's real data: 106 local petitions and one national one that succeeded.
106 of 106 petitions
Outlines: © OpenStreetMap contributors (ODbL)
‘After our intervention, the wait to reach an ambulance dispatcher fell by 52%!’ — this is how the site showed initiatives that succeeded.
Petitions, districts, positions and banner links: martastozek.pl as of 29.10.2026. Four petitions without a position on the site's map stand at the place named in their title (Nominatim). 11 of them are about nurseries and day-care points.
01.6Petition page
From a report to a signature
Each petition can show the person who reported the issue and the #ekipaSTOŻEK member who looks after it. The form collects the signature and consent, and — on the way — a vote pledge and a newsletter sign-up. It also asks for pronouns.
Wszystkie petycje
Od:
- Katarzyna HałdysOsoba zgłaszająca
- Marta StożekOpiekunka sprawy
- Mieszkańcy347 osoby podpisały petycję
Do:
- Prezydent i Rada Miasta WrocławOdbiorca petycji
Zakaz homofobicznych billboardów i ciężarówek we Wrocławiu!
Szanowny Panie Prezydencie Wrocławia, Szanowni Radni Miejscy,
jako mieszkańcy Wrocławia, zwracamy się do Państwa z prośbą o podjęcie działań mających na celu zakazanie umieszczania homofobicznych billboardów w przestrzeni miejskiej.

Names, figures and form data in the scenes are made up.
01.7Events
Sign up and add it to your calendar
On the events page you can sign up for a meeting with the candidate and add it to your calendar straight away.
An open meeting with Marta Stożek
Names, figures and form data in the scenes are made up.
01.8#ekipaSTOŻEK
The campaign's people — and room for new ones
The ‘#ekipaSTOŻEK’ page introduces the people who worked with the candidate, and the ‘Join #ekipaSTOŻEK’ form invites volunteers.
- Krzysztof Markowskiteam coordinator
- Tymon Rzewuskiphoto and video
- Dawid Majewskiphoto and video
- Krzysztof Bełkowskiphoto and video
- Rienka Kasperowiczcopywriting
- Reinan Janikowskacopywriting
- Daria Szklarewiczcopywriting
- Katarzyna Hałdyscopywriting
- Rafał PitońIT advice
- Jakub Nowakcampaign designer
01.9Głosuję
Can you vote for Marta?
I designed the logic and layout of the ‘Głosuję’ (I'm voting) page: after a few simple questions you know whether you can vote for the candidate — and if not, what to do so you can. At the end: how to vote and a reminder sign-up.
- 1Czy jesteś zameldowany we Wrocławiu albo w powiecie górowskim, milickim, oleśnickim, oławskim, strzelińskim, średzkim, trzebnickim, wołowskim lub wrocławskim?
Czy jesteś zameldowany we Wrocławiu albo w powiecie górowskim, milickim, oleśnickim, oławskim, strzelińskim, średzkim, trzebnickim, wołowskim lub wrocławskim?
Nie wiesz, gdzie jesteś zameldowany? Możesz to sprawdzić w serwisie gov.pl
Questions, layout and form as on the site. Today the page covers later elections — the replica goes back to 15 October 2023 (district no. 3, list no. 3, position 2).
02Build
No developers: I built it myself in Webflow
We had no developers, and the budget didn't allow for an outside firm — so I built the site myself in Webflow. It saved time, gave me full control over how the site looks and behaves, and made integrations with other tools easy.
What I did
- Grid: a two-dimensional layout, easy to adapt to every screen size.
- Flexbox: one-dimensional layouts.
- Components: ready-made elements with their own styles and behaviour.
- Variables: values the whole site uses.
- Style selectors: rules for how elements look and behave.
The same list of petition cards in a grid: the columns follow the width.
- Wrocławianie i Dolnoślązacy domagają się jednego biletu na kolej KD i MPKall of WrocławPodpisz petycję
- Chodnik na wiadukcie brochowskim - tego potrzebują piesiBrochówPodpisz petycję
- Nie chcemy żyć w strefie wojny! Domagamy się od Prezydenta Wrocławia ograniczenia hałasu z wojskowej strzelnicyKarłowice-RóżankaPodpisz petycję
- Kuźniki - dofinansowanie jedynego żłobka i budowa nowego, publicznego!KuźnikiPodpisz petycję
Act II
Measurement
Every click counted, every session ready to watch.
03Google Tag Manager
One container, every click counted
I set up a GTM account and container for martastozek.pl and used it to add, test and publish tags — without touching the site's code.
What I did
- The GTM account and container, with the container code in the site.
- Tags built from templates, variables and triggers: Google Analytics, Google Ads, Facebook Pixel, LiveSession, Mailchimp, Google Maps and more.
- Testing in preview and debug mode before publishing.
- Watching the tags' impact on performance (PageSpeed Insights, Search Console).
martastozek.pl
Tags and triggers copied from a screenshot of the container (January 2024); IDs left out.
04Google Analytics
Numbers that changed decisions
I deployed GA4 through Tag Manager, built and tailored reports, and turned the data into changes to the site, the content and the ads.
- 01SetupThe GA4 code in the GTM container and on the site.
- 02ReportsAudience, acquisition, engagement, conversions — filtered as needed.
- 03AnalysisStrengths, weaknesses, problems and room to improve.
- 04ActionFindings turned into changes to the site, content and ads.
1 21k users
Figures read from the GA4 report screenshot.
05LiveSession
Qualitative analysis: session replays
Session replays showed how people really use the site: where they click, scroll and get lost. I picked sessions by segment, watched them and drew conclusions.
What I did
- The LiveSession code deployed through Tag Manager.
- Picking sessions by segment: location, device, traffic source, behaviour.
- The session player, heatmaps, analytics, comments, tags and surveys.
- Findings and changes to the site, content and ads.

00:00Lands on ‘/’00:05Click: ‘Program wyborczy’00:05Lands on ‘/program-wyborczy’00:31End of the recording
Session events as in the LiveSession screenshot; the heatmap blobs are an illustration, not data.
06SEO
Visibility in Google without an ad budget
I audited the finished site for SEO, made the fixes and regularly analysed the data in Google Search Console.
What I did
- An audit: speed, responsiveness, accessibility, linking, keywords, markup, structured data.
- Fixes and improvements based on the audit.
- Verifying the site in Search Console.
- Performance, coverage and enhancements — new fixes every few days.
- Load speed
- Responsiveness
- Accessibility
- Linking
- Keywords
- Markup
- Structured data
Publiczny żłobek na Klecinie - wesprzyj naszą inicjatywę!
Pomóż nam stworzyć publiczny żłobek lub dofinansowywany przez miasto punkt opieki na Klecinie! Podpisz apel do władz miasta…
- impressions in Google results during the campaign
- 36,000
- clicks from search results
- 5,400
The search query is made up; the petition's description is the site's.
Act III
Reach
Ads at a few dozen grosze per conversion, banners with QR codes and conversations in neighbourhood groups.
07Google Ads
73 ads, PLN 0.26 per conversion
I co-created the Google Ads campaigns — one of the candidate's main channels online: in search, in the display network and on YouTube.
What I did
- Research into the keywords voters and supporters searched for.
- Goals and strategy: budgets, audiences, locations, schedules, conversion tracking.
- The concept and copy of ads that answered voters' problems.
- Monitoring results and optimising.
Text ads: bringing in new visitors.
Sponsorowane
mmartastozek.pl › petycje
Jeden bilet na KD i MPK | Podpisz petycję
Wrocławianie i Dolnoślązacy domagają się jednego biletu na kolej i MPK. Dołącz!
- unique ads
- 73
- impressions
- 1,253,349
- conversions: signatures, newsletter, spot
- 10,559
- average cost per conversion
- PLN 0.26
The copy in the builder is made up (based on a petition from the site); the figures are the campaign's.
08Meta Ads
40 ads, PLN 0.19 per conversion
With the team I worked out the concept and copy of ads on Facebook and Instagram: in feeds, in reels and stories, and in Messenger. Along the way I exchanged hundreds of messages with Meta and Google Ads support.
What I did
- Audience research: demographics, interests, behaviour.
- Budget, schedule, conversion tracking and optimisation.
- The concept and copy for three placements.
- Monitoring the results.
Awareness, engagement and traffic to the site.
Masz dość nielegalnego parkowania na chodnikach, trawnikach i skrzyżowaniach?

- unique ads
- 40
- impressions
- 387,785
- conversions
- 7,843
- average cost per conversion
- PLN 0.19
The ad copy as in the Meta Ads screenshot; the Messenger chat is made up.
09Remarketing
Saw the programme, didn't sign — we come back
I built remarketing lists in Meta Ads and Google Ads and sent them to landing pages matched to the visitor's profile.
What I did
- Remarketing lists and segments in Meta Ads and Google Ads.
- Remarketing campaigns in both systems.
- Landing pages with the candidate's offer matched to the visitor's profile.
- 01SegmentSaw the programme, signed no petition.
- 02AdA Meta Ads and Google Ads campaign for this list only.
- 03Landing pageThe candidate's offer matched to the profile.
- Visited the programme
- Signed a petition
- Remarketing list
Nurseries and day-care near home.
The profiles and landing headlines illustrate the principle; they are not the campaign's list.
11Neighbourhood groups
The petition where neighbours talk
I joined neighbourhood groups on Facebook across the district and posted links to petitions on residents' issues — no spam, with conversation.
What I did
- Joining neighbourhood groups in district no. 3.
- Links to petitions on local issues — e.g. a public nursery in Klecina or fewer off-licences.
- Encouraging signatures, shares and comments — within each group's rules.
- Watching residents' reactions.
Jak wiecie, Stare Miasto jest narażone na duże zanieczyszczenie powietrza i hałas spowodowany przez ruch samochodowy. Dlatego zachęcam Was do podpisania petycji, która domaga się wprowadzenia zakazu wjazdu samochodów na Stare Miasto.
MARTASTOZEK.PLDość spalin i hałasu na Starym Mieście! Mieszkańcy Wrocławia domagają się zakazu wjazdu samochodów- comments
- 14
- shares
- 6
- new signatures
- +41
The post shortened from the original; reaction counts made up.
12Influencer marketing
Voices their audiences trust
I looked for creators and podcasters in line with the campaign's mission and values, negotiated terms and coordinated the work — with long-term relationships in mind.
What I did
- Finding and selecting creators: BuzzSumo, Influencer Marketing Hub, Briefme.
- Outreach, the offer and negotiating terms.
- Coordinating and monitoring the collaborations.
- Building long-term relationships.
- SynMojegoTaty
- Paulina Matysiak
- Odsłuch Społeczny
- Lewi Prawią
- Ralindel
- ka.per
Act IV
Media and conversation
Social media, press conferences, live streams and chat — the candidate reachable on every channel.
13Agorapulse
Every account in one place
To co-run the social media I rolled out Agorapulse: scheduling, monitoring interactions and analysing results in one tool.
What I did
- Mapping the needs of the social media team.
- Choosing the tool: intuitive, with settings for each platform.
- Configuring it for the team.
- 01SchedulingOne schedule for every account.
- 02MonitoringComments and messages in one inbox.
- 03AnalysisReports show what works.
The calendar in the scene is made up.
14Press and meetings
Invitation, press note, live stream
I co-organised press conferences and meetings with voters — from invitations for journalists to live streams on all of the candidate's profiles.
- Invitation and noteWriting invitations and press notes, with graphics.
- DistributionLocal and national media, with lead times set by how often they publish, and personalised messages.
- Live streamLive on Facebook, Twitter, YouTube and Instagram: ATEM Mini Pro and Restream.
15Live streams
Our own studio: ATEM Mini Pro and Rode NT-USB+
I made the case for the equipment, set it up and streamed live — to YouTube, Facebook, Instagram and TikTok.
What I did
- The case for buying: benefits, features, cost, suppliers.
- Setup in ATEM Software Control and Rode Connect: picture, sound, transitions, compression, gate.
- Streaming live to the platforms.

- YouTube
- TikTok
16Subtitles
Every word on screen
I transcribed the dialogue in veed.io, fixed spelling, grammar, punctuation and style, and added the subtitles natively — or burned them into the video for platforms without captions.
- 01Transcriptionveed.io turns the audio into text.
- 02ProofreadingSpelling, grammar, punctuation, style.
- 03PublishingNative or burned-in subtitles — Facebook, Instagram, Twitter, YouTube, TikTok.
- będą robić
00:53.9 - wszystko
00:54.3 - i głosować na
00:54.5 - wszystkich ktorzy
00:55.6 - pozwolą
00:56.6 - im zabezpieczać
00:57.3 - swój byt kosztem przyrody
00:58.6
Phrases and timings from the editor screenshot; the typo to fix is added for the scene.
17Voting advice apps
Answers that speak with one voice
I drafted the candidate's answers to the statements in voting advice apps — in line with the programme and Razem's message — went over the tricky ones with her and the team, sent them to the organisers and published them on the site.
- 1Statement
- 2Draft answer
- 3Review
- 4Sent
- 5On the site
The statements and answers are deliberately shown as bars.
18Livechat
A conversation instead of a form
I put a chat widget on the site, wrote conversation scripts and answered voters on the candidate's behalf.
What I did
- Installing and configuring Livechat on martastozek.pl.
- Scripts: greeting, introduction, question, programme, an invitation to sign, thanks.
- Answering voters' messages on the candidate's behalf.
Greeting and form as in the chat; the conversation in the scene is made up.
Act V
Mobilisation
E-mails and MMS messages that remind people of 15 October.
19Mailchimp Journey
E-mails that react to behaviour
I designed automated e-mail journeys after actions on the site: signing a petition, reporting a local issue or signing up for an event.
What I did
- The concept and scenarios of journeys after actions on the site.
- Starting points, rules and actions.
- Testing and optimising: audience, opens, clicks, conversions, unsubscribes.
20Mailing
The Friday before the silence: a 40.36% open rate
With Rienka Kasperowicz I planned an election-reminder mailing to people who had signed up on the site — sent on the Friday before the election silence.
What I did
- The audience from sign-ups on the site.
- Sending it in Mailchimp on the Friday before the silence.
- Analysis: recipients, opens, clicks, bounces.
21MMS
A reminder straight to the phone
With Krzysztof Markowski and Tymon Rzewuski I prepared the text and graphic of an MMS, and I sent it through an SMS API to people who had signed up on the site.
What I did
- A list of numbers from sign-ups on the site.
- The MMS text and graphic, with the team.
- Sending through an SMS API and analysing delivery.

Sender's number blurred.
Act VI
Back office
Contracts, documents, GDPR, donations, mail and phone — everything you don't see.
22Contracts, orders, invoices
The paperwork no campaign runs without
I wrote contracts with suppliers, placed orders and settled invoices — lawful, and protecting the election committee's interests.
- Contract
- Order
- Invoice
- Booked
23Site documents
Terms, privacy policy, accessibility statement
I wrote the three legal and technical documents of martastozek.pl.
- What data, for what purpose, on what legal basis
- How long and how they are protected
- Users' rights and how to use them
- The controller and processors — in line with the GDPR
24GDPR requests
The right to be forgotten, in practice
I took requests to erase data, checked the GDPR grounds, deleted the data from every system and confirmed it to the requester by e-mail.
- 1Request: form or e-mail
- 2Checking the GDPR grounds
- 3Erasing the data
- 4Confirmation by e-mail
- The martastozek.pl database
- The local petitions system
- Mailchimp
- Google Analytics
- SMS API
25Fundraising
Online donations — the plan and the reality
I agreed with KIR (the Polish clearing house) on a PayByNet integration and designed the ‘Wpłacam’ (Donate) page. The project hit organisational obstacles and in the end shipped in a cut-down form.
Designed
- 1Amount and details on the ‘Wpłacam’ page
- 2Redirect to PayByNet and bank login
- 3Confirmation and thanks
Shipped: bank transfer details
Dane do przelewu
Zaloguj się do swojej bankowości elektronicznej i wykonaj przelew.
- Numer rachunku bankowego70 1020 •••• •••• •••• •••• 0984
- Tytuł przelewuDAROWIZNA, MARTA STOŻEK
- Nazwa odbiorcyFUNDUSZ WYBORCZY NOWEJ LEWICY
- UlicaUL. ZŁOTA 9 LOK.4
- Kod pocztowy i miejscowość00-019 WARSZAWA
The account number is masked; copying in the scene doesn't touch your clipboard.
26Google Workspace
The kontakt@martastozek.pl inbox
I set up Google Workspace on the campaign's domain and answered the committee's mail: from voters, volunteers, partners and the media.
- A voterA question about the programme: nurseries
- A volunteerI'd like to help at a meeting
- A newsroomA request for comment
- An organisationA proposal for a joint action
- A voterWhere can I vote?
The messages in the scene are made up.
27The campaign's phone number
One campaign number, on everyone's phone
In the PRIV app I activated an extra number and shared it with the team: calls from the campaign number on private phones, without revealing anyone's own number.
- Coordination
- Social media
- Photo and video
- Copywriting

The campaign number is masked.
28The result
19,434 votes, and then an MP's seat
On 15 October 2023 Marta Stożek won 19,434 votes — the ninth best result in district no. 3, but no seat. In April 2024 she was elected to the Lower Silesian regional assembly (I ran that campaign too), and on 26 June 2024 she took her oath as an MP.
- votes in 2023
- 19,434
- new voters compared with 10,212 votes in 2019
- +9,222
- MPs entered the Sejm with fewer votes
- 222
- Razem's share of the Nowa Lewica list (up from 16.9%)
- 27.7%
District no. 3, 2023 Sejm election — from the candidate's post
| Rank | List position | Name | Votes | Committee | Seat |
|---|---|---|---|---|---|
| 1 | 1 | Mirosława Stachowiak-Różecka | 97,193 | PiS | yes |
| 2 | 4 | Bogdan Zdrojewski | 85,099 | KO | yes |
| 3 | 1 | Alicja Chybicka | 78,816 | KO | yes |
| 4 | 1 | Krzysztof Śmiszek | 34,577 | Lewica | yes |
| 5 | 1 | Tomasz Zimoch | 34,187 | TD | yes |
| 6 | 3 | Michał Jaros | 30,512 | KO | yes |
| 7 | 3 | Izabela Bodnar | 26,404 | TD | yes |
| 8 | 1 | Krzysztof Tuduj | 25,922 | Konfed. | yes |
| 9 | 2 | Marta Stożek | 19,434 | Lewica | no |
| 10 | 2 | Paweł Hreniak | 19,384 | PiS | yes |
| 11 | 3 | Agnieszka Soin | 18,645 | PiS | yes |
| 12 | 2 | Małgorzata Tracz | 17,693 | KO | yes |
| 13 | 2 | Jacek Protasiewicz | 16,684 | TD | no |
| 14 | 4 | Jacek Świat | 13,663 | PiS | yes |
| 15 | 6 | Anna Sobolak | 7,675 | KO | yes |
| 16 | 11 | Jolanta Niezgodzka | 7,262 | KO | yes |
- Sejm election19,434 votes, position 2 on list no. 3 (Lewica).
- Regional electionA similar campaign for the Lower Silesian regional assembly: a seat and 13,369 votes.
- Petition → interpellationUnder the petition against homophobic billboards appears an interpellation to the regional board.
- MP's oathMarta Stożek takes up her seat in the 10th-term Sejm.
- interpellations she signed (1.07.2024 – 25.09.2026)
- 235
- filed on her own
- 180
The same issues, a higher level
The most frequent topic of the 2023 petitions — nurseries and day-care points (11 petitions) — comes back in the MP's interpellations.
- 2023Publiczny żłobek na Klecinie - wesprzyj naszą inicjatywę!SejmInterpellation no. 8959 on the steady rise of fees for public nurseries (1.04.2025)
- 2023Kuźniki - dofinansowanie jedynego żłobka i budowa nowego, publicznego!SejmInterpellation no. 15430 on regional inequality in access to care for children under 3 (18.02.2026)
The candidate's posts after the election, October 2023
Sources: the 2023 result — the Sejm API (MP no. 484) and the candidate's post with the district table; 2019, the 222 MPs and Razem's share — the candidate's posts; the 2024 regional election — the case study; the oath and interpellations — the Sejm API, read 29.10.2026.
Team
#ekipaSTOŻEK
A campaign is teamwork — here are the people from the case study.
- Candidate
- Marta Stożek
- Campaign designer
- Jakub Nowak
- Team coordinator
- Krzysztof Markowski
- Photo and video
- Tymon Rzewuski, Dawid Majewski, Krzysztof Bełkowski
- Copywriting
- Rienka Kasperowicz, Reinan Janikowska, Daria Szklarewicz, Katarzyna Hałdys
- IT advice
- Rafał Pitoń
- Razem branding
- Sebastian Jagła
- Typefaces: Clash Display and Clash Grotesk — Indian Type Foundry (Fontshare); Lato — Łukasz Dziedzic.
- Map outlines: © OpenStreetMap contributors (ODbL).
- MP data: the Sejm API.
Gallery

2