The flat is very well located with a beautiful view of Porto. Really, it is amazing! It is not directly in the center of Villa Gaia, but not far to do it by walk to the Luis I Bridge (+-1.5km). There is also a bus stop just a few meters from the building. Also, this part of the city is quite nice and calm, with some small shops and restaurants around.
The flat itself isn't extraordinary, except for the view it is nothing extra. Its size is ok for 2 people, the 3rd could sleep on the sofa, but it is not very comfortable and it doesn't look very clean either.
The whole apartment is not unclean per se, but it feels that way, you can see and feel that there were multiple visitors before. I would say that because it is managed by a company, and the "good enough" is all what they need to make it rentable. The bathroom is suitable for shorter stays, there's not much room for personal things, and the bath definitely needs a renovation.
The bedroom is nice, a lot of space for clothes, the bed is really comfortable, but we found hairs on the sheets when we arrived...
The kitchen is very poorly equipped, mostly by 2 pieces from the basic equipment. The towel for cleaning/drying dishes is not provided. There's a capsule coffee machine, but even though it looks like the Nespresso, it is not. and I wasn't able to find these types of capsules anywhere, so it was completely useless for us. No ingredients are provided for cooking, not even salt. So if you come even for only 2-3 days, you have to buy basic ingredients like salt, sugar, oil, etc. if you plan to cook.
Some cleaning equipment is provided, but some of it is broken. I like that they have a washing machine, as we stayed three weeks, it was useful.
It was mentioned in the comment, but to get keys, you need to go on the other side of the river to Porto or buy a service to meet at the door - for 10eur. If you need a 2nd key (because you are 2prs), it is also paid.
To summarize - the flat is ok, next time I wouldn't say no as I liked the city part and the view, but probably I'd search for something better first.