Kendi Ng

Marketing Analytics & Digital Strategist | Python & AI Integration | China Media | Hong Kong

I build data systems that turn raw marketing signals into business decisions — and I have spent 15 years understanding the platforms those signals come from. My background spans China media platforms (Baidu, Tencent, Douyin, RED) and international channels (Google, Meta, LinkedIn), and I have built my own analytics stack on top: Python ETL pipelines, PostgreSQL, self-built Streamlit dashboards, and production Claude AI API integration. I am looking for in-house roles in Hong Kong where data, marketing, and technology intersect.

Skills & Technologies

Data Engineering

  • Python
  • ETL Pipelines
  • PostgreSQL
  • SQL
  • Pandas
  • NumPy
  • VBA Excel
  • GitHub

Analytics & Visualisation

  • Streamlit
  • Tableau
  • Power BI
  • Looker Studio
  • matplotlib
  • seaborn
  • GA4
  • Google Search Console

Marketing Technology

  • Google Ads
  • LinkedIn Ads
  • LinkedIn Marketing API
  • GA4
  • GTM
  • Claude AI API
  • Azure Graph API
  • Google Apps Script
  • Moz Links API
  • SEO / GEO

China & APAC Platforms

  • Baidu Search & Display
  • WeChat Moments Ads
  • Tencent Video
  • Douyin
  • RED / Xiaohongshu

CRM & Business Analysis

  • Odoo CRM
  • Zoho CRM
  • Jira
  • UAT
  • Requirements Gathering
  • Data Mapping

Web Frameworks

  • Streamlit
  • FastAPI
  • HTML / CSS
  • JavaScript

Automation & DevOps

  • Docker
  • AWS EC2
  • n8n
  • APScheduler
  • Windows Task Scheduler
  • Microsoft Graph API
  • Outlook 365 Automation
  • BeautifulSoup

Featured Projects

All projects below are part of one integrated analytics platform I built from scratch. Each card links to the relevant code within the main repository.

Digital Marketing Analytics Platform

Problem: Marketing data was scattered across SEO, LinkedIn Ads, LinkedIn Lead Forms, and GA4 with no unified analytics view or AI-powered insights.

Built a unified digital marketing analytics hub with 4 core modules: SEO keyword tracking (Brand vs. Paid segments with MoM/YoY comparisons), LinkedIn Lead Gen Form sync via API, LinkedIn Agency report ingestion from Excel uploads, and Digital Marketing campaign drill-down from Odoo CRM. Integrated Claude AI API for automated executive summary generation and insight buttons throughout.

  • Python
  • Streamlit
  • PostgreSQL
  • Search Console API
  • LinkedIn Marketing API
  • GA4 Data API
  • Claude AI API
  • Pandas

LinkedIn Lead Generation & CRM Auto-Matching Pipeline

Problem: LinkedIn lead form submissions arrived as raw API payloads with no CRM linkage — every lead needed manual company lookup, dedup and assignment, and ad spend had no closed-loop ROI view.

Built an end-to-end pipeline: hourly sync from the LinkedIn Lead Gen API, 4-strategy auto-matching against Odoo CRM (exact email → email domain → company name → phone), and a self-hosted HK Companies Registry proxy on AWS EC2 to enrich unmatched companies past HK-only geo-restrictions. Matched leads flow to Google Sheets, generate Odoo-ready ToDo import files daily, and trigger per-campaign notification emails. Full-funnel UTM attribution (ad → CRM activity → meetings) cut cost-per-lead by ~50% within five months while scaling to 190+ qualified CRM leads.

  • Python
  • LinkedIn Marketing API
  • PostgreSQL
  • AWS EC2
  • n8n
  • Google Sheets API
  • Odoo CRM

SEO Forensic Audit & In-House SEO / GEO Engine

Problem: An external SEO agency reported strong keyword rankings, yet site CTR sat at an abnormal 0.3% and organic leads didn't follow — nobody could explain the gap.

Ran a forensic audit combining Search Console, GA4 and backlink data and uncovered black-hat link farming — a 66%-toxic backlink profile inflating impressions with bot traffic rather than real buyers. The findings led to contract termination (~HK$120K/yr saved) with zero ranking loss and a +27% authority-score recovery during natural detox. Replaced the agency with an in-house engine: GSC + GA4 blended keyword scoring, Moz backlink-health tracking via API, a 13-month trend warehouse, and a monthly AI-narrated SEO report to management — now extending into GEO (AI-search visibility on ChatGPT / Perplexity / AI Overviews).

  • Python
  • Search Console API
  • GA4 Data API
  • Moz Links API
  • PostgreSQL
  • Claude AI API

CRM Reporting & Analytics Dashboard

Problem: A financial services company had no internal BI tool — sales pipeline, pension AUM, and marketing data lived in disconnected CRM tables with no interactive reporting.

Built a multi-page Streamlit BI dashboard serving 8+ interactive pages: EBCAS sales pipeline analytics by product team with fiscal year filtering, PIES pension AUM analysis with multi-scheme classification and MPF provider breakdown, and marketing campaign performance reporting. Includes automated email report generation via Microsoft Graph API.

  • Python
  • Streamlit
  • PostgreSQL
  • Pandas
  • Docker
  • Microsoft Graph API

