Before an AI conversation began, the data model and the long-lived product rules were already explicit: what a Project is, what an Item is, how their many-to-many relationship works, and which boundaries the product must never cross.
When implementation discussions drifted toward live Mail or Notes capture, the existing rule—exported files only, no live capture—made the error visible. The model did not protect the product boundary. The designer did.
AI wrote nearly all the Swift. I authored what the product does, why it works that way, and what it must never do—and enforced those decisions throughout implementation.
Every feature was verified against the real library used for daily work. “The code compiles” was never accepted as a substitute for “the product is good to use.”