Product lead and one of three named inventors on the patent. PingPilot lets a customer reach a business from wherever they already are, and reach the same person every time they come back.
I incubated the product inside the agency Scorch as Interactive Creative Director, then ran it as Chief Product Officer. I did the product design, wrote the design documentation, contributed to the interface code, and owned the product backlog. I also did the positioning and the marketing: the naming, the go to market, and the account based campaign structure that the Signal links still carry today. Brandon Brumage built the back end services. The two of us worked out the call routing together.
The design record for this work is a granted United States patent, number 10,868,915. It was filed on 9 November 2016 and granted on 15 December 2020. It is still in force, and the product still sells what it describes.
The patent describes two problems.
First, a customer usually has to hand over their contact details before a business will talk to them. That is a barrier at the exact moment they are ready to buy. Second, every time that customer comes back they get a different member of staff, so nothing builds up. No history, no relationship, and the customer explains themselves again from the beginning.
The request I was actually given was much smaller than either problem. Chris Buehler wanted to be able to start a conversation from a PDF. That was the whole brief.
A PDF is just a document that can hold a link. So the question I designed against was not how to start a conversation from a PDF but how to start one from anything that can carry a web address. That is what got filed: the patent never mentions PDFs, and its claims treat phone, text message, chat and web link as equal ways in.
I did not design it from the outside. We had access to lead account-based marketing practitioners inside partner accounts, Microsoft O365 sales engineers among them, and the product took its vocabulary from theirs: accounts, personas, verticals, one-to-one.
Account-based selling is a ladder, and every rung up narrows the audience and raises what one conversation is worth. At the base you are shouting at people whose names you do not know. At the top you are talking to one named person at one named company. A product that starts a conversation from a link is worth nothing on the bottom two rungs and is the whole job on the top two, so that is where every decision went. The first of them being that the unit of work is the account, not the person.
Everything followed from that. A thread belongs to an account and mints its own ways in: a page, a number, a line of embed code. The channel becomes an icon on a row in one list, because an agent who has to remember five inboxes checks none of them. The phone is the console rather than a companion to a desk. And a returning customer goes back to the person they dealt with before. If that person is gone, the system offers a choice rather than quietly handing them to a stranger. The mechanism figure further down steps through how it picks.
These are wireframes, not screenshots. The product itself was never saved by the web archive, because the staff screens sat behind a login and the Signal pages saved as blanks. So this is a reconstruction built from the web addresses that did survive, and it is drawn to look like one. The staff app is rebuilt further down the page, screen by screen and labelled the same way; these frames are here for the mechanism, which a screen at a time does not show.
Interactive Four frames, playing on their own. Pick a step to stop the cycle and read it at your own pace.
A Signal is just a link, so it goes wherever a link can go: page 7 of a pricing PDF, an email footer, a board deck someone forwarded. Nothing has to be embedded and nothing has to be a web page.
Northwind Industrial is buying a customer relationship management system. Four people have to agree, none of them get in touch at the same time, and each one arrives from whatever document reached them: a pricing PDF, a technical paper, a board deck someone forwarded. Every document carries a link we called a Signal, and one Signal can be answered by chat, email, phone, text message, video or a booked call. The rule from the patent sits beside each decision.
Interactive Four arrivals, one at a time. Work each decision through and watch what it does to the team's idle clocks and customer counts.
Dana Okonkwo
VP Revenue Operations
unbound
ping.me/NW_RevOps_PricingFirst contact with this company. Nobody here has any history, so there is nobody to send her back to and the system ranks the team.
The system returns a requestor to the agent they already have — the “dedicated agent” — across whichever channel they arrive on.
Priya Raman
Director of IT
unbound
Marcus Feld
Procurement
unbound
Ellen Vogt
Chief Financial Officer
unbound
Ada Reyes
Account Executive
4.90 4m 28
Boone Ferris
Solutions Engineer
4.70 26m 12
Esse Nakamura
Customer Success
4.40 40m 6
Bold means the figure is currently earning a +0.50 adjustment.
This shows the mechanism deciding, and why. What it does not show is whether a flat +0.50 actually shares the work out evenly across the range of ratings a real team would have. The patent claims it does and never checked. That check is the same code, measured instead of stepped, and it is the figure directly below this one.
The patent says the rating adjustments “provide load balancing amongst the agents”, meaning they share the work out evenly across staff. That is a claim about the real world, and a patent examiner never has to check one. So the test below was written down before any of the code was: the target, the conditions, and the point at which the claim would be called a failure.
narrow 4.1–4.8 10 of 27 met the threshold
Closed 46% of the gap on average, and only 18% in the worst case. The lowest rated person on the team got no customer at all in 49% of runs.
moderate 3.5–5.0 0 of 27 met the threshold
Closed 28% of the gap on average, and only 14% in the worst case. The lowest rated person on the team got no customer at all in 87% of runs.
wide 2.0–5.0 0 of 27 met the threshold
Closed 14% of the gap on average, and only 6% in the worst case. The lowest rated person on the team got no customer at all in 99% of runs.
The limit of this result
Real sales teams are rated far more tightly than anything tested here. In practice they sit between 4.85 and 5.00, because anyone who stays below that gets coached out of the team rather than left in it. That band is narrower than the narrowest condition above, so this test does not tell you what the mechanism does in the place it actually ran. No condition has been added for it. Adding a kinder one after seeing the result is the exact move that writing the test down in advance exists to prevent, and the record is worth more than the better number.
Why it fails
Both adjustments are all or nothing, so they only separate two people when one qualifies and the other does not. When the ratings are further apart than the 1.00 both bonuses can add, the top rated person cannot be overtaken at all. In one widely rated team of five, one person took 889 of 1,000 customers and three took none. When enquiries are few, nobody reaches 25 customers, so everyone gets the bonus and it cancels out. When enquiries are many, everyone is well past 25, so nobody gets it and it cancels out again. The mechanism only shares work evenly while the team sits right around 25 customers and the ratings are close enough for 1.00 to change the order.
The problem, stated on the first card
Onboarding opens on the problem the patent opens on: reaching a business means a dozen tools that do not know about each other.
What it promised
One pipeline for calls, chats, meetings and mail, and a memory of every interaction: cards two and four are the whole claim.
A thread issues its own ways in
Every thread comes with three ways to reach it: a web page, a phone number, and a few lines of code to paste into a page of your own. Figure 5 of the patent calls this “URL-triggered contact initiation”, which means a way in that can sit on anything able to carry a web address. The shipped version of the same idea is the 42 archived addresses in signal_urls_archived.csv: 12 Signals, six channels.
One thread per account
Threads are named for a campaign and an account rather than for a person, which is how account-based selling actually buys: one piece of content per named account, per job title, per industry.
The routing surface an operator sees
Everything a manager could change sits on one sheet: a switch and one score per person. The two highest-scoring people here are switched off, so a customer would be handed to someone scoring lower who is online. That is the first rule in the patent, drawn as a screen.
Made-up names and scores, and the switches do nothing here. This is the whole surface a manager got: one switch, one score each. The patent’s promise that this shares work out evenly failed 71 of 81 tests above.
The day, by channel
The agent’s day is one list, and the channel is an icon on the row rather than a separate inbox to remember to check.
Who they are, and what is open
Four ways to reach one person, over the sales facts a rep needs in order to decide whether to.
The note pinned to this screen still says “send the signal link”. Signal was what the product called the link a thread hands out.
The account, not the contact
A buyer arrives attached to an org chart, and the thread inherits it. That is the shape account-based selling needs and a shared inbox cannot hold.
Which number is calling
Before the call goes out the agent picks which thread it belongs to: the number belongs to the thread, not to the person dialling.
The team is in the thread
Buyer and account team in one thread, rather than a forwarded chain that loses whoever was not copied.
The brief, closed
The request that started all of this was to begin a conversation from a PDF. Here the document travels the other way, into a conversation already running.
Reaching for a person
The one screen organised by person rather than by thread, and the only place the app reads as an address book.
The colours, the two faces and the components are specified once. A platform is only a shell that renders them, so a row is the same row on a phone and in the browser, and a channel is the same colour wherever it turns up. Everything below is drawn from the design file's own stylesheet at the size it ships at.
The iOS shell is the file these values come from, and the web shell shipped as the widget a thread hands out. There was an Android build too, but that one rests on my account rather than on anything you can open, so nothing here is drawn to stand for it.
Tokens
One accent
#14A79F#0A8E89Four channels, and a channel is only ever its own colour
#00C7BE#5856D6#32ADE6#FFD60AThree grounds
#27272B#1C1C1E#3A3A3CTwo faces
Poppins 700DM Sans 700, 19pxDM Sans 400, 15pxThe row, and every list is rows
Icon gutter 34px, gap 16px, 15px over 22px of padding, separator starting at 88px so it clears the gutter. The channel is that icon.
The tally strip, which is how a thread gets read
Five counts across the head of a thread. Selecting one filters the rows under it, so the same row component serves all five.
Channel buttons, and the popover that asks which thread
58px squares at 18px radius, one per channel, in that channel's colour. The popover names the thread the call will belong to, because the number the customer sees is the thread's rather than the person's.
The roster row: one switch and one score
Toggle 52 by 32, knob 28 travelling 20px, accent when on. These two controls are the entire surface an operator has over routing, which is the claim the study measures.
The field row, which is how a thread hands itself out
Label at 14px in the tertiary grey, value at 17px in the accent, code in Menlo at 14px. Every value copies on tap. This row is the web shell and the phone shell meeting: the third one is the embed the browser renders.
Bubbles, sheet handle, action button
Incoming bubble on the pill grey with one corner squared off, the agent's own in the accent. The 88px action button sits in the same place on every screen and always does the same thing: reach a person.
Six flows, one recording each. The stills show where the app arrives; these show how it gets there. All of it serves account-based selling. Instead of advertising at a broad audience, a team picks one named company, works the handful of people inside it who all have to agree, and treats that account as the unit of work. So a thread belongs to an account rather than to a person, the number a buyer rings belongs to the thread, and whoever picks it up inherits everything the account has already said. Watch the call and the chat one after the other: same buyer, different channel, one conversation.
Opening the app
The four cards state the pitch and get out of the way. Everything after this is one list.
Placing a call
The number the customer sees belongs to the thread, so the agent picks a thread before the call goes out.
Answering in chat
Same person, different channel, one thread. That is the whole argument of the product, in eleven seconds.
Presenting a document
The brief was to start a conversation from a PDF. Here the PDF goes the other way, into a conversation already running.
Working a thread
One thread per account, tallied by channel, and its three ways in on one screen.
Opening a thread
A thread is reachable the moment it exists. Nothing has to be built for it first.
The patent was granted on 15 December 2020 and is still in force. The three named inventors assigned it to Scorch Agency LLC on 17 November 2017, recorded at the patent office five days later. It now sits with Cbda Holdings LLC.
My vision was designed around account-based sales: a team going after a named company rather than a broad audience. One piece of content per named account, job title, industry, each reachable on any of six channels from a single link.
Our patent claim, “provide load balancing amongst the agents”, does not hold: it failed in 71 of the 81 conditions I tested. The routing that the product actually sells is the identity-persistence path, and that one holds. The balancing language was written ahead of its evidence, and the simulation is what caught it. Ten years on, that is the part of the filing I would write differently.
The patent facts (number, filing date, grant date, assignment chain) are public record and independently checkable. The load-balancing result comes from a pre-registered simulation I ran against the claim language: 81 conditions at 200 runs each, with the pass criterion fixed before the runs. It is a simulation of the claim as written, not a measurement of production traffic, and no production routing telemetry from the period is retained.

Robert Duebelbeis
Chief Product Officer · Named inventor
Product ownership, UX and interaction design, front end engineering, positioning and account based marketing.
Lead Engineer · Named inventor
Full stack lead. Back end services, AWS architecture, DevOps and blue green deployments.
Software Engineer
Stood up the automated test coverage, trained on the codebase by Brandon.
Chris Buehler
Named inventor
Asked us to consider a link in a PDF. Paid the patent filing costs.
On the inventorship
The front page of a patent is a legal record, so it is worth being precise about this one. Brandon Brumage and I were exclusively responsible for the work the claims describe. Chris Buehler asked us to consider a link in a PDF and paid the patent filing costs; nothing more. Neither of those is a contribution to inventing a claim, which is the legal test for being named as an inventor. Section 256 of the US patent law exists to correct a name that does not meet that test. I have not pursued a correction, although I am stating the record as I experienced it first-hand.