This example demonstrates the Blind Join method, a powerful method which
supports Private Set Intersection (PSI) and fuzzy matching between datasets.
In this scenario, one organization runs a transportation system.  They want
to collaborate with a retailer who has customers that they suspect ride the
transportation system.  If the overlap in customers can be determined, the
most retailer can place more advertisements at the most popular stations as
targeted marketing to increase sales.

Each organization has a database which holds the critical information about
their respective customers.  The transportation database holds the trips taken
as well as a customer home address from their rapid pass cards.  The retailer
also has sales and address information from a customer loyalty program.
Unfortunately, the addresses are not always reported exactly the same.   Some
have "Street", others have "St" abbreviations; street names might be
transcribed incorrectly, etc.

Of course, that detailed travel pattern (customer, date/time and locations) is
sensitive.  Similarly, the retailer's database of purchases is sensitive and
cannot be easily shared.  Any neither can divulge the private address of an
unshared customer with the other.

The count_customer_overlap script shows the results of both an exact match as
well as a "fuzzy match".  The fuzzy match uses a private Jaro Winkler distance
calculation, registering matches when the score is within the given fuzziness
window.  No data is leaked about customers which are not shared.

Once the overlap of customers is determined, the Blind_Join returns stations
visited by those overlapped customers -- and nothing else.  That information
can then be aggregated and sorted to determine which stations have the most
traffic, and thus the best places to advertise.  The top 10 are printed out.

NOTE: The 1_position_data_on_access_point.py step includes an alternative
setup which could be used to access a live database table.  That approach
further limits any potential to accidentally expose data, but isn't used to
keep the example easy to run.
