Skip to content
Clinford Jordano Valencia
All projects
PlatformWebMobile

Signal, a Real-Time Telemetry Platform

A typed frontend SDK and event pipeline that gave Binance's global KYC funnels real-time visibility, cutting incident diagnosis from days to minutes.

Role
Senior Frontend Engineer
Period
2025–present
Stack
TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana

The problem

Millions of people in 100+ countries went through identity verification, and some of them quietly dropped out. When a vendor integration broke, nobody saw it: we were reading fragmented server logs by hand, and a diagnosis took one to three days. Every day of that is real users who could not finish onboarding.

The approach

  • A small, typed SDK. One TypeScript tracker collected the same user-action data on every screen, across web, mobile and Mini Program, so events meant the same thing everywhere.
  • Throttling with a safety valve. The SDK queues events and flushes every 3 seconds or at 10 events, whichever comes first. One request per click starves the browser's network threads; holding events longer risks losing them when the tab closes. On page unload it uses navigator.sendBeacon.
  • A BFF that validates. Batches hit a Backend for Frontend that checks the schema against the TypeScript definitions, sanity-checks timestamps, strips unexpected fields and PII, and attaches session metadata plus the backend's verdict (passed, rejected, pending review). Comparing that verdict with what the UI showed exposed UI-to-backend state mismatches.
  • Kafka, Flink, ClickHouse, Grafana. Kafka absorbs global traffic spikes, Flink processes events in real time, ClickHouse stores them (columnar storage answers aggregations over billions of high-cardinality events in milliseconds, where row stores crawl) and Grafana shows the funnels.
  • Quiet failure handling. If the pipeline is down, the SDK keeps up to 100 events in localStorage and a passive circuit breaker pauses sending. It does not ping the server to check health; it waits for the next successful response.

The result

Time to detect an incident fell from 24–72 hours to under 5 minutes. For a funnel where a broken vendor step means thousands of failed onboardings, that is the difference between a note in a postmortem and a fix the same morning.