A Python-based tool for comparing and scoring privacy labels across iOS and Android platforms. Built as part of a BSc Cyber Security final year project at De Montfort University.
Privacy labels — the short summaries apps publish on the App Store and Google Play — are often incomplete, vague, or inconsistent between platforms. Privacy Sentinel lets you enter label data for both platforms side by side, then scores them on three criteria:
- Completeness — are all the required fields filled in?
- Specificity — are the data types described in meaningful terms, or just vague catch-alls?
- Consistency — how much do the iOS and Android labels actually agree with each other?
Results are shown with a transparency score, a risk rating, and a breakdown of exactly where the two labels differ.
1. Clone the repo and set up a virtual environment
git clone https://github.com/masteribro/privacy-sentinel.git
cd privacy-sentinel
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate2. Install dependencies
pip install -r requirements.txt3. Run the app
streamlit run app.pyOpens at http://localhost:8501 in your browser.
| Page | What it does |
|---|---|
| Dashboard | Overview of all apps analysed — KPI cards, average score by category, recent submissions |
| Submit | Enter iOS and Android label data side by side and run the analysis |
| Results | Transparency score, radar chart, discrepancy list, and CSV export |
| History | Browse, search, and filter all past submissions |
| Settings | Adjust the High / Medium risk score thresholds |
privacy_sentinel/
db_setup.py — creates and migrates the SQLite database
comparator.py — compares two labels using Jaccard similarity
scoring.py — calculates completeness, specificity, consistency scores
data_manager.py — handles all database reads and writes
app.py — Streamlit interface
requirements.txt
tests/
test_comparator.py
test_scoring.py
pytest- Python 3.11
- Streamlit
- Plotly Express
- SQLite3
- pandas