# Methodology ## Principle The knowledge base must be reproducible from the Bundestag DIP API. No political promise or status claim is invented by the application. ## Data sources The application uses the DIP REST API endpoints for: - proceedings (`vorgang`), - procedure positions (`vorgangsposition`), - parliamentary printed papers (`drucksache` and `drucksache-text`), - plenary protocols (`plenarprotokoll` and `plenarprotokoll-text`), - activities (`aktivitaet`), - persons (`person`). The app stores raw JSON in JSONL format and a normalized CSV for the dashboard. ## Evidence versus promise status A DIP record can show that a legislative procedure, document, activity, or debate exists. It does not by itself prove that a campaign or coalition promise is completed. The manual tracker therefore has a separate `reviewed_status` field. Recommended labels: - `Completed`: evidence directly shows that the promised legal or administrative action was completed. - `In progress`: formal steps exist, but implementation is not complete. - `Not started`: no relevant evidence has been found. - `Broken`: evidence shows reversal, abandonment, or a missed deadline. - `Needs human review`: evidence is relevant but insufficient for a status decision. ## Auditability For every fetched record, keep: - DIP resource type, - DIP ID, - API URL, - PDF URL where returned, - retrieval timestamp, - raw API JSON.