Auckland, New Zealand

Conner Zheng

AI & Systems Engineer — I design and ship production systems end to end, usually solo: LLM agents, data pipelines, ERP/CRM integrations, and full-stack apps.

TOC

Contents

  1. 01 Support Agent
  2. 02 Case Extraction
  3. 03 Inventory Platform
  4. 04 Billing Automation
  5. 05 Sync Service
  6. 06 Call Intelligence
  7. 07 Pricing Engine
  8. 08 Booking Platform

Flip through with the arrows below, or click any entry to jump straight to the full write-up.

01

Support Agent

Retrieval-augmented LLM support bot

Support knowledge was scattered across chat and wiki pages. Built an ingestion + clustering pipeline into a curated knowledge base, with retrieval-time relevance scoring and an evaluation harness that proves retrieval is actually helping. 950-entry KB, automated regression reports.

LLM / RAGNLUMulti-agent
Full case study →
02

Case Extraction

NLP extraction + checkpointed ETL pipelines

Case notes lived only as free-form chat. Built an LLM extraction and verification step, plus three checkpointed update pipelines that hold their checkpoint back on any write failure. 600+ lines each, zero recorded silent data loss.

NLPETLCheckpointing
Full case study →
03

Inventory Platform

ERP / CRM integration layer, 35+ tools

Staff needed fast answers instead of a web console. Grew a bot into 35+ CLI tools over an ERP/inventory API behind one auth layer, plus scheduled alerts and a CRM deduplication engine. ~7,000 lines, several jobs running unattended daily.

ERPCRMOAuth2
Full case study →
04

Billing Automation

Subscription lifecycle automation

Subscription renewals were tracked by hand. Built a full custom OAuth2 + webhook stack, then made the call to migrate to a no-code SaaS automation layer once available — less to operate long-term, even with the code already done.

SaaSWebhooksOAuth2
Full case study →
05

Sync Service

Continuous sync with resumable state

A high-volume record set needed continuous sync. Built a long-running service with a resumable state file and companion monitor, so a restart never means a silent data gap. 3,700+ records, zero manual intervention.

MonitoringData Durability
Full case study →
06

Call Intelligence

Speech AI, reconciliation & ops dashboard

Needed on-demand transcription and a reliable call ID. Shipped two transcription paths after diagnosing a public tunnel as the main source of instability, reconciled three inconsistent data sources (90.5% → 100% match across 4,192 records), and root-caused a recurring outage.

Speech AIObservabilityIncident Response
Full case study →
07

Pricing Engine

Shared calculation core, two channels

Customers needed live shipping quotes on the website. Extracted the pricing logic into one core module, exposed through an internal bot and a public web widget — one engine, two channels, zero duplicated business rules.

E-commerceWeb Widget
Full case study →
08

Booking Platform

Self-hosted full-stack + payments

A live-events business needed oversell-proof booking with safe payments. Postgres is the explicit source of truth, seat purchase is one row-locked atomic transaction, payment state is confirmed only via webhook — plus a full resilience plan for self-hosted infrastructure.

Full-StackPaymentsData Integrity
Full case study →
·

Get in touch

That's the eight systems. Full write-ups — architecture, build process, stack, and the engineering call behind each one — continue below.

ConnerZhengNZ@outlook.com
linkedin.com/in/conner-zheng-8a6a03191

0 / 10

Flip through the arrows (or ← → keys) — or scroll down for the full write-ups.

Capability index
Which case studies demonstrate which capability
Project LLM / AI Data & pipelines API integration Full‑stack web Payments Infra & reliability Analytics
01 Support Agent
02 Case Extraction
03 Inventory Platform
04 Billing Automation
05 Sync Service
06 Call Intelligence
07 Pricing Engine
08 Booking Platform
core to the project present, secondary
01

Support Agent

Retrieval-augmented LLM support bot with a measured retrieval layer

LLM / RAGNLUMulti-agentEval / QASpeech
Problem

Product-support knowledge was scattered across months of team chat and wiki pages. Staff needed expert-level answers instantly, without depending on whoever happened to remember a specific fix.

Approach

