AdTech product
Demand-side platform
Problem
Advertisers need to manage complex campaigns while the platform connects
to many ad exchanges and continuously controls pacing, delivery,
optimization, and creative operations.
Approach
Designed and developed the Spring Boot backend for campaign, insertion
order, line item, creative, audience, deal, and conversion workflows,
integrated with a distributed real-time bidding system handling 100K+
requests per second. The RTB path follows the OpenRTB protocol with
low-latency responses, while scheduled services manage pacing, budget
allocation, delivery tracking, KPI optimization, and notifications.
View architecture
Advertiser UI
campaign setup
→
DSP API
campaigns · creatives · audiences
→
RTB engine
OpenRTB · exchanges · low latency
Scheduler fleet → pacing · delivery · KPI optimization
The product API manages campaign intent, while the real-time and
scheduled paths turn that intent into measurable delivery.
Java 21 · Spring Boot · OpenRTB · RTB · MongoDB · Redis · AWS
Identity platform
Centralized IAM platform
Problem
Products needed one consistent way to sign users in, manage tenants,
and enforce permissions across services.
Approach
Built a Spring Boot identity service with Cognito-backed sign-in,
multi-tenant user and company management, role/ACL-based authorization,
signed platform JWTs, audit support, and event-driven billing lifecycle
integrations.
View architecture
User
web or product UI
→
Identity API
sign-in · tenants · roles
→
Trusted services
products use platform token
The identity service centralizes access decisions so each product
can focus on its own business workflows.
Java 21 · Spring Boot · MongoDB · Kafka · AWS Cognito
Reusable platform foundation
Shared backend building blocks
Problem
Every product team was solving the same cross-cutting concerns independently,
creating duplication and inconsistent behavior.
Approach
Created reusable versioned Java modules for authentication, caching,
MongoDB access, email, shared DTOs, and utilities so new services
could start with dependable platform building blocks.
View architecture
Shared modules
auth · cache · data · email
→
Versioned library
common Java contracts
→
Backend services
consistent behavior
A versioned foundation moves repeated concerns out of individual
services and makes platform improvements reusable.
Java · Maven · Spring Boot · Redis · MongoDB
Data identity
Massive-scale identity resolution
Problem
A legacy HTTP/MongoDB platform struggled to scale as identity data grew,
requiring recurring operational intervention and periodic reduction of
historical data. Identity data arriving from multiple sources used
inconsistent identifiers, making it difficult to maintain a stable and
scalable identity layer as volume grew.
Architecture
Re-architected the platform as a Spark-native data system using Apache
Iceberg and EMR-on-EKS, orchestrated through Airflow. The system performs
identity resolution against a 65B+ historical mapping dataset while
processing 10B+ incoming device records daily, resolving one stable
internal ID per device and writing refined Iceberg tables.
Key engineering decisions
Optimized data layout and joins using Iceberg Storage Partition Joins
with zero OOMs or disk spills; implemented controlled, deterministic
and idempotent ID-resolution processing to prevent duplicate assignments;
tracked first-seen/last-seen and opt-out/privacy state incrementally;
and automated Iceberg metadata cleanup and compaction to control
small-file fragmentation and maintain stable performance.
View architecture
Multiple sources
inconsistent identifiers
→
Resolve vs. history
65B+ mappings · privacy · stable ID
→
Refined data
deduplicated analytics
Outcome
Reduced processing time from approximately 18–20 hours to around
60 minutes while eliminating recurring database outages and removing
the need for periodic historical data truncation.
PySpark · Apache Iceberg · Airflow · EMR-on-EKS · AWS
Campaign measurement
Campaign Measurement
Problem
Customers need to understand whether advertising activity translates
into physical visits and measurable business outcomes.
Approach
Built backend capabilities for measurement campaigns, report scheduling,
insight delivery, and Spark orchestration that turns location data into
footfall and attribution results.
View architecture
Campaign API
measurement setup
→
Batch processing
orchestrated Spark jobs
→
Insights & reports
footfall · attribution
The product turns campaign definitions and location signals into
understandable measurements that support business decisions.
Java · Spark · MWAA/Airflow · Livy · MongoDB · S3
Applied AI
AI-powered semantic search
Problem
Users needed a more natural way to discover relevant content across
large collections of blogs, audiences, and locations than keyword-only
search could provide.
Approach
Built a reusable semantic-search capability indexing 100K+ items using
embeddings, vector retrieval, AWS Bedrock, and LLM-assisted query understanding.
View architecture
Content sources
blogs · audiences · locations
→
Embeddings & index
vector retrieval
→
Search experience
semantic answers
The platform converts content into searchable meaning so users can
find relevant results using intent, not only exact words.
OpenSearch · Embeddings · Vector search · AWS Bedrock · LLM-powered retrieval