There was very little code shared on the backend. Ingress was appengine talking to custom clients via JSON, PGO was GCE/GKE talking to Unity clients via protobufs. Almost everything on the backend was written specifically for PGO because the Ingress codebase just couldn't scale, at least not cost-efficiently, to the number of users.
Also, Ingress is all about controlling areas of the map, while PGO was mostly based on points of interest, so the architecture needed to be quite different. I'll go into more detail when I post the writeup.