featurestore_id

entity_type_id

description

entity_id

prefix

firebase_behaviour_fs

onboarding_behaviour_features

customerId

fire_

This page documents the features that we will collect from the FireBase application, in order to create risk behavioural indicators at the time of onboarding. This is derived from in-app behaviour at the point of onboarding.

FireBase events are written to BigQuery and the features are extracted from there - See Also: Firebase to BigQuery

Proposed Ingestion Setup

As the data is streamed directly from Firebase into BigQuery, is not possible to ingest this as we would if there were a Kafka topic. Data is streamed from Firebase into the tables below. Each table contains different events related to the application

Propose to only write application behavioural features of customers that have been triggered by the workflow for risk assessment and querying. As such, the application behaviour featurestore, will only contain the behavioural features of individuals that are deemed as “risky”. This is to save computation and writing of data jobs to the online featurestore.

These are the sample tables that the data are streamed to:

As such, in order to create behavioural features for risk assessment, we will need to retrieved these features from the relevant tables in BigQuery. The proposed field names have been laid out in the table below. At present the way to retrieve these set of behavioural features for a given customer would be via a SQL query to BigQuery.

<To Update Query below with Actual once finalized>

SELECT
  fields
FROM analytics_31354378.events_intraday_
WHERE user_id = "customerId"

Future Ingestion Setup

First Choice: In order to create an architecture that supports real-time ingestion of app events, it seems that the only solution is to stream the FireBase events directly to Pub/Sub. Following which, a DataFlow or Cloud Function can ingest these features into the FeatureStore. This is to be done at the app level.

Non-ideal: Another way is to trigger cloud run actions, using BigQuery ingest events. Meaning to say everytime an app event is ingested into BigQuery, a cloud run is triggered. This is not ideal, as it is dependent on the latency in streaming app events to BigQuery, which is known to have delays. This is more equipped for post-hoc analysis and not real-time event processing of features.


Proposed Features

  • This documents defines the proposed set of features to be used and how to query - LARK SHEETS

  • This document defines the various fields that is found in bigquery.analytics_XXXXX.events_.app_events - FireBase BigQuery Definitions

Variable

Description

Field Name in BigQuery

feature_id

Type

Is Available?

Customer Id

ENTITY_ID_NAME

-

-

Application Version

Application version used when going through onboarding

app_info.version

fire_app_version

Clicking on ? button

  1. Clicking on each "?" Help button - PEP and US Persons

  2. Clicking on the "?" Help button to read more about "Terms & Conditions"

  1. event_name = "identity_check_pep_sheet" and "identity_check_us_citizen_sheet"

  2. event_name = "privacy_body" (with consentType property to differentiate between T&C, terms of use, privacy policy)

fire_click_on_help

(blue star) - Deployed but event cannot be found by Dkatalis team

Device Model

Device model used when going through onboarding

device.mobile_model_name

fire_device_model

Event Name

Description of the type of app event

event_name

fire_event_name

Exit App

Has the client exited/switch to other apps during onboarding

Use firebase_preformance db from BigQuery.event_name = "_app_in_background"

fire_has_exit_app

Screen Id

Indicator of which screen the user is in

event_params.firebase_screen

fire_screen_id

Time Per Screen

Time elapsed per each screen

event_params.engagement_time_msec

fire_time_per_screen

Timestamp

DATETIME field from when user initiates the onboarding process. Need to convert from timestamp_micros

event_timestamp

fire_event_timestamp

Total Keystrokes

event_name = "screen_analytics"

event_params.key = "tap"

event_params.value.string_value = "N"

fire_total_keystrokes

(blue star)

Was the walkthrough linear

Number of times the client pressed back, or gone back to previous screens

event_name =
"back_button_listener"

fire_pressed_back

Auto-Completion/Suggestions of OCR? Auto-fill? Corrections to pre-filled data?

There are 2 event_names:

  1. personal_info_ocr_received = personal info OCR result received from backend

  2. personal_info_user_sent = personal info data sent by customer

(blue star)

Usage of ctrl + v to fill data within the app

event_name = "customer_pasted_from_clipboard_to_text_field"

(old event name is was "customer_pasted_from_clipboard_to_text_f")

fire_paste_from_clipboard

Attachments:

Screenshot 2022-10-07 at 4.09.00 PM.png (image/png)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio.png (image/png)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio.png (image/png)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio.png (image/png)
Screenshot 2022-11-10 at 2.24.51 PM.png (image/png)