PingPilot

A one-line request became a patented contact platform, and a pre-registered test broke one of its claims.

Role Co-Founder & CPO at PingPilot
Type Incubated product, then its own company
Evidence Granted patent, still active
Measurement Pre-registered · 81 conditions × 200 runs

Overview

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 Challenge

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.

Approach

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.

What the design was aimed at

Four tiers, and only the top two are a conversation

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.

ABM 1-2-11:1ABM LiteTARGETED ACCOUNTSInbound to ABMMARKET SEGMENTATIONInbound MarketingMASS MARKETING TO UNKNOWN PERSONASthe product's ground

What shipped

One link, six channels, one thread

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.

What the buyer sees
Talk to uspricing.pdf · page 7
What the account team sees
Northwind IndustrialDana OkonkwoVP Revenue Operationspricing.pdfunboundPriya Raman · Director of ITunboundMarcus Feld · ProcurementunboundEllen Vogt · CFOunbound

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.

The mechanism

One account, four buyers, six ways in

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.

The buying committee Northwind Industrial

  • Dana Okonkwo

    VP Revenue Operations

    unbound

    Arrival 1 / 4 Chat ping.me/NW_RevOps_Pricing
    SignalPricing overview, page 7Chat?unrouted

    First 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

The account team rating · idle · holds

  • 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 measurement

Does a flat +0.50 balance the load?

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.

