AWS CDK IAM Construct Generator builds a real, reusable CDK TypeScript Construct class from your pasted policy JSON — not a bare PolicyDocument.fromJson(...) one-liner. It creates an iam.Role trusted by a service principal you choose, then maps every Statement in your policy to its own new iam.PolicyStatement({ effect, actions, resources }) call added to that role via role.addToPolicy(...).
Building with CDK's own PolicyStatement builder API — rather than embedding the whole document as an opaque JSON blob — is what makes the output a proper construct: something you can instantiate more than once, extend with typed props, or unit-test with the CDK assertions library, instead of a single static JSON dump. Effects map to iam.Effect.ALLOW/DENY, Action/Resource lists (whether written as a single string or an array in your JSON) become TypeScript string arrays, and any Condition block is passed straight through as the conditions property.
NotAction/NotResource statements are not silently guessed at — they are emitted as a commented-out TODO with the original statement JSON, since they need a different, lower-level CDK API to represent correctly. The construct class name and trust principal are the two things you choose; everything else is generated. This is still a starting point: review resource ARNs, action lists, and the trust relationship before deploying.