
PROBLEM Every Android app on Google Play must complete a Data safety form declaring what user data it collects and whether it is shared. The declaration is binding — inaccurate answers get apps suspended. The form is hard for a reason unrelated to effort. A developer knows their own code. They do not know what the libraries inside their app do. Analytics SDKs, crash reporters and map libraries collect data on their own, and Google requires third-party collection to be declared as if it were the developer's own. I measured this on my own alarm-clock app before building anything. Answering collected-or-not for 28 data types took 17 minutes 57 seconds. Of the 11 types I marked collected, 6 were guesses — confidence 1 or 2 out of 5. More than half of my affirmative answers were not knowledge. Speed was never the problem. Certainty was. SOLUTION Consent answers the form from evidence instead of memory. Three analyzers run in parallel as IBM Bob subagents. The manifest analyzer reads which permissions the app holds. The dependency analyzer looks up what each third-party SDK collects, against that SDK's own privacy documentation. The code analyzer finds where data actually leaves the device: network calls, analytics events, uploads. A reconciler merges them under Google's own definition — data counts as collected only when it leaves the device. Code evidence outranks dependency evidence, which outranks the manifest. A permission with no supporting egress resolves to "not collected". Every answer carries its proof: file, line, snippet, and one sentence explaining the call. Nothing is asserted without a citation. USERS Solo developers and small Android teams shipping to Google Play without a privacy or legal function — people who must sign a binding declaration they cannot verify. They pick a bundled project or paste in a manifest, a build.gradle and source files, and press Analyze. The filled form appears grouped by category: collected types first, then those needing review, then a collapsed block of everything with no evidence. Each answer expands to the file and line behind it. A summary bar shows how many data types were found only inside a third-party SDK. The result exports as Markdown. RESULTS Of the eleven types I marked collected, nine were false positives. The tool resolved all six guesses — every correct answer was "not collected" — and overturned three answers I had given confidently. Each was the same mistake: reasoning from a permission, never from evidence that data left the device. Precision: 9% by hand, 67% for the tool. Runtime 27 ms against 18 minutes. On my peer-to-peer messenger it found two data types that appear nowhere in the app's own source. Both come from play-services-nearby — exactly the case Google's policy covers and the one no developer reaches by reading their own code. The tool is also wrong once, in public: it reads a TelephonyManager country-code lookup as a device identifier. There my manual answer was right, and the repository documents the case rather than quietly fixing it. A tool that reports only its wins is not one to trust with a binding declaration.
27 Sep 2026