Back to blog
December 15, 2025

Building Event-Driven Systems at Scale

How I designed an event-driven video screening system using GCS, Cloud Functions, and async transcription webhooks at Navero.

architecturegcpevent-driven

Building Event-Driven Systems at Scale

When we set out to automate candidate video screening at Navero, we faced a fundamental challenge: video processing is inherently slow, but hiring managers expect instant feedback.

The Problem

Traditional synchronous approaches fall apart when you need to:

  • Upload large video files (100MB+)
  • Transcribe audio to text (takes 2-5 minutes per recording)
  • Run AI analysis on transcriptions
  • Update the hiring dashboard in real-time

A synchronous request would time out long before any of this completed.

The Solution: Event-Driven Pipeline

We designed a fully asynchronous pipeline using Google Cloud Platform:

  1. Upload — Videos land in GCS (Google Cloud Storage)
  2. Trigger — GCS emits an event that triggers a Cloud Function
  3. Transcribe — The function sends the video to AssemblyAI for transcription
  4. Webhook — AssemblyAI calls our webhook when transcription is complete
  5. Analyze — Another Cloud Function runs AI scoring on the transcript
  6. Notify — The dashboard receives a real-time update via WebSocket

Each step is decoupled. If transcription is slow, uploads are unaffected. If AI scoring fails, we retry without re-transcribing.

Key Lessons

Design for failure. Every step in the pipeline can fail independently. We added dead letter queues and retry policies at each stage.

Make it observable. We integrated Sentry across all Cloud Functions. When a transcription webhook fails at 2 AM, we know about it before the hiring manager notices.

Keep the API fast. The upload endpoint returns immediately with a 202 Accepted. The client polls for status or receives a WebSocket push when processing completes.

Results

  • Video screening turnaround went from hours (manual) to minutes (automated)
  • Zero data loss across 10,000+ processed screenings
  • P99 upload latency under 500ms