projects.map // case studies

Projects_

Three builds, told straight: what was broken, what I built, and what it meant for the business. Client names stay private. The work doesn't.

walker sands // 2025 – now // the one i'm proudest of

AI that answers the questions before you ask them

SnowflakeMCPClaudeAPIsSQLHubSpotSalesforce
the problem

Every client's data lived in a different mix of CRMs, marketing automation, and ad platforms. A simple question like "which programs drove pipeline this quarter?" meant an analyst pulling exports by hand. Same questions, every month, for every client. Slow for leadership, expensive for us.

what i built

I pulled client data into Snowflake and normalized it into one consistent model. Then I connected that warehouse to AI through MCP, so anyone can ask it a question in plain English.

Two kinds of agents run on top. Analysis agents answer each client's recurring business questions and write the summary. Monitoring agents catch RevOps gaps, like blank required fields or stalled deals, and send each one to the person who can fix it.

the payoff

Leadership gets answers on request instead of waiting on a report. Analysts get 340 hours back every quarter, and the agents handle thousands more. Data problems get flagged before they show up in a forecast.

AI analytics data modelFig. 1 · Snowflake model + AI layer · illustrative, field names simplified
Architecture diagram: client source systems feed Snowflake through API connectors. Raw data is normalized into an analytics model of account, contact, campaign, touchpoint and opportunity tables. An MCP server exposes the model to analysis agents and monitoring agents, which deliver summaries, answers and alerts to clients.
signal // technical project manager

The bridge between marketing and the dev team

Technical PMCRMRequirementsMarketing ↔ Dev
the setup

Signal was scaling fast. The franchise network went from about 150 to more than 200 locations, and revenue from $200M to $350M. The business needed an application built on top of its CRM: a reskinned, purpose-built version of it.

my role

I was the technical project manager in the middle. Marketing knew what it needed. The developers needed that as something they could build. I translated both ways: marketing requirements into technical specs, and technical constraints back into decisions marketing could actually make.

the payoff

Most revenue problems are translation problems. This is where I learned to sit in the middle of a build and keep both sides moving in the same direction.

Project workflowFig. 2 · how requirements moved through the build
Sequence diagram: marketing sends goals and requirements to the technical PM, who sends technical specs to the dev team. The dev team returns constraints, the PM turns them into options for marketing, marketing decides, the PM sends the final spec, and the dev team builds the reskinned interface on the company CRM.
walker sands // ongoing, every client

Marketing spend that ties back to revenue

HubSpot ↔ SalesforceGoogle Tag ManagerAccount EngagementEloquaGA4JavaScript6senseZoomInfo
the problem

A B2B deal touches a dozen channels and at least two platforms. A lead fills out a form tracked in one tool, gets nurtured in another, and closes in a CRM with no idea where it came from. Without stitching that together, marketing can't prove what it earns, and finance stops believing the dashboard.

what i build

The tracking layer. About half my work happens on the website: custom builds in Google Tag Manager and Adobe tags, scripts that keep UTM data alive across sessions, enrichment, and hunting down the broken forms and 404s that quietly leak leads.

The integrations. I connect the platforms so nothing gets lost in the handoff, most often HubSpot ↔ Salesforce, Account Engagement ↔ HubSpot, and Eloqua ↔ Salesforce.

The model. For multibillion-dollar clients, I combine all of it into full attribution reporting, then build ROI forecasts program by program. Several honest metrics beat one number that tries to explain everything.

the payoff

A straight line from campaign to closed-won, so budget conversations start from numbers everyone trusts. My rule: bad data in, bad data out. I start at the form field.

Attribution data modelFig. 3 · website to revenue · illustrative, field names simplified
Data model: web sessions and form submissions with persisted UTMs sync into CRM contacts. Contacts, accounts, campaigns and opportunities feed an attribution model of touchpoints and revenue credit, enriched with 6sense and ZoomInfo intent data, which powers pipeline by program, program ROI and forecasts.
next.sh

Want the long version?

Happy to walk through any of these builds in detail, diagrams and all.