Built an ingestion pipeline that classifies chat history and wiki docs into structured "skills," plus a separate clustering stage that synthesizes recurring conversation threads into a curated, deduplicated knowledge base — checkpointed so re-runs only touch new material. At answer time, a relevance layer pulls the right knowledge, skills, and memory into the prompt: a hand-rolled retrieval system, no vector database.

Added voice input (Whisper transcription), scheduling intent parsing, and in-chat commands to correct the knowledge base directly from user feedback. Then built an evaluation harness that runs a fixed question set through the full pipeline and a no-context baseline side by side, scoring both — so retrieval improvements are provable, not assumed. Later split the single bot into a small multi-agent system, routing domain-specific questions out to dedicated specialist bots instead of growing one prompt indefinitely.

Stack
PythonLLM APIOpenAI WhisperTeam-chat platform APIJSON checkpointing
Engineering call
Retrieval quality is a claim until it's measured — build the eval loop alongside the pipeline, not after.

Result: a 950-entry curated knowledge base and an automated regression report on every change.

02

Case Extraction

Structured extraction from support chat + checkpointed diagnostics-update pipelines

LLM extractionNLPETLCheckpointing
Problem

Support agents logged case notes as free-form chat, so nothing was queryable or reportable without manual re-entry. Separately, several product lines each needed their own update data pushed reliably to field technicians.

Approach

Built an LLM-based extraction step that reads raw chat, pulls structured case fields, runs a verification pass against the source text, and writes rows to the correct table by product line — plus a backfill mode and a daily automated summary.

The product-update pipelines are independently checkpointed and each one holds its checkpoint back rather than advancing it on a write failure, so a partial failure gets reprocessed instead of silently marked done.

Stack
PythonLLM APITeam-chat + tables platform
Engineering call
Checkpoint-and-hold beats checkpoint-and-advance: reprocessing a few extra records is cheap, silently losing one is not.

Result: three independent update pipelines, 600+ lines each, with zero recorded silent data loss.

03

Inventory Platform

A 35+ tool integration layer over an inventory/accounting SaaS platform

ERPCRMAPI integrationOAuth2AnalyticsAutomation
Problem

Staff needed fast, chat-native answers about stock, invoices, and orders instead of logging into a web console for every lookup — and needed to be told about problems (low stock, duplicate records, upcoming renewals) instead of finding them by accident.

Approach

Grew a small inventory Q&A bot into 35+ standalone CLI tools, each wrapping one API endpoint (invoices, orders, warehouse stock, serial numbers, credit notes), sharing one authenticated request layer so every tool runs independently — from the bot, a scheduled job, or a terminal.

Layered analytics on top of raw CRUD (replenishment analysis, profit-by-item, revenue summaries), then built scheduled jobs that push alerts directly to staff instead of waiting to be asked. Separately built a customer-record deduplication engine to clean up years of duplicate CRM contacts.

Stack
PythonREST APIOAuth2Team-chat APIScheduled jobs
Engineering call
Keep the conversational layer thin: the bot dispatches to a library of independently-runnable tools, so any tool can be scheduled or reused without touching the bot.

Result: ~7,000 lines across 35+ tools, several running unattended on a daily schedule.

04

Billing Automation

Subscription renewal automation — built custom, then a deliberate build-vs-buy pivot

SaaSOAuth2WebhooksInfra judgment
Problem

Subscription renewals for one product line were tracked by hand. Needed automatic reminders and an escalation path when a customer didn't respond before expiry.

Approach

Designed and built a full custom stack: an OAuth2 client against the billing platform, a webhook receiver, a daily escalation cron, local state tracking, and automated notifications. Documented every step that needed real account access to complete.

Before standing up the always-on webhook infrastructure, recognized that a no-code automation layer already available on the account could cover the same triggers without a public endpoint or a hand-rolled state file — and wrote a migration plan that reused existing credentials rather than provisioning a new integration.

Stack
PythonFastAPIBilling platform APIOAuth2No-code automation platform
Engineering call
Build-vs-buy applies to your own finished code: a working custom implementation was shelved for a platform-native flow once one existed, because it was strictly less to operate — even though the code was already done.
05

Sync Service

Continuous data synchronization with resumable state

