Skip to main content
A photo taken at a museum in Lisbon on a Saturday morning says a lot: the city, the neighbourhood, the kind of place, who was there. PoolKit reads that on the device and gives it to you per photo, grouped into visits, and lets search understand place words.

Ask for locations

Exact places need their own category, .locations. No other category implies it, no default grant includes it, and the person always sees it named. Ask for it on its own, in plain words.
If city and country are enough, ask for .placesVisited instead. It powers Trips and never gives coordinates, neighbourhoods or visits.

Read a photo’s place

Every hit from search and similar carries details. Under .locations it has location, visit and timeZone.

Visits

A visit is a run of photos and videos close in time and place: each one within 90 minutes of the previous and within 400 metres of the visit’s centre. Screenshots never count. A capture at a venue also gains an activity with source venue, so interests learn from where people go, not only what they photograph.

Search by place

Place words are a third list that search ranks next to the words on screen and what the image shows. “Lisbon”, “Chiado”, “museum” and “ramen” all work, and so do mixes such as “sunset in Lisbon”.
  • Hits that matched a place carry the reason .place, the words that named it in placeMatches, and placeSimilarity, the share of the query’s words that named the place.
  • searchPlan.operation is location when every word named a place, and retrievalIntent says place, placeType (a kind of venue, such as “museum”) or contentAndPlace when the query mixed both. See Search and browse.
  • Under .placesVisited, only city and country words match.

Home stays out

Places appear once PoolKit has seen enough located photos to know where home is: 30 photos on 10 different days, as for Trips. Until then nothing is shown at all, because any place could be home. After that, captures near home carry no location, no visit and no venue, and never match a place search. PoolKit never says where home is.

Where the names come from

  • Apple’s geocoder names the neighbourhood, city, metro area, country and time zone. Apple Maps finds the venue. Both see the coordinates of the place they name; Pool’s service never does.
  • Each area is looked up once and kept on the device: names about once per square kilometre, venues about once per 200 metres.
  • Lookups are slow on purpose: at most one every 1.5 seconds and 60 per indexing run, and never on a cellular or other metered connection. The next run carries on.
  • Offline, the city comes from a table inside PoolKit (cities of 15,000 people or more, within 75 km). Apple’s names replace it later.

Taking it back

When no active grant includes .locations any more, the next indexing run deletes every coordinate, visit, venue and place name. Deleting a photo deletes its visit when no other photo is left in it, and any place name nothing uses any more. If your app sends places to your server, you are collecting location. Declare precise or coarse location in your own privacy manifest and App Store privacy details, whichever you send. PoolKit’s own manifest does not change, because PoolKit sends no location to Pool.