H1
The stated rating adjustments move the distribution of assigned customers materially toward an even split, across the range of rating spreads a real agent pool would exhibit.
H0
The adjustments do not materially change the distribution. Assignment concentrates on the highest-rated agents at substantially the same rate as ranking on rating alone.
Threshold
The adjustments had to close at least 50% of the distance to an even split, in every one of the 81 conditions tested. Below 20% counts as an outright failure for that condition.
Verdict
FALSIFIED Met in 10 of 81 conditions; H1 required every one. The kill condition fired in 31.
kill 0.20supports H1 · 0.50narrow4.1–4.8narrow spread · pool 5 · 100 arrivals · 0% repeat customers. Closed 66% of the gap (supported)narrow spread · pool 5 · 100 arrivals · 30% repeat customers. Closed 59% of the gap (supported)narrow spread · pool 5 · 100 arrivals · 70% repeat customers. Closed 47% of the gap (unsupported)narrow spread · pool 5 · 1,000 arrivals · 0% repeat customers. Closed 43% of the gap (unsupported)narrow spread · pool 5 · 1,000 arrivals · 30% repeat customers. Closed 50% of the gap (unsupported)narrow spread · pool 5 · 1,000 arrivals · 70% repeat customers. Closed 63% of the gap (supported)narrow spread · pool 5 · 10,000 arrivals · 0% repeat customers. Closed 36% of the gap (unsupported)narrow spread · pool 5 · 10,000 arrivals · 30% repeat customers. Closed 40% of the gap (unsupported)narrow spread · pool 5 · 10,000 arrivals · 70% repeat customers. Closed 49% of the gap (unsupported)narrow spread · pool 20 · 100 arrivals · 0% repeat customers. Closed 46% of the gap (unsupported)narrow spread · pool 20 · 100 arrivals · 30% repeat customers. Closed 45% of the gap (unsupported)narrow spread · pool 20 · 100 arrivals · 70% repeat customers. Closed 38% of the gap (unsupported)narrow spread · pool 20 · 1,000 arrivals · 0% repeat customers. Closed 71% of the gap (supported)narrow spread · pool 20 · 1,000 arrivals · 30% repeat customers. Closed 77% of the gap (supported)narrow spread · pool 20 · 1,000 arrivals · 70% repeat customers. Closed 59% of the gap (supported)narrow spread · pool 20 · 10,000 arrivals · 0% repeat customers. Closed 54% of the gap (supported)narrow spread · pool 20 · 10,000 arrivals · 30% repeat customers. Closed 51% of the gap (supported)narrow spread · pool 20 · 10,000 arrivals · 70% repeat customers. Closed 47% of the gap (unsupported)narrow spread · pool 50 · 100 arrivals · 0% repeat customers. Closed 18% of the gap (killed)narrow spread · pool 50 · 100 arrivals · 30% repeat customers. Closed 20% of the gap (killed)narrow spread · pool 50 · 100 arrivals · 70% repeat customers. Closed 22% of the gap (unsupported)narrow spread · pool 50 · 1,000 arrivals · 0% repeat customers. Closed 71% of the gap (supported)narrow spread · pool 50 · 1,000 arrivals · 30% repeat customers. Closed 56% of the gap (supported)narrow spread · pool 50 · 1,000 arrivals · 70% repeat customers. Closed 24% of the gap (unsupported)narrow spread · pool 50 · 10,000 arrivals · 0% repeat customers. Closed 28% of the gap (unsupported)narrow spread · pool 50 · 10,000 arrivals · 30% repeat customers. Closed 30% of the gap (unsupported)narrow spread · pool 50 · 10,000 arrivals · 70% repeat customers. Closed 40% of the gap (unsupported)moderate3.5–5.0moderate spread · pool 5 · 100 arrivals · 0% repeat customers. Closed 41% of the gap (unsupported)moderate spread · pool 5 · 100 arrivals · 30% repeat customers. Closed 40% of the gap (unsupported)moderate spread · pool 5 · 100 arrivals · 70% repeat customers. Closed 21% of the gap (unsupported)moderate spread · pool 5 · 1,000 arrivals · 0% repeat customers. Closed 20% of the gap (killed)moderate spread · pool 5 · 1,000 arrivals · 30% repeat customers. Closed 25% of the gap (unsupported)moderate spread · pool 5 · 1,000 arrivals · 70% repeat customers. Closed 38% of the gap (unsupported)moderate spread · pool 5 · 10,000 arrivals · 0% repeat customers. Closed 14% of the gap (killed)moderate spread · pool 5 · 10,000 arrivals · 30% repeat customers. Closed 14% of the gap (killed)moderate spread · pool 5 · 10,000 arrivals · 70% repeat customers. Closed 19% of the gap (killed)moderate spread · pool 20 · 100 arrivals · 0% repeat customers. Closed 28% of the gap (unsupported)moderate spread · pool 20 · 100 arrivals · 30% repeat customers. Closed 28% of the gap (unsupported)moderate spread · pool 20 · 100 arrivals · 70% repeat customers. Closed 28% of the gap (unsupported)moderate spread · pool 20 · 1,000 arrivals · 0% repeat customers. Closed 41% of the gap (unsupported)moderate spread · pool 20 · 1,000 arrivals · 30% repeat customers. Closed 47% of the gap (unsupported)moderate spread · pool 20 · 1,000 arrivals · 70% repeat customers. Closed 44% of the gap (unsupported)moderate spread · pool 20 · 10,000 arrivals · 0% repeat customers. Closed 26% of the gap (unsupported)moderate spread · pool 20 · 10,000 arrivals · 30% repeat customers. Closed 31% of the gap (unsupported)moderate spread · pool 20 · 10,000 arrivals · 70% repeat customers. Closed 31% of the gap (unsupported)moderate spread · pool 50 · 100 arrivals · 0% repeat customers. Closed 18% of the gap (killed)moderate spread · pool 50 · 100 arrivals · 30% repeat customers. Closed 20% of the gap (killed)moderate spread · pool 50 · 100 arrivals · 70% repeat customers. Closed 21% of the gap (unsupported)moderate spread · pool 50 · 1,000 arrivals · 0% repeat customers. Closed 35% of the gap (unsupported)moderate spread · pool 50 · 1,000 arrivals · 30% repeat customers. Closed 36% of the gap (unsupported)moderate spread · pool 50 · 1,000 arrivals · 70% repeat customers. Closed 24% of the gap (unsupported)moderate spread · pool 50 · 10,000 arrivals · 0% repeat customers. Closed 22% of the gap (unsupported)moderate spread · pool 50 · 10,000 arrivals · 30% repeat customers. Closed 21% of the gap (unsupported)moderate spread · pool 50 · 10,000 arrivals · 70% repeat customers. Closed 21% of the gap (unsupported)wide2.0–5.0wide spread · pool 5 · 100 arrivals · 0% repeat customers. Closed 19% of the gap (killed)wide spread · pool 5 · 100 arrivals · 30% repeat customers. Closed 22% of the gap (unsupported)wide spread · pool 5 · 100 arrivals · 70% repeat customers. Closed 10% of the gap (killed)wide spread · pool 5 · 1,000 arrivals · 0% repeat customers. Closed 8% of the gap (killed)wide spread · pool 5 · 1,000 arrivals · 30% repeat customers. Closed 10% of the gap (killed)wide spread · pool 5 · 1,000 arrivals · 70% repeat customers. Closed 15% of the gap (killed)wide spread · pool 5 · 10,000 arrivals · 0% repeat customers. Closed 6% of the gap (killed)wide spread · pool 5 · 10,000 arrivals · 30% repeat customers. Closed 6% of the gap (killed)wide spread · pool 5 · 10,000 arrivals · 70% repeat customers. Closed 8% of the gap (killed)wide spread · pool 20 · 100 arrivals · 0% repeat customers. Closed 16% of the gap (killed)wide spread · pool 20 · 100 arrivals · 30% repeat customers. Closed 15% of the gap (killed)wide spread · pool 20 · 100 arrivals · 70% repeat customers. Closed 12% of the gap (killed)wide spread · pool 20 · 1,000 arrivals · 0% repeat customers. Closed 14% of the gap (killed)wide spread · pool 20 · 1,000 arrivals · 30% repeat customers. Closed 18% of the gap (killed)wide spread · pool 20 · 1,000 arrivals · 70% repeat customers. Closed 24% of the gap (unsupported)wide spread · pool 20 · 10,000 arrivals · 0% repeat customers. Closed 9% of the gap (killed)wide spread · pool 20 · 10,000 arrivals · 30% repeat customers. Closed 10% of the gap (killed)wide spread · pool 20 · 10,000 arrivals · 70% repeat customers. Closed 12% of the gap (killed)wide spread · pool 50 · 100 arrivals · 0% repeat customers. Closed 13% of the gap (killed)wide spread · pool 50 · 100 arrivals · 30% repeat customers. Closed 15% of the gap (killed)wide spread · pool 50 · 100 arrivals · 70% repeat customers. Closed 18% of the gap (killed)wide spread · pool 50 · 1,000 arrivals · 0% repeat customers. Closed 21% of the gap (unsupported)wide spread · pool 50 · 1,000 arrivals · 30% repeat customers. Closed 22% of the gap (unsupported)wide spread · pool 50 · 1,000 arrivals · 70% repeat customers. Closed 19% of the gap (killed)wide spread · pool 50 · 10,000 arrivals · 0% repeat customers. Closed 14% of the gap (killed)wide spread · pool 50 · 10,000 arrivals · 30% repeat customers. Closed 14% of the gap (killed)wide spread · pool 50 · 10,000 arrivals · 70% repeat customers. Closed 15% of the gap (killed)0.000.250.500.751.00How much of the gap to an even split was closed. 0 is no better than rating alone.
One dot for each of the 81 conditions tested, none left out. Hover a dot to see its team size, how many enquiries arrived, and how many were repeat customers.
  • 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.