Data Warehouse & ETL Pipeline

Problem: Marketing and sales data from Google Search Console, GA4, and LinkedIn APIs had no centralised storage, making cross-source analysis impossible.

Designed and built a local PostgreSQL data warehouse with normalised tables for SEO reports, keyword data, LinkedIn leads, agency data, and GA4 leads. Created Tableau-ready SQL views (unified monthly summary, agency targeting breakdown, audience demographics). Built 4 automated ETL scripts pulling from Search Console API, GA4 Data API, LinkedIn Lead Gen API, and LinkedIn Ads Reporting API into PostgreSQL on a scheduled basis.

  • PostgreSQL
  • Python
  • Search Console API
  • GA4 API
  • LinkedIn Marketing API
  • Google Sheets API
  • Tableau
  • psycopg2

Automated Email Report System

Problem: 10+ recurring business reports (sales insights, pension reports, campaign summaries) were being compiled and sent manually, consuming hours of analyst time.

Built a comprehensive automated email reporting engine with HTML-formatted reports, styled data tables with conditional formatting, and Excel attachments — all sent via Microsoft Graph API. Powered by APScheduler with configurable cron schedules via JSON, replacing Windows Task Scheduler. Report types include Combined Sales Insight, Individual Sales, EBCAS, Pension, Marketing Campaign, and provider-specific reports.

  • Python
  • APScheduler
  • Microsoft Graph API
  • MSAL
  • Pandas
  • HTML/CSS Email

AI-Powered SEO Reporting Pipeline

Problem: Monthly SEO performance reporting required hours of manual analysis and formatting before it could be sent to senior management.

Built a Google Apps Script pipeline that connects to Search Console API, tracks 3 keyword segments (Brand, Paid Maintain, Paid New), generates MoM/YoY performance comparisons, and sends HTML email reports with monthly trend tables. Integrated Claude AI API for automated executive summary narratives. Reports distributed to 9 stakeholders via Microsoft Azure Graph API — zero manual intervention.

  • Google Apps Script
  • Claude AI API
  • Search Console API
  • Azure Graph API
  • HTML
  • JavaScript

More Projects

Lead Management & CRM Automation

Built lead assignment (10 preset workflows), lead release, and contact analysis tools that automate CRM operations and generate Odoo-importable files. Includes 7-stage filter pipeline for data quality monitoring.

  • Python
  • Streamlit
  • PostgreSQL
  • Pandas

Sales Data Processing & Reporting Engine

Comprehensive sales data pipeline processing CRM exports across 6 report modules: opportunity pipeline, activity tracking, customer lead conversion, target vs. actual performance, and executive Combined Sales Insight dashboard.

  • Python
  • Pandas
  • Odoo CRM
  • openpyxl

Data Comparison & Quality Tools

FastAPI web portal for internal data comparison tools. Lead vs. Sales Rep comparison engine with 4 exclusion rules, live schedule viewer for automated tasks, and card-based navigation. Dockerised deployment.

  • FastAPI
  • Python
  • Docker
  • Bootstrap 5

Company Name Matching Algorithm

Fuzzy company name matching tool using sequence matching and Unicode normalisation for CRM data deduplication. Handles bilingual names (English/Chinese) and cross-platform path handling.

  • Python
  • difflib
  • Pandas
  • Unicode

Odoo CRM Data Export Suite

6 automated data export scripts pulling from Odoo CRM's PostgreSQL database — activities (59 columns with auto header mapping), contacts, leads, opportunities, sales rep logs, and AUM detail.

  • Python
  • psycopg2
  • PostgreSQL
  • Odoo ERP

Monthly GUMbees TV & Won Case Reports

Automated monthly internal reports with data visualisation charts embedded directly in emails. Won Case quarterly report generates 3 heatmaps + 1 stacked bar chart as inline CID images in HTML emails.

  • Python
  • matplotlib
  • seaborn
  • Graph API

Weekly Data Quality Monitoring

Automated weekly monitoring that detects dissolved companies and parent-subsidiary mismatches in CRM data. Sends alert emails with 4 filter categories and automated correction of parent/subsidiary files.

  • Python
  • Pandas
  • Graph API
  • PostgreSQL

Docker Containerisation & Infrastructure

Containerised the entire reporting platform with Docker for AWS EC2 deployment. Multi-service Docker Compose with Streamlit + FastAPI, health checks, volume mounts, and environment-based configuration.

  • Docker
  • Docker Compose
  • AWS EC2
  • Linux

CRM Migration Planning (Freelance)

Led full Zoho CRM migration planning for a social enterprise as sole consultant — stakeholder interviews, module evaluation, and complete data mapping documentation.

  • Zoho CRM
  • Data Mapping
  • Requirements
  • Consulting

Career Journey

2007

AXA

Finance

2010

Publicitas

APAC Publications

2015

iClick

China Media — Senior Director

2024

Gain Miles

MPF/Insurance — CRM & Analytics