{"$schema":"https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json","basics":{"name":"黃開哲","label":"Research Developer (Bidder Team)","image":"https://media.licdn.com/dms/image/v2/D5603AQFzK5feTKWqLQ/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1686152183591?e=1787788800&v=beta&t=YTMIh3bBCSTgG-KJJR1D0VLqISu9RS74kI_tzWAiBRg","email":"kaizhe1991@hotmail.com","url":"https://ngkaizhe.com","summary":"Backend engineer with 4+ years in ad tech, focused on DSP real-time bidding — operating a .NET bidding backend at 80–90k peak QPS while concurrently running a 30-node Hadoop/Spark cluster and Kubernetes infrastructure. Strong track record in large-scale refactoring (unifying seven traffic sources' bidding flows, rebuilding the CTR training pipeline) and cross-version infrastructure upgrades; recently building AI engineering tooling. Works comfortably in both Mandarin and English.","profiles":[{"network":"GitHub","url":"https://github.com/ngkaizhe"},{"network":"LinkedIn","url":"https://www.linkedin.com/in/ng-kai-zhe-3842b1204/"},{"network":"Website","url":"https://ngkaizhe.com/"}]},"work":[{"name":"Bridgewell","position":"Research Developer (Bidder Team)","startDate":"2023-12-01","summary":"Responsible for DSP real-time bidding (RTB) backend, integrating 5 traffic sources including Google, Taboola, ucfunnel, proprietary SSP (DirectPath), and Carrefour private inventory. System handles peak load of 80–90k QPS and off-peak of 20k QPS; served 67 advertisers and 625 ad groups in the past 30 days with 460 million cumulative impressions.","highlights":["Planned and implemented the cross-repo rollout of Exploration v5, moving exploration counters from Redis into the bidder's memory — Proved the v4 decay bug from 2,908 sampled state transitions in production Redis and fixed it (in simulation, high-frequency features were over-counted 1.89× after 30 days); v5 serving work is in progress. (C#, Python, Redis, MinIO, Protobuf)","Added zstd support for Google bid requests, restoring bidding on requests that were all failing — Fixed while the affected share was still tiny, before wider zstd adoption by Google could turn it into lost bids. (C#, ASP.NET Core, zstd, Protobuf)","Consolidated bidding-candidate data (campaigns, ad groups, creatives) from multiple readers into a single GraphQL snapshot — Removed 4 duplicate readers and the live lookups on the request path, so every field of an entity is read at the same point in time; added reason-tagged counters and advertiser reconciliation for silently dropped candidates, rolled out across all 43 bidding hosts. (C#, .NET 8, GraphQL, MySQL, Prometheus)","Fixed a targeting hole where Google hybrid requests let app-only and domain-only ad groups serve off-target — Advertisers' app and domain allowlists apply again on hybrid traffic, so ads no longer serve on placements outside their targeting. (C#, OpenRTB)","Eliminated a startup race in RecSearcher that caused out-of-memory errors on business-hours restarts — Business-hours deploys no longer hit OOM, removing a process-level risk that had only been recovering by luck. (C#, .NET 8, Kafka, Concurrency)","Engineered a columnar feature-engineering and ONNX serving pipeline replacing the legacy offline feature path — Training and serving now share one feature definition, eliminating the training-serving-skew class of bugs; rolled out fully after passing an online A/B non-inferiority test (CTR CI lower bound −2.05%, purchase CVR −8.21%, both within margin). (Python, TensorFlow, ONNX, Apache Spark, C#)","Upgraded three core bidding services to .NET 8 with containerized deployment on Linux — Reduced Searcher infrastructure from 30+ Windows hosts to 4 Linux machines, while eliminating Windows licensing costs. (.NET 8, C#, Docker, Ansible, Linux)","Built internal AI engineering tooling — MCP servers and deployment skills for Claude Code — Turned deployment and ops SOPs from documents into executable, repeatable automation. (Claude Code, MCP, Argo Workflows, Python)","Enhanced OpenRTB Bidding Feature and Bidding Formula Segmentation Experiment with Research Team (OpenRTB, C#, A/B Testing)","Consolidated seven media traffic sources' bidding flows into a single BiddingCoordinator framework — Completed within one month across 6 MRs and approximately 331 file changes; after framework establishment, onboarding new media sources reduced from 125 file changes initially to 12–18 changes. (C#, .NET 8, Strategy Pattern, OpenRTB)","Co-designed and implemented Pacing 2.0 Budget Control Mechanism with PID Controller at Its Core — Four-day comparison before and after across 166 adgroups: CPC decreased from 0.97 to 0.81 (−16.19%), and the 95th percentile metric for pacing weight oscillation dropped from 0.97 to 0.08 (approximately −92%) (C#, .NET 8, PID Control, A/B Testing)","Restructured CTR Model Training Pipeline and Framework — Reduced full training time for six months of data from approximately 1.5 months to 1 week (Python, TensorFlow, GPU Training, Parquet, Factorization Machines)","Migrated bidder-team metrics from a legacy TSDB to VictoriaMetrics with an in-house Python client — Unified the metrics-reporting interface across bidder services and retired an unmaintained self-hosted TSDB. (VictoriaMetrics, Python, Prometheus, Grafana)","Migrated Google Private RTB Protocol to OpenRTB Standard (OpenRTB, C#, Protocol Buffers)","Established Smoke test CI job for bidding service (GitLab CI, C#, Integration Testing)","Built RMN (retail media network) bidding support from bid request to app-environment detection — Opened up the retail-media product line with end-to-end bidding capability. (C#, ASP.NET Core, OpenRTB, Prebid)"]},{"name":"Bridgewell","position":"Research Developer (Infra Team, concurrent role)","startDate":"2022-05-01","summary":"Managed infrastructure operations: Kubernetes and ArgoCD deployment, Grafana and Kibana monitoring and logging. Data layer included Redis for ad budget control, Scylla for user behavioral history, MinIO for configuration files, MySQL for ad settings, alongside standalone GitLab, HDFS, and Spark.","highlights":["Removed the dependency on a physical Windows host from the CI of 9 repositories — CI no longer depends on a single Windows machine, and previously broken pipelines run again. (GitLab CI, Docker, .NET 8)","Upgraded 30-node HDFS and Spark cluster (HDFS 2.7.7 → 3.3.6, Spark 3.3.2 → 3.5.8) — Managed approximately 880.8 TB of data while maintaining data integrity and batch job availability throughout the upgrade. (HDFS, Apache Spark, Hadoop, Linux)","Implemented MinIO as Internal S3-Compatible Object Storage — Hosted log artifacts for Argo Workflows and various temporary data (e.g., IP-to-Taiwan-region lookup tables). (MinIO, Kubernetes, S3 API, Argo Workflows)","Upgraded self-hosted GitLab from 13 to 19, including associated nginx version and configuration syntax adjustments — Downtime kept within 30 minutes, uninterrupted daily development service for approximately 40 RDs company-wide (GitLab, nginx, Linux)"]},{"name":"Bridgewell","position":"Research Developer (Cat Team)","startDate":"2021-06-01","endDate":"2023-12-31","summary":"Responsible for GTM tracking code integration, e-commerce product web scraping and API import, and product data integration across DSPs (Facebook Catalog and Google Ads as upstream product sources).","highlights":["Integrated Facebook Catalog and Google Ads as Cross-DSP Product Data Upstream (C#, Facebook Marketing API, Google Ads API)","Designed Scalable e-commerce product scraping framework with template method pattern supporting dozens of sites — Accumulated coverage of approximately 47 e-commerce sites (IKEA, Gap, Coach, Domino's, Nitori, etc.), maintaining thousands of product records as a fallback import channel when clients cannot provide dynamic product feeds (C#, HtmlAgilityPack, XPath, MySQL)","Built Self-service backend for tracking code delegation configuration, enabling non-engineering staff to complete setup without development requests — Tracking code configuration delivery time for a single customer was reduced from approximately 3 hours to 5 minutes; the backend cumulatively serves approximately 1,500 customers (C#, GTM, Facebook Pixel, JavaScript)"]}],"volunteer":[],"education":[{"institution":"National Taiwan University of Science and Technology","studyType":"Bachelor of Science in Computer Science","startDate":"2017-06-01","endDate":"2021-01-31"}],"projects":[],"skills":[{"name":"C#"},{"name":".NET 8"},{"name":"Python"},{"name":"OpenRTB"},{"name":"Linux"},{"name":"MinIO"},{"name":"Protobuf"},{"name":"ASP.NET Core"},{"name":"MySQL"},{"name":"Prometheus"},{"name":"TensorFlow"},{"name":"Apache Spark"},{"name":"Docker"},{"name":"Argo Workflows"},{"name":"A/B Testing"},{"name":"GitLab CI"},{"name":"Redis"},{"name":"zstd"},{"name":"GraphQL"},{"name":"Kafka"},{"name":"Concurrency"},{"name":"ONNX"},{"name":"Ansible"},{"name":"Claude Code"},{"name":"MCP"},{"name":"Strategy Pattern"},{"name":"PID Control"},{"name":"GPU Training"},{"name":"Parquet"},{"name":"Factorization Machines"},{"name":"VictoriaMetrics"},{"name":"Grafana"},{"name":"Protocol Buffers"},{"name":"Integration Testing"},{"name":"Prebid"},{"name":"HDFS"},{"name":"Hadoop"},{"name":"Kubernetes"},{"name":"S3 API"},{"name":"GitLab"},{"name":"nginx"},{"name":"Facebook Marketing API"},{"name":"Google Ads API"},{"name":"HtmlAgilityPack"},{"name":"XPath"},{"name":"GTM"},{"name":"Facebook Pixel"},{"name":"JavaScript"},{"name":"Unity"},{"name":"Pose Estimation"}],"meta":{"canonical":"https://ngkaizhe.com/resume.json","locale":"en","generator":"my-journey"}}