01 What it said it was

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

02 One thread, three ways in

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

03 The person on the other end

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

04 Whatever the channel, one thread

The team is in the thread

Buyer and account team in one thread, rather than a forwarded chain that loses whoever was not copied.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.

The parts it was built from

One token layer, three shells

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

  • Accent #14A79F
  • Accent deep #0A8E89

Four channels, and a channel is only ever its own colour

  • Call #00C7BE
  • Chat #5856D6
  • Video #32ADE6
  • Email #FFD60A

Three grounds

  • Ground #27272B
  • Row #1C1C1E
  • Pill #3A3A3C

Two faces

  • Threads Poppins 700
  • Anna Ashworth DM Sans 700, 19px
  • Health Sales EMEA DM Sans 400, 15px

The row, and every list is rows

Anna Ashworth Health Sales EMEA 10:35A
Kevin Barkley Enterprise Support 2:00P

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

6 contacts1 calls1.2K chats74 videos228 emails

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

call chat video email
Enterprise Support +1 (800) 555-5555 Health Sales EMEA +1 (800) 888-8888 New 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

Arthur Frazier Sales, Health Cloud 4.98
Victoria Duncan Sales, Health Cloud 4.99

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

Thread Page hmu.microsoft.com/health-blogs
Thread Phone +1 (877) 972-1808
Thread Widget Code <div id="hmu-plugin-code"></div><script async src="https://hmu.microsoft.com/widget.js"></script>

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

Let's meet for lunch and go over the Statement of Work. Sending the signal link now.
Contacts

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.

05 The same screens, moving

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.

reconstructed My design for the mobile app, re-visioned in 2020 and rebranded under the HMU identity. The new app excludes the routing patent.
  • 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.

Outcome

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.

Measurement note

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.

Credit

  • Robert Duebelbeis

    Chief Product Officer · Named inventor

    Product ownership, UX and interaction design, front end engineering, positioning and account based marketing.

  • Brandon Brumage

    Lead Engineer · Named inventor

    Full stack lead. Back end services, AWS architecture, DevOps and blue green deployments.

  • Thomas Horner

    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.

enesru