Engineering the CRM integrations, data pipelines and AI agents that move revenue
GTM Engineer in Nairobi. Seven years of TypeScript, Python and SQL spent making HubSpot, Salesforce and payment rails behave like one system.
- HubSpot
- Salesforce
- Stripe
- M-Pesa
- Mailchimp
- Clay
- n8n
- Segment
- API integrations
- CRM data architecture
- Lead routing & scoring
- MCP servers
- Webhooks
- Attribution
- Payment rails
- SQL pipelines
- API integrations
- CRM data architecture
- Lead routing & scoring
- MCP servers
- Webhooks
- Attribution
- Payment rails
- SQL pipelines
The revenue stack, as engineering.
Five parts of it I have built, shipped and kept running in production.
CRM integration & data architecture
I write the connectors, not just the config
Custom HubSpot and Salesforce connectors that pull and push CRM data in both directions. Downstream of them: deduplication against existing records, enrichment, and routing rules that put each lead with the right rep while its campaign attribution survives the trip.
- HubSpot
- Salesforce
- REST APIs
- Webhooks
GTM workflow automation
Workflows the business builds without filing a ticket
On the Taylor Morrison data platform, staff compose their own collection, transformation and sync jobs on top of the connectors and APIs I maintain. Engineering owns the rails; the revenue team owns the route.
- TypeScript
- Node.js
- PostgreSQL
Qualification & scoring
Two ways to find the buyers who mean it
Rule-based qualification over the product-interest data prospects generate configuring their own cover, so a rep's queue holds only sales-ready leads. At Taylor Morrison the scoring is blunter and better: a $100 Stripe deposit, so buyers qualify themselves by paying.
- Stripe
- HubSpot
- PostgreSQL
AI agents & MCP
An MCP server where agents act, not just read
Platform and CRM data exposed to LLM agents as typed tools, with workflow triggering — so an agent can query a record, update it and start an automation in one pass. Open APIs cover the third-party apps that need the same data.
- MCP
- TypeScript
- LLM APIs
Reliability & delivery
Pipelines that don't quietly drop a lead
Event-driven integrations and JWT auth across three services keep lead, reservation and payment state consistent across boundaries. Prometheus and Grafana alert against SLOs, and a GCP serverless migration cut release cycles by about 30%.
- GCP
- Prometheus
- Grafana
- GitHub Actions
The CRM, exposed as typed tools.
My MCP server gives LLM agents read and write access to platform and CRM data, and lets them trigger the same workflows people run. Pick a request to see the call shape.
You asked
Which reserved leads haven't heard from us in a week?
Illustrative example. Tool names and records are simplified, not production data.
Selected work
Three systems, one idea: shorten the distance between interest and revenue.
Custom HubSpot and Salesforce connectors that pull and push CRM data in both directions, sitting under a platform where staff compose their own collection, transformation and sync workflows. Open APIs serve third-party apps. An MCP server exposes the same data to LLM agents as typed read/write tools and lets them trigger those workflows directly.
Worth noticing: Agents that act on CRM data rather than just read it. Job ads still list MCP integration as an emerging skill; this one is already in production.
- TypeScript
- Node.js
- PostgreSQL
- MCP
- Salesforce
- HubSpot
High-volume reservation platform for a Fortune 500 homebuilder, on Node.js, TypeScript and PostgreSQL. Event-driven integrations and JWT auth across three client-facing services keep lead, reservation and payment state consistent, which cut errors in the booking-to-deposit journey. A $100 Stripe deposit filters for intent before a rep makes contact, and rep tooling surfaces reservation status with full email history.
Worth noticing: Qualification by payment, and the consistency problem underneath it: three services, one source of truth for a lead. The GCP serverless migration I led cut release cycles about 30%.
- Node.js
- TypeScript
- PostgreSQL
- Stripe
- JWT
- GCP
I owned the data model from first campaign touch to paid policy on Django REST Framework and PostgreSQL. Capture attaches campaign metadata for attribution; HubSpot deduplication, enrichment and routing clean each lead and assign it; rule-based qualification over product-interest signals fills rep queues; Mailchimp and HubSpot track engagement; M-Pesa collects payment in-app.
Worth noticing: Every stage of a lead-to-revenue system owned by one team. The CI/CD overhaul on the same project made deployments 35% faster with 50% fewer failures, with Prometheus and Grafana alerting against SLOs.
- Django REST Framework
- PostgreSQL
- HubSpot
- Mailchimp
- M-Pesa
How I got here
Most GTM engineers arrive from sales. I arrived from seven years of production engineering — APIs, data pipelines, payments, regulated healthcare — and pointed it all at revenue.
So I reach for the connector rather than the workaround: sync logic, dedupe rules, webhooks that never drop a lead, and the MCP server that lets agents act on the result. I lead small teams, mentor engineers, and ship.
Senior Platform Engineer
Griffin Global Technologies · Client: Taylor Morrison
Oct 2023 – Now
Technical Lead & Delivery Manager
Savannah Informatics · Led the sales platform team
2022 – 2023
Software Engineer to Senior Engineer
Savannah Informatics · Regulated healthcare APIs and mobile apps
2018 – 2022
- Real estate sales
- Insurance distribution
- Payments
- Regulated healthcare (HIPAA)
BSc Statistics & Programming, Kenyatta University, 2018