Things I built. They run.

Three working systems. Each one takes messy inputs, structures them, puts them in front of the right person, and measures what changes.

ChatbotPicks: who AI recommends near you

Live ChatbotPicks leaderboard for Denver dentists. The page reports that only one practice was named by more than one AI.
Problem

Local businesses have no idea what ChatGPT, Claude, and Gemini say when a customer asks for a recommendation.

What I built

A live AI rank checker. It asks all three AIs the same local question, pulls the business names out of each answer, and shows who gets named and where the AIs agree. City leaderboards cover 5 metros and 6 service categories so far, with 20 metros and 8 categories set up. A ZIP-level rank check runs live, with caching, rate limits, bot protection, and a daily spend cap so it can sit on the open web safely.

Result

Denver dentists, run of Oct 13, 2026. 45 recommendations across three AIs. None of the 45 was named by all three. Only one practice appeared on two lists by exact name. If you're a dentist, which AI the patient uses decides whether you exist.

Rex: a reputation desk for local shops

Illustration. Northline Auto is a fictional shop.

Rex Thursday batch

Google review

Northline Auto

1 star

No reply

Jordan P. · Oct 12, 2026

Waited two hours past the quote and nobody called. The brake job was fine. The silence was not.

Drafted reply

In the owner's voice. Not posted.

Jordan, two hours past a quote with no call is on us. The brake work does not make up for the silence. I'm sorry. Reply if you want me to pull the ticket and make this right.

Nothing in this batch sends until you approve it.

Problem

Local shops collect Google reviews and never answer them. Unhappy customers get no reply, and happy ones get no thanks.

What I built

Rex, an AI agent that runs a reputation desk under Village Consulting. Each weekday it pulls auto repair shops across Salt Lake, Utah, and Davis/Weber counties from Google Maps, reads this year's reviews, and keeps only the shops where most of them sit unanswered. For each one it writes three replies in the owner's voice to real recent reviews, including the 1-star ones, plus a short email offering them free. It also logs every shop in a lead tracker, from found to sent to replied.

Guardrails are part of the build. I approve the whole day's batch in one pass before anything sends. Every email carries a postal address and an opt-out, and opt-outs are honored forever. Rex never writes, buys, or asks for fake reviews, and never posts a reply itself.

Result

First two sending days (Oct 19 to 20, 2026): 8 shops, 227 Google reviews this year, 225 with no reply. 24 free replies written and delivered. In one Oct 21 run, Rex pulled 175 shops and 1,717 reviews and kept 17 that qualified.

  • AI agents
  • Google Maps data
  • human approval gate
  • opt-out compliance
  • Notion

Multi-touch attribution for a fintech B2B company (rebuilt with sample data)

Sample data 12 fictional opportunities. $800,000 pipeline. 4 touches on average before they open. Not a client result.

Email, two different measures

First-touch is share of pipeline. Multi-touch here is share of opportunities. They are not the same percent.

First-touch credit 8% of pipeline
Multi-touch presence 75% of opportunities

First-touch credit of pipeline

Every dollar goes to the channel that showed up first.

Paid search 40%
Webinar 20%
Partner 15%
Content 9%
Email 8%
Direct 8%
Touches before they open
How many touches are on the opportunity before it is created. In this sample the average is 4.
First-touch credit
Every pipeline dollar is given to the channel of the earliest touch. Email receives $64,000 of $800,000, which is 8%.
Multi-touch presence
An opportunity counts for a channel when that channel appears at least once before it opens. Email is on 9 of the 12 opportunities, which is 75%.
Show the 12 sample opportunities
Fictional rows behind the chart. Pipeline sums to $800,000. Touches sum to 48.
Opportunity Pipeline Touches before open First touch Email in the journey
01$96,0006Paid searchYes
02$40,0002EmailYes
03$100,0005WebinarYes
04$80,0003Paid searchNo
05$64,0004PartnerYes
06$24,0002EmailYes
07$64,0004DirectYes
08$96,0007Paid searchYes
09$60,0003WebinarNo
10$56,0005PartnerYes
11$48,0003Paid searchNo
12$72,0004ContentYes
Problem

First-touch reporting gives all the credit to whatever brought someone in first. The email and paid touches that moved the deal forward disappear.

What I built

A multi-touch attribution dashboard that joins three sources: CRM opportunities (Salesforce-style), a BI warehouse, and web journey data. Every metric has a plain-language definition on the page. Data health checks run before any number shows up: missing campaign IDs, duplicate contacts, stale refreshes, touches that fall outside the window. Strict sourcing and broader influence are shown separately, so nobody double counts. This version uses fake, anonymized data. The real one runs on real data I can't share.

Result (sample data)

Opportunities average 4 touches before they open. First-touch credits email with 8% of pipeline. Multi-touch shows email on 75% of opportunities.

Have a messy system that should be working for you?

Send me the problem. I'll tell you what I'd build first.

Talk to Kyle →