Creating a temporary filter for a list view programmatically

We have a large number of clients (companies) who in turn have a large number of customers.  Our staff who make outgoing calls will have several different companies they call on behalf of, on any one day.  At the moment, we assign Lead records to each user manually and the filters are set by each user with the Account and Project (a call campaign for an account). In order to minimise the chance of contacting the wrong customer, I would like to be able to create a temporary filter in the Leads list view programatically, rather than relying on users to set the correct filters.

I understand this can already be done by creating a report but it has the disadvantage that several reports have to be created for each user everyday.  Also, we'd like to use the List View of the Leads module, with the Preview panel, to modify record.  Due to the volume of calls, we find this is much more efficient than opening each record in full and often only a handful of fields are used.