Gushwork AI (Backed by Lightspeed)
Founding Product Designer at Gushwork AI

Overview
Gushwork is a Platform to Generate Qualified Inbound Leads from AI Search Engines on Autopilot for your Business
Gushwork’s AI agents help your business get discovered by your buyers, across AI search, Google, and paid channels, then turn that interest into marketing-qualified leads.
Challenge
Solving for lead quality for out 500+ customers.
A spam lead is more than an annoyance. Every fake entry sitting in the list makes someone second-guess the genuine ones right next to it. Customer success teams were spending real time separating actual customers from noise, and worse, they were starting to doubt leads that were genuinely worth chasing. The difficult part was never catching obvious spam. It was catching the borderline cases without ever throwing away a real customer, because a false positive here doesn't just misfile something, it quietly loses someone a lead they will never even know existed.
Approach
Turning those constraints into a clear direction.
This is where it stopped being a design job. Rather than writing a spec and handing it off, I took the problem end to end and built the solution myself: a full detection pipeline made of a lightweight rules script to catch the obvious junk, an LLM agent to handle the genuinely ambiguous cases, and the plumbing to tie the two together and run them over every incoming lead. The strategy underneath it was deliberate. The goal was never simply to block spam, it was to make people believe the list again, and that is a different problem. So the obvious, clearly worthless entries get caught cheaply and instantly, while only the truly uncertain ones get passed to something smarter that can weigh them with care. And one rule sat beneath all of it, that nothing should ever be silently deleted, so a real customer could never disappear without anyone being able to see it happen.

Research
Using SQL to understand the underlying data patterns before jumping to solutions.
I did not start with opinions, I started with the database. I ran a lot of SQL queries against the real leads, both the flagged and the clean ones, to see what actually separated a spam entry from a genuine customer. [FILL IN: a specific finding or two, e.g. what share of the list was junk, which fields gave it away most reliably]. Some patterns were obvious the moment the data surfaced them, like single-character names, nonsense in the company field, malformed emails, and submissions that arrived in sudden bursts. Others were subtler and clearly needed judgement rather than a fixed rule. That split, between what a query could decide and what needed a smarter look, became the backbone of the entire pipeline.
Product Solution / Layer One: Definitive Python Script
The first pass is a Python script that runs on every incoming lead before anything else touches it. Its whole job is to clear out the entries that are unambiguously worthless, cheaply and instantly, so the slower and more expensive judgment only ever runs on the cases that genuinely deserve it. It works through a series of plain, legible checks rather than one clever catch-all. A name field is rejected when it is a single character or carries no real letters. A company field is flagged when it is empty or filled with the kind of nonsense a real business would never enter. An email is checked for a valid format and against obviously fake or disposable patterns. And submissions that arrive in sudden bursts, faster or more repetitively than a real set of customers ever would, get caught as a group rather than one at a time. When a lead trips one of these checks it is tagged with the specific rule it failed and set aside, never deleted, so the reason is always attached to the result. Because each rule is explicit and named, a flagged lead can be explained in a single line instead of pointing at a black box, and the list of rules can grow as new patterns appear. One of the more recent additions catches leads with only a single character in the name or company field, a small tell that turned out to be a reliable marker of junk.

Product Solution / Layer 2: Subjective LLM Agents
Anything that survives the rules layer is, almost by definition, a genuine judgment call, the kind a person could decide in a second but a fixed rule never could. Those leads go to a filtering agent I built with Claude Code. The agent looks at the full lead in context rather than any single field in isolation, and weighs whether the details actually hang together as a plausible real person and a real business. Instead of returning a blunt yes or no, it returns a level of confidence along with a short reason, which matters because the borderline cases are exactly where a hard verdict does the most damage. A lead that is probably real should not be treated the same as one the system is certain about. The product then uses that confidence deliberately rather than blindly. The clearly genuine leads flow straight through, the clearly fake ones are flagged, and the uncertain middle stays visible and explainable so a person can make the final call when it is genuinely close. I designed both halves of that, how the agent reasons and how much the product is allowed to trust it, so the system leans on automation for the easy calls and keeps human judgment exactly where it is still worth more than speed.

Design Solution 1
Creating a high trust dashboard for our clients
The detection was only half the job. How it showed up in the product decided whether anyone would actually trust it, and the easy move, quietly deleting anything suspicious, was the one thing I refused to do. A silent delete means a real customer can vanish and nobody ever knows it happened, which is the exact opposite of the trust I was trying to rebuild. So instead, every lead stays visible and every flag carries its reason with it. A flagged lead shows what tripped it, whether that was a specific rule from the first layer or the agent's judgment from the second, so the person can see what the system thought and why. The final call always stays with them rather than with the pipeline. That single decision, to explain rather than hide, is what turned a piece of detection logic into something people were actually willing to rely on.
Design Solution 2
The older experience forced people to sift the whole list by hand, which is slow and, worse, slowly erodes trust in everything sitting on it. The redesign was built so the state of a lead is obvious at a glance rather than something you have to study. Genuine leads sit clearly in the main view, while flagged ones are separated out and labelled with why they were flagged, kept one step away rather than hidden, so nothing ever feels deleted. The confidence from the agent gives the list a natural order, so the strongest leads rise to where attention should go first. The result is a dashboard someone can open, trust in a few seconds, and spend their attention on real customers instead of on triage.

The Outcome
The bigger win came right after. Because we could finally tell a genuine lead from a fake one, we could switch on automated email notifications the moment a real lead arrived, something that had been blocked entirely before, since firing emails at a list full of spam was never a safe option. One product fix quietly turned on a whole capability that had been stuck behind it. And the part I am proudest of is that none of this began as a design ticket. I saw the problem, went into the data, built the pipeline, and designed how it showed up, and I owned the whole thing from A to Z.

Used Claude Code to create the entire Python script and Filtering Agents
Components were built to be flexible, reusable, and easy to maintain. Buttons, cards, and content blocks follow a unified design language that supports consistency without limiting creativity.

Timeline
2 weeks till pushed into production
The final experience successfully balances clarity, personality, and functionality. It provides a framework for showcasing work while creating meaningful connections with visitors through thoughtful design and storytelling.