Full-lifecycle Apple App Store review for iOS and iPadOS apps. Use for pre-submission audits, rejection diagnosis and Resolution Center replies, Guideline 4.3 spam or similarity recovery, human-craft and low-effort audits, App Review Notes, privacy manifests, Info.plist permission strings, subscriptions, Sign in with Apple, account deletion, UGC, third-party AI consent, TestFlight or App Store readiness, and vague requests such as "review my app" or "will Apple approve this" when an Xcode, Expo, React Native, or Flutter project is present. Produces evidence-tagged Markdown, JSON, and a self-contained visual HTML report, runs a read-only deterministic scan first, and only offers grouped fixes after the report.
95
94%
Does it follow best practices?
Impact
99%
1.67xAverage score across 3 eval scenarios
Passed
No findings from the security scan
{
"context": "Tests whether the agent correctly follows Mode B rejection recovery procedures: loading the rejection playbook, classifying the response, distinguishing 4.3(a) from 4.3(b), drafting a well-structured Resolution Center reply, and avoiding prohibited behaviors such as recommending evasion tactics, inventing evidence, or mischaracterizing Apple's review process.",
"type": "weighted_checklist",
"checklist": [
{
"name": "4.3(b) vs 4.3(a) distinction",
"description": "The analysis explicitly distinguishes Guideline 4.3(b) (not meaningfully different) from 4.3(a) (portfolio duplication / white-label) and treats them as having different remedies",
"max_score": 10
},
{
"name": "Response classification",
"description": "The analysis states exactly one classification from: FIX, CLARIFY, APPEAL, or REQUEST INTERPRETATION — not a combination of labels and not a different label",
"max_score": 10
},
{
"name": "Exact rejection message preserved",
"description": "Apple's verbatim rejection message (or a substantial verbatim quote of it) appears in either analysis.md or resolution-center-reply.md — not paraphrased",
"max_score": 8
},
{
"name": "Resolution Center reply present",
"description": "resolution-center-reply.md exists and contains a draft message addressed to Apple's review team",
"max_score": 5
},
{
"name": "Build number placeholder or reference",
"description": "The reply draft references the build number (47) or includes an explicit placeholder for it",
"max_score": 8
},
{
"name": "Attachments listed",
"description": "The reply draft lists or describes at least one type of attachment or supporting evidence Petra should include (e.g., screenshots, screen recording, provenance statement)",
"max_score": 8
},
{
"name": "No code obfuscation recommendation",
"description": "Neither output file recommends obfuscating code, moving the app to another account, or making deceptive claims to pass review",
"max_score": 10
},
{
"name": "No unsupported provenance claim",
"description": "The reply draft does NOT assert the app was 'built from scratch' as a standalone claim without qualifying that this is based on developer-supplied information (since no repository history was provided for verification)",
"max_score": 8
},
{
"name": "Fast review timeline not mischaracterized",
"description": "The analysis does NOT describe the ~2-hour rejection as proof that no human reviewed the app or that the decision was fully automated",
"max_score": 8
},
{
"name": "Evidence confidence labels",
"description": "At least one factual claim about Apple's review behavior or process is tagged with a confidence label (OFFICIAL, DOCUMENTED CASE, OBSERVED PATTERN, or INFERENCE)",
"max_score": 8
},
{
"name": "No invented evidence",
"description": "Neither output file invents features, demo credentials, appeal outcomes, or source citations not present in the supplied rejection details",
"max_score": 8
},
{
"name": "No AI-detection claim",
"description": "Neither output file claims that Apple detected or flagged the app as AI-generated or AI-written",
"max_score": 9
}
]
}