I got laid off with ¥0 in the bank. Six months later, rebuilt around Claude Code running as an autonomous environment, I'm clearing ¥1.2M a month — and one of the load-bearing pieces is a pipeline that submits apps to the App Store without me touching it.
Part 1 covered how to wire up JWT authentication and the skeleton of asc.py. This time I'm collecting the three "review rejection traps" that only showed up once the thing went into real production use: how the true cause of ITMS-90111 turned out to be BuildMachineOSBuild, the correct request shape for appPriceSchedules, and how to dodge the en-US locale name collision. Each one, in order, with the actual code.
Why this setup works
Don't automate the work — build an environment where the work never happens in the first place. That's the core idea behind this pipeline.
Run 12 iOS apps in parallel and store submission alone generates an absurd amount of busywork. Submitting a single app by hand means: archive in Xcode → upload from Organizer → enter version info in App Store Connect → swap out the screenshots → hit the submit-for-review button. Even once you're used to it, that's 20–30 minutes per app. Twelve apps eats an entire day. Repeat that a few times a month and an indie developer's resources are gone.






