7 YOE: Built production web apps as a Software Engineer. Now building agentic GTM infrastructure as a GTM Engineer.
US Citizen · Remote · 2-Week Notice · Open to Full-Time & Contract
I build AI-native full-stack systems that move revenue metrics. 7 years as a Software Engineer shipping Next.js/React, TypeScript/Node.js APIs, and PostgreSQL data layers — from fintech (SoFi, Ally Bank) to government/defense (General Dynamics IT). Transitioned to GTM Engineering. Currently building agentic GTM infrastructure: lead scoring, multi-channel outreach, sales call intelligence, and autonomous pipeline management.
I ship with Cursor, Claude Code & Codex, and GitHub Copilot daily — using GPT-4o, GPT-4o-mini, Claude 3.5 Sonnet, and Claude 3 Opus to accelerate architecture, not replace judgment.
A Series B SaaS startup was burning $40K/month on paid acquisition with no visibility into which channels produced pipeline. I built a multi-touch attribution warehouse that ingested every touchpoint from Salesforce, HubSpot, Apollo, and Clearbit into a unified PostgreSQL schema. Four attribution models run in parallel — first-touch, last-touch, linear, and U-shaped.
flowchart LR
A[Marketing: LinkedIn = 60%] --> D{Attribution Engine}
B[Sales: Email = 60%] --> D
D --> E[First-Touch: LinkedIn = 45%]
D --> F[Last-Touch: Email = 52%]
D --> G[U-Shaped: LinkedIn 35% + Email 38%]
G --> H[$1.2M attributed pipeline]
U-shaped attribution revealed LinkedIn created awareness (35%) but email closed deals (38%). Budget reallocated from broad LinkedIn ads to targeted email nurture. CFO moved from asking "Is this working?" to "How do we scale what works?"
An enterprise team of 12 reps spent 6.4 hours/week on post-call admin: CRM updates, follow-up emails, call notes. CRM adoption was 34%. I built an AI-native sales pipeline integrating with Gong, Fathom, and Fireflies to auto-analyze every call.
flowchart TD
A[Gong Recording] --> B[Webhook Trigger]
B --> C[AI Analysis Pipeline]
C --> D[16-Bucket Objection Classifier]
C --> E[Sentiment Trajectory]
C --> F[Next-Step Extraction]
D --> G[Auto CRM Update]
E --> G
F --> G
C --> H[AI Follow-up Draft]
C --> I[Coaching Scorecard]
G --> J[Pipeline Kanban Updated]
Post-call admin dropped from 6.4 hrs to 1.2 hrs per rep. CRM adoption jumped to 89% because records updated automatically — reps only reviewed and approved. Follow-up send time went from 45 minutes to 3 minutes. Rep coaching became data-driven: managers saw exactly which objection types each rep struggled with.
An outbound SDR team worked from static ZoomInfo lists with 30-45 day stale intent data. Meeting book rate: 2.1%. I built a real-time signal detection system monitoring LinkedIn public engagement against competitor watchlists.
flowchart TD
A[LinkedIn Engagement] --> B[Signal Detector]
B --> C[Four-Layer ICP Score]
C --> D{Score > 80?}
D -->|Yes| E[🔥 Hot Lead]
D -->|No| F[❄️ Nurture]
E --> G[Apollo Enrichment]
G --> H[CRM Route]
G --> I[Slack Alert to SDR]
H --> J[Auto Sequence Trigger]
Meeting book rate jumped from 2.1% to 8.7%. Lead response time went from 30-45 days to under 15 minutes. Daily dials dropped from 80 to 35, but meetings booked per week increased from 3.2 to 6.1. Competitive win rate improved 23% because reps reached prospects during active evaluation windows.
flowchart TD
A[User Request] --> B[Revenue Orchestrator<br/>State Machine + Event Bus]
B --> C[🎯 Planner Agent<br/>Goal decomposition<br/>ICP scoring<br/>Priority queue]
B --> D[📊 Analyst Agent<br/>Attribution modeling<br/>Forecasting<br/>Churn risk]
B --> E[🚀 Activator Agent<br/>Lead routing<br/>Sequence triggers<br/>CRM sync]
C --> F[🧠 Reviewer Agent<br/>Human checkpoint]
D --> F
E --> F
F --> G[📈 Action Output<br/>CRM / Email / Slack / Dashboard]
flowchart LR
subgraph Sources
S1[Salesforce]
S2[HubSpot]
S3[Apollo]
S4[LinkedIn]
S5[Clearbit]
end
Sources --> E[Extract<br/>CDC]
E --> T[Transform<br/>Attribution + Scoring]
T --> L[Load<br/>PostgreSQL Warehouse]
L --> Q1[FastAPI<br/>Real-time Queries]
L --> Q2[dbt Models<br/>Metrics Layer]
L --> Q3[Reverse ETL<br/>Activation]
Q1 --> D1[Next.js Dashboards]
Q2 --> D2[Scheduled Reports]
Q3 --> D3[CRM Enrich<br/>Slack Alerts]
flowchart TD
A[Raw Lead] --> B[Firmographic<br/>0-25 pts<br/>Title · Industry · Size]
A --> C[Demographic<br/>0-25 pts<br/>Title · Seniority · Role Fit]
A --> D[Behavioral<br/>0-25 pts<br/>Recency · Frequency · Depth]
A --> E[Intent<br/>0-25 pts<br/>Job posts · Funding · Demo requests]
B --> F[Composite Score<br/>0-100]
C --> F
D --> F
E --> F
F -->|80+| G[🔥 Hot → SDR now]
F -->|60-79| H[🌡️ Warm → Queue]
F -->|<60| I[❄️ Nurture → Drip]
flowchart TB
subgraph Sources["CRM Sources"]
SF[Salesforce<br/>Opportunities · Accounts · Tasks]
HS[HubSpot<br/>Contacts · Deals · Email Events]
AP[Apollo.io<br/>Enrichment · Sequences · Dialer]
CB[Clearbit<br/>Firmographic · Technographic]
end
subgraph Ingestion["Ingestion Layer"]
WH[Webhooks<br/>Real-time]
API[REST API<br/>Polling]
CDC[Change Data Capture<br/>Incremental]
end
subgraph Warehouse["Unified Warehouse"]
PG[(PostgreSQL<br/>Normalized Schema)]
DM[Dimensional Models<br/>Star Schema]
end
subgraph Services["Service Layer"]
FA[FastAPI<br/>GraphQL + REST]
AUTH[JWT Auth<br/>RBAC]
CACHE[Redis<br/>Session + Cache]
end
subgraph Consumers["Consumers"]
DASH[Next.js Dashboards]
REPORT[Scheduled Reports]
ETL[Reverse ETL<br/>CRM Enrich]
SLACK[Slack Alerts]
end
SF --> WH
HS --> API
AP --> API
CB --> CDC
WH --> PG
API --> PG
CDC --> PG
PG --> DM
PG --> FA
DM --> FA
FA --> AUTH
FA --> CACHE
FA --> DASH
FA --> REPORT
DM --> ETL
ETL --> SF
ETL --> HS
FA --> SLACK
flowchart LR
subgraph Extract["Extract"]
E1[Salesforce API<br/>Bulk + Streaming]
E2[HubSpot API<br/>Engagement Events]
E3[Apollo API<br/>Contact Enrichment]
E4[LinkedIn Scraper<br/>Signal Detection]
E5[CSV Upload<br/>Manual Imports]
end
subgraph Transform["Transform"]
T1[Normalization<br/>Schema Mapping]
T2[Deduping<br/>Fuzzy Matching]
T3[Attribution<br/>First · Last · Linear · U-Shape]
T4[ICP Scoring<br/>4-Layer Algorithm]
T5[Forecasting<br/>Trend + Seasonality]
end
subgraph Load["Load"]
L1[PostgreSQL<br/>Transactional]
L2[Materialized Views<br/>Pre-aggregated]
L3[Redis<br/>Hot Cache]
end
subgraph Orchestrate["Orchestrate"]
O1[Cron Scheduler<br/>Hourly]
O2[Event Triggers<br/>Webhook]
O3[Manual Run<br/>FastAPI Endpoint]
O4[Retry + Dead Letter<br/>Error Handling]
end
E1 --> T1
E2 --> T1
E3 --> T2
E4 --> T2
E5 --> T1
T1 --> T3
T2 --> T4
T3 --> L1
T4 --> L1
T5 --> L2
L1 --> L2
L2 --> L3
O1 --> E1
O2 --> E4
O3 --> T3
O4 --> T1
flowchart TD
subgraph Input["Input Layer"]
I1[User Prompt<br/>Natural Language]
I2[CRM Event<br/>Webhook]
I3[Scheduled Job<br/>Cron]
I4[External Signal<br/>LinkedIn · Funding]
end
subgraph Orchestrator["Agent Orchestrator"]
R[Router<br/>Intent Classification]
S[State Machine<br/>Context Window]
M[Memory<br/>PostgreSQL + Redis]
Q[Queue<br/>Priority + Retry]
end
subgraph Agents["Specialized Agents"]
A1[🎯 Planner<br/>Goal Decomposition<br/>GPT-4o]
A2[🔍 Researcher<br/>Lead Enrichment<br/>GPT-4o + APIs]
A3[✍️ Writer<br/>Email · LinkedIn · Call Scripts<br/>Claude 3.5 Sonnet]
A4[📊 Analyst<br/>Attribution · Forecasting<br/>GPT-4o + Pandas]
A5[🚀 Activator<br/>CRM Update · Sequence Trigger<br/>Node.js]
A6[🧠 Reviewer<br/>Quality Gate · Human Check<br/>Claude 3 Opus]
end
subgraph Output["Output Layer"]
O1[CRM Record<br/>Salesforce · HubSpot]
O2[Email / LinkedIn<br/>Outreach]
O3[Slack Alert<br/>SDR Notification]
O4[Dashboard<br/>Next.js + Recharts]
O5[Human Review<br/>Approval Queue]
end
I1 --> R
I2 --> R
I3 --> R
I4 --> R
R --> S
S --> M
S --> Q
Q --> A1
Q --> A2
Q --> A3
Q --> A4
Q --> A5
A1 --> A6
A2 --> A6
A3 --> A6
A4 --> A6
A5 --> A6
A6 -->|Approved| O1
A6 -->|Approved| O2
A6 -->|Approved| O3
A6 -->|Approved| O4
A6 -->|Needs Review| O5
|
Revenue attribution engine, four-layer ICP scoring, lead-to-revenue analytics, CRM data sync. Python · FastAPI · PostgreSQL · Pandas · SQLAlchemy · Salesforce API |
LinkedIn signal detection → ICP scoring → enrichment → CRM routing. Next.js 15 · TypeScript · PostgreSQL · Prisma · GPT-4o |
|
Multi-channel sequences with reply classification, auto-tuning, A/B testing. Next.js 15 · TypeScript · Recharts · Node.js |
Call intelligence, auto-pipeline kanban, AI follow-ups, rep coaching. Next.js 15 · TypeScript · Prisma · GPT-4o · SSE streaming |
Daily stack: Cursor (IDE) · Claude Code & Codex (refactors) · GitHub Copilot (boilerplate)
Models: GPT-4o · GPT-4o-mini · Claude 3.5 Sonnet · Claude 3 Opus · OpenRouter
Workflow: Natural language spec → AI-accelerated implementation → human-owned architecture, error handling, and production reliability.
Active contributor to developer infrastructure and AI tooling at scale. I ship bug fixes, documentation improvements, and quality-of-life updates across the projects I use in production every day.
| Project | Why It Matters | Focus Areas |
|---|---|---|
| PostHog | Product analytics + feature flags. The open-source alternative to Mixpanel/Amplitude. | Frontend fixes, AI prompt template corrections, test descriptions |
| n8n | Workflow automation platform. Core infrastructure for RevOps data pipelines. | UI text fixes and documentation improvements across node definitions |
| CrewAI | Multi-agent orchestration framework. Role-based agents for sales & ops teams. | Tooling fixes and error message corrections |
| Cal.com | Open-source scheduling infrastructure. TypeScript + Next.js + PostgreSQL. | i18n string corrections and TypeScript utility fixes |
Recent PRs:
| Project | Why It Matters |
|---|---|
| SalesGPT | Context-aware AI sales agent using LangChain. 1.8k+ stars. Built for autonomous outreach. |
| Bricks | Open-source Clay.com alternative. AI agents + web scraping for lead enrichment. |
| Twenty CRM | Open-source CRM for modern revenue teams. TypeScript + NestJS + PostgreSQL. |
| LangChain | The standard framework for LLM applications. Powers every AI system I build. |
Want to collaborate? I'm always looking for interesting open-source projects at the intersection of AI, revenue systems, and developer tools.
- GTM Engineer — Revenue tech stack, AI agents, sales ops automation
- Software Engineer — Full-stack, AI-adjacent, early-stage
- Founding Engineer — 0→1 product ownership
Must-haves: Remote-first, US-based, small high-velocity team
Comp: $150k–$210k base, flexible on equity
Start: 2-week notice
📧 madelynreyes2026@gmail.com
🌐 United States (Remote) · US Citizen · No sponsorship needed


