AltScore
Nodes

POC Verification

POC Verification confirms that a phone number or email address belongs to the customer by sending a one-time code and waiting for them to enter it. When successful, the Point of Contact record gets marked as verified — the isVerified field flips to true. This is contact ownership confirmation, not consent signing.

The distinction from OTP Verification matters. OTP Verification signs an Authorization created by Opt-In — it's part of a consent flow. POC Verification has nothing to do with authorizations. It simply answers the question: does this stored contact actually belong to this person?

When It Runs

The node looks up the borrower's primary contact of the specified type — the Point of Contact record with priority == 1. This means the contact must already exist before verification can happen. The typical pattern is Ask Phone or Ask Email to collect and validate the value, Create Entity to persist it as a POC record, then POC Verification to confirm ownership.

If no primary contact exists for the specified type, the node routes to the error handle. It won't work with contacts stored only in variables — it needs an actual POC record attached to the borrower.

The Customer Experience

The node presents two buttons: one for "I received the verification" and one for "I didn't receive it". The OTP is sent immediately when the node activates, but the customer isn't prompted to enter the code until they click the first button. This gives them time to check their messages.

If they click "I didn't receive it", the system checks whether enough time has passed (controlled by the retry timeout). If not, they see a message asking them to wait. If enough time has passed, a new code is sent and they're told to check again.

Once they indicate they received the code, they're prompted to enter it. A correct code marks the POC as verified and advances to the continue handle. An incorrect code triggers the retry message and increments the attempt counter. Too many wrong attempts routes to the timeout handle.

Configuration

OptionDescription
Contact TypeWhich contact to verify: phone or email
Template ChannelHow to send the code: SMS or WhatsApp for phone, email for email
templateIdMessage template for the OTP delivery
retryTimeoutSecondsSeconds before resend is allowed (default: 60)
expirationTimeoutSecondsHow long the code remains valid (default: 60)
Max AttemptsWrong code attempts before routing to timeout (default: 3)

All messages support variable interpolation using {{variableName}} syntax.

Configuration tab

Configuration tab continued

Advanced tab

Output Handles

HandleWhen
ContinueCode verified, POC marked as verified
Timeout/Max AttemptsToo many wrong codes or code expired
ErrorNo primary contact found, template missing

Prerequisites

The conversation must be authenticated — a borrower must be logged in. The borrower must have a Point of Contact record of the specified type with priority 1. If you're verifying a phone number that was just collected, make sure Create Entity runs first to create the POC record.

The OTP template referenced by templateId must exist in the system configuration.

On this page