Projects

Side projects and experiments — mostly Python, mostly data.

Polish Sejm Data Scraper

The Sejm API gives you access to terms, sittings, votings, votes, and MPs — but has no keys, undocumented nullables, and inconsistent structures across terms. This scraper downloads everything into a local DuckDB database with SHA-256 natural keys, foreign key constraints, Pydantic validation, and a normalised schema. It also merges MP identities across terms and normalises single-option and multi-option votings into a unified model. Python, DuckDB, anyio, httpx.

Multi-Criteria Decision Making with (Fuzzy) TOPSIS

A Streamlit app that implements TOPSIS and Fuzzy TOPSIS for ranking alternatives across weighted criteria. Useful when you need a structured way to compare options instead of gut feel.

Stock Price Simulation Using Monte Carlo Method

A Jupyter notebook that runs Monte Carlo simulations on historical stock data to model possible price paths. Built it to understand how randomness and distribution assumptions shape investment risk estimates.