TLDR; When a call is incoming this flow checks if it's from a trusted number. A trusted number is either in your contact list or you've dialed it before. If the flow determines it's not from a trusted number, the call is ended and the caller receives an SMS message with a request for identification. When the SMS is received the content from the message is used to create a new contact and the caller receives another SMS saying that he/she can call again. KEEP IN MIND that you need to switch off RCS in your messages app or else the SMS received block might not catch all messages. The long story or 'How does this work?' The flow uses 4 fibers. One to handle incoming calls, another one to handle incoming SMS messages, a third one to store the numbers from outgoing calls to an array and a last one that cleans that array (and another one, we'll get to that later in the explanation of the first fiber) every night so the flow doesn't get to slow in case you place a lot of calls. Fiber 1: the phonecall handler. When an incoming call is received it checks if the phonenumber is in your contact list. If it is in your contact list then it's considered 'trusted' and the call can be answered. If it's not in your contact list, then the number is searched in the array with outgoing calls. If it is found in that array then it's considered 'trusted' and the call can be answered. This functionality is handy for example when you called a restaurant for a reservation and they have to call you back. You don't necessarily want to store the restaurant as a contact but you still want to be able to answer the call when they call you back. If the number is not considered 'trusted' the call is ended and the caller receives a text message with a request to reply with a text message containing just a full name. The phonenumber from the caller is then stored in an array with caller numbers which is used in fiber 2, the text message handler. Finally, a notification is shown that a phonenumber is screened. Fiber 2: the text message handler. When a text message is received it checks if it's from a number in your contact list. If that is the case then there's nothing to do and the fiber returns to waiting for the next message. If the number can't be found in your contact list it checks if it's present in the array of callers from fiber 1. If the number is not present in that array it's not been handled by fiber 1 meaning that it's not from a caller that received a message asking for identification. In that case there's nothing to do and the fiber returns to waiting for the next message. After those checks the fiber looks if the message contains more than 4 words. If so, the message probably contains more than just an identifying name which is not convenient to store as a contact. So nothing will be done. If all these checks are passed the fiber creates a new contact with as first name the content of the message and last name "". And of course with the phonenumber from the sender. After that the sender receives a text message saying that he/she is added to the contact list and can try calling again. Finally, a notification is shown saying that a contact is added. Fiber 3: handling outgoing calls To avoid that numbers used for outgoing calls will be screened when a call is returned, this fiber stores phonenumbers from those calls in an array if that number is not in your contact list. That array is then used in fiber 1 to determine if a number is trusted or not. Fiber 4: Cleaning the arrays To avoid that the aforementioned arrays get to big this fiber empties the arrays every night. You might want to change this to, for example, once every week if you often place calls to numbers which are not in your contact list but need to be able to call you back a few days later. As long as those numbers are in the arrays, calls from those numbers will not be screened.