Long-running serviceData durability
Problem

A high-volume record set needed to stay continuously synced and backed up, so a source-system hiccup could never mean lost or stale data.

Approach

Built as a long-running managed service rather than a periodic job, with a companion monitor process and an explicit resume file, so a restart picks back up instead of re-running from scratch or silently skipping a window.

Stack
PythonBackground serviceJSON / CSV persistence
Engineering call
Durability over cleverness: a long-running sync service needs explicit, resumable state — "just rerun it" is not a recovery plan.

Result: a live backup of 3,700+ records with zero manual intervention.

06

Call Intelligence

Speech transcription, cross-source data reconciliation & a live ops dashboard

Speech AIObservabilityIncident responseData reconciliationDashboards
Problem

An existing pipeline archived call recordings and logged them to a database. It needed on-demand transcription, a reliable per-call identifier, better caller-name matching, and a way for a manager to see call-center health at a glance.

Approach

Shipped two independent transcription triggers on purpose, not redundantly: a one-click workflow button behind a public tunnel with background speech-to-text and speaker diarization; and, after diagnosing that tunnel as the system's primary source of instability, a tunnel-free chat-bot path with its own reconnect logic, so an in-flight transcription survives a reconnect instead of dying with it. Tuned the speech model against a known repeat-looping failure mode on noisy audio.

Backfilled a stable unique call identifier across 4,192 historical records by reconciling three inconsistent reporting endpoints against the source pipeline via phone-number and time-proximity matching — iterating the match rate 90.5% → 100%, including catching a subtle bug where a filename timestamp reflected call-end rather than call-start time. Shipped a 7-widget live dashboard covering answer rate, call volume, and per-agent performance.

Separately, root-caused a recurring weekly production outage — an auth token expiring on a strict cycle — to a cloud console publishing-status setting, and shipped a permanent fix.

Stack
PythonOpenAI Whisperpyannote.audioFastAPI / uvicornOAuth2Public tunnelTeam-chat / tables APIBackground services
Engineering call
When one piece of infrastructure becomes the recurring source of incidents, build a genuinely different alternative rather than patching the same design again — and write down why both still coexist, rather than silently picking one.
07

Pricing Engine

A shared calculation core exposed through an internal bot and a public web widget

E-commerceWeb widgetCalculation engine
Problem

Customers needed live shipping-cost quotes on the public website, without staff manually working out carrier rates for every enquiry.

Approach

Extracted the cost-calculation logic into a standalone module, then built two consumption paths on top of it — an internal bot for staff, and a public-facing calculator embedded directly into the company website — so the same pricing rules serve both audiences without being maintained twice.

Stack
PythonWebsite backend scriptingJavaScriptHTML / CSS
Engineering call
Keep the pricing logic as one reusable core and adapt only the delivery surface per audience — never let two channels drift into two copies of the same business rule.
08

Booking Platform

A self-hosted, full-stack booking system built as a personal project

Full-stackPaymentsData integrityReliability
Problem

A small live-events business needed a booking platform where overselling capacity is structurally impossible and payment is handled safely — built self-hosted rather than on a SaaS booking platform, to own the data and avoid per-booking fees.

Approach

Made the hosting and data-ownership decisions before writing app code: self-hosted infrastructure with a single relational database as the explicit source of truth — the payment processor confirms into it, every other system only reads from it, nothing else is ever authoritative on capacity. Paired that with a resilience checklist: uninterruptible power, nightly off-site backups, external uptime monitoring, and a documented one-hour failover runbook to a cloud host.

Implemented atomic seat purchase as a single row-locked database transaction with a hard capacity check, so overselling can't happen even under an application bug. Payment state is confirmed only via server-side webhooks, never trusted from the client. Built the booking flow, a day-of manifest with QR check-in, and a chat-based operations bot restricted to fixed, parameterized commands — deliberately no free-form queries over chat.

Stack
TypeScriptNext.js (App Router)ReactPostgreSQLStripeTransactional emailthree.jsDocker ComposeReverse tunnel
Engineering call
Pick the single source of truth up front and make every other system a reader or confirmer of it, never an alternate authority. Design for infrastructure failure from day one — not after the first outage.