Compliant data tool, built for Hasan
A Turkish complaint text dataset, built the clean way
ŞikayetVeri collects 50 texts from each of 20 Turkish complaint and message categories - target 1,000 in total. It works from your own exports by default, masks personal data with a human review queue, reports every shortfall honestly, and throttles so hard it refuses to work around any site's access controls.
The compliance line, up front
This tool never bypasses Cloudflare or other WAFs, CAPTCHAs, login walls, robots.txt, rate limits, or terms of service. Fetching is disabled until you turn it on for URLs you explicitly authorize with confirmed rights, and even then it stops the instant it sees a 403 or 429. It never invents text to meet a count - deficits are reported, not filled. This page is not legal advice and does not guarantee legal compliance.
What it does
Local exports first
Point it at CSV or JSON files you already own or export. Network fetching is off by default.
Honest deficits
Counts unique texts per category, flags duplicates, and reports every shortfall. No fabricated filler.
PII masking + review queue
Emails, phones, TC numbers, IBANs, cards are masked; names and uncertain content are flagged for a human.
Conservative by design
Robots.txt respected, per-domain throttling, and an immediate halt on HTTP 403 or 429.
20 canonical categories
Each record is mapped to one of these keys; unmappable labels go to the review queue. Default target is 50 per category = 1,000 total.
- Telekom / internet servis saglayici
- Mobil operator
- Bankacilik
- Sigorta
- Kredi karti
- Internetten alisveris
- Kargo ve teslimat
- Beyaz esya
- Elektronik
- Market ve perakende
- Gida ve restoran
- Havayolu
- Otel ve konaklama
- Turizm acentasi
- Saglik ve hastane
- Kamu ve belediye hizmetleri
- Elektrik dagitim
- Dogalgaz dagitim
- Su dagitim
- Otomotiv
Quick start
Runs on plain Python 3.10+ - no packages to install. Full instructions are in the Windows PowerShell setup guide.
cd C:\path\to\python-project
# 1. Write a starter config, then edit config.json with YOUR data
.\run.ps1 -Init
# 2. Run with your local exports (safe, no network)
.\run.ps1
# results: output\records.csv + deficit_report.json, review\ for the review queuepython main.py --init-config
python main.py
python main.py --list-categories
python main.py --categories kargo telekom --target 40
python -m unittest discover -s tests -v # run the test suiteHonest limitations
Fetch mode extracts only simple text and JSON - it is not a general scraper and deliberately does not handle sites behind access controls.
Name detection uses a modest built-in name list, not full named-entity recognition. Missed names get flagged for review, not silently masked.
robots.txt handling and rate limiting are best-effort heuristics, not legal guarantees. You must confirm your right to process every source, every time.