6:24-cv-00130
S3G Technology LLC v. WW Grainger Inc
I. Executive Summary and Procedural Information
- Parties & Counsel:
- Plaintiff: S3G Technology LLC (California)
- Defendant: W.W. Grainger, Inc. (Illinois)
- Plaintiff’s Counsel: PARKER, BUNT & AINSWORTH, P.C.
- Case Identification: 6:24-cv-00130, W.D. Tex., 03/13/2024
- Venue Allegations: Plaintiff alleges venue is proper in the Western District of Texas because Defendant maintains a regular and established place of business in Waco, Texas, and has transacted business involving the accused products in the district.
- Core Dispute: Plaintiff alleges that Defendant’s mobile applications and associated backend server systems infringe three patents related to methods for efficiently modifying and updating software applications on remote devices.
- Technical Context: The technology addresses updating distributed software applications by transmitting small "dialogue modules" containing translatable "code" rather than sending entirely new, large executable files, aiming to conserve network bandwidth.
- Key Procedural History: The complaint notes that terms from the asserted patents were previously construed by the court in a related case, S3G Tech. LLC v. Unikey Techs., Inc., and it relies on these constructions. The complaint also references a Notice of Allowability from the prosecution history of a related patent to assert the claimed limitations were considered non-obvious by the USPTO. The Plaintiff has filed numerous similar lawsuits against other defendants asserting at least one of the same patents.
Case Timeline
| Date | Event |
|---|---|
| 2009-07-23 | Earliest Priority Date for ’124, ’774, and ’995 Patents |
| 2018-04-10 | ’124 Patent Issued |
| 2019-04-16 | ’774 Patent Issued |
| 2023-05-30 | ’995 Patent Issued |
| 2024-02-27 | Accused Android App Last Updated |
| 2024-02-28 | Accused iOS App Last Updated |
| 2024-03-13 | Complaint Filed |
II. Technology and Patent(s)-in-Suit Analysis
U.S. Patent No. 9,940,124 - "Modification of Terminal and Service Provider Machines Using an Update Server Machine"
- Patent Identification: U.S. Patent No. 9,940,124, "Modification of Terminal and Service Provider Machines Using an Update Server Machine," issued April 10, 2018 (Compl. ¶10).
The Invention Explained
- Problem Addressed: The patent addresses the technical challenge of updating software on a large number of geographically dispersed devices (Compl. ¶14). Distributing newly compiled, full software applications is inefficient, particularly over wireless networks with limited bandwidth, as the files can be too large and the process too time-consuming (’124 Patent, col. 2:39-64).
- The Patented Solution: The invention proposes a three-part system architecture comprising a terminal machine (e.g., a mobile device), a service provider machine (e.g., a backend server), and an update server machine (Compl. ¶16; ’124 Patent, Fig. 1). The applications on the terminal and service provider machines are structured with two distinct components: a stable set of "computer-executable instructions" and a modifiable set of "code" (’124 Patent, col. 7:56-61). The update server sends small "dialogue modules" containing new "code" that modifies the application's behavior without altering the larger, underlying computer-executable instructions, thus enabling efficient updates (’124 Patent, col. 4:30-40). The complaint references Figure 2 of the patent to illustrate the specific structure of applications comprising directly executable instructions and translatable code (Compl. ¶17).
- Technical Importance: This architectural approach is designed to reduce network bandwidth utilization and improve the efficiency of modifying applications running on remote devices (Compl. ¶25).
Key Claims at a Glance
- The complaint asserts at least independent claim 1 (Compl. ¶32).
- Essential elements of claim 1 include:
- A method of conducting a dialogue between a terminal machine and a service provider machine.
- Displaying a first prompt by running a terminal application that comprises first computer-executable instructions and first code.
- Accepting a first data entry associated with the first prompt.
- Communicating information from the terminal machine to a service provider machine running a provider application that comprises second computer-executable instructions and second code.
- Storing at least a portion of the communicated information in memory for analysis.
- Receiving, at the terminal machine, a terminal dialogue module that updates a portion of the first code to produce first updated code.
- The first updated code adapts the terminal application to display a second prompt for a modified dialogue sequence.
- At least one of the first code, second code, and first updated code must comprise intermediate code.
- The complaint does not explicitly reserve the right to assert dependent claims but alleges infringement of "one or more claims" (Compl. ¶32).
U.S. Patent No. 10,261,774 - "Modification of Terminal and Service Provider Machines Using an Update Server Machine"
- Patent Identification: U.S. Patent No. 10,261,774, "Modification of Terminal and Service Provider Machines Using an Update Server Machine," issued April 16, 2019 (Compl. ¶11).
The Invention Explained
- Problem Addressed: The patent addresses the same technical problems as its parent, the ’124 Patent: the inefficiency and difficulty of distributing large, newly compiled software updates to numerous remote devices over networks with limited data transmission capabilities (Compl. ¶¶13-15; ’774 Patent, col. 2:17-67).
- The Patented Solution: The invention utilizes the same three-entity system (terminal, service provider, and update server) where applications are bifurcated into static computer-executable instructions and dynamic, translatable "code" (’774 Patent, Fig. 1). The system avoids large file transfers by sending small packets of data—referred to in the claims as "third code"—to modify the application's behavior by updating the existing "code" on the terminal device (’774 Patent, col. 4:40-43). The complaint references Figure 1 of the patent to show the three-entity computer system structure (Compl. ¶16).
- Technical Importance: The solution aims to achieve computing resource savings, improved network utilization, and design efficiencies by enabling lightweight modifications to distributed software (Compl. ¶20).
Key Claims at a Glance
- The complaint asserts at least independent claim 1 (Compl. ¶51).
- Essential elements of claim 1 include:
- A method of conducting a dialogue sequence between a terminal machine and a service provider machine.
- Displaying a first prompt by running a terminal application comprising first computer-executable instructions and first code.
- Accepting a first data entry at the terminal machine.
- Communicating information from the terminal machine to the service provider machine, which uses a provider application comprising second computer-executable instructions and second code.
- Receiving, at the terminal machine, third code that modifies at least a portion of the first code to produce first updated code.
- The first updated code adapts the terminal application to display a second prompt for a modified dialogue sequence.
- The complaint alleges infringement of "one or more claims" (Compl. ¶51).
U.S. Patent No. 11,662,995 - "Network Efficient Location-Based Dialogue Sequence Using Virtual Processor"
- Patent Identification: U.S. Patent No. 11,662,995, "Network Efficient Location-Based Dialogue Sequence Using Virtual Processor," issued May 30, 2023 (Compl. ¶12).
- Technology Synopsis: This patent relates to conducting a dialogue sequence between at least two user devices, facilitated by one or more provider applications. The method involves sending authorizations to the devices and then receiving, from a first device, "second code" that supplements existing "first code" on the provider application to produce updated code. This updated code then facilitates the dialogue between the devices, with the update occurring during continuous operation and without the server explicitly requesting the code from the device (Compl. ¶¶70, 73).
- Asserted Claims: At least independent claim 1 (Compl. ¶69).
- Accused Features: The complaint alleges that when a user interacts with the Defendant's website on one device and its mobile app on another, the user's actions (e.g., saving an item to a list) generate "code" that is received by the Defendant's server, which then updates the provider application to facilitate a synchronized experience across both user devices (Compl. ¶¶71-73).
III. The Accused Instrumentality
Product Identification
- The "Accused Instrumentalities" are Defendant W.W. Grainger, Inc.'s mobile applications for Android and iOS (the "Defendant app") and the associated backend systems, servers, and software that support them (Compl. ¶8).
Functionality and Market Context
- The accused applications provide e-commerce functionality, allowing users to review, order, and manage "add-to-list" items (Compl. ¶34, 53). This functionality requires communication between the user's device (alleged to be the "terminal machine") and the Defendant's servers (alleged to be the "service provider machine") (Compl. ¶36, 55).
- The complaint alleges a specific technical structure for the system: the mobile app running on an Android device comprises computer-executable instructions (the Android Runtime) and "code" (the app's bytecode), while the server application is a .Net application comprising computer-executable instructions (the Common Language Runtime) and "code" (the .Net program) (Compl. ¶¶34, 36, 53, 55).
- Plaintiff alleges that Defendant derives a significant portion of its revenue from the use and distribution of these products and services (Compl. ¶8).
IV. Analysis of Infringement Allegations
’9,940,124 Infringement Allegations
| Claim Element (from Independent Claim 1) | Alleged Infringing Functionality | Complaint Citation | Patent Citation |
|---|---|---|---|
| displaying a first prompt...by running a terminal application, the terminal application comprising first computer-executable instructions and first code... | The Defendant app displays a list of items for a user to review or order. The app is the terminal application, its bytecode is the "first code," and the Android Runtime is the "first computer-executable instructions." | ¶34 | col. 7:56-61 |
| accepting a first data entry at the terminal machine... | The system accepts user input, such as adding, removing, or ordering items from the displayed list. | ¶35 | col. 11:37-43 |
| communicating information associated with the first data entry...to the service provider machine... | Information about the user's list interactions is communicated from the mobile device to the Defendant's server. | ¶36 | col. 11:44-50 |
| storing at least a portion of the information...in memory for analysis. | The server stores information related to the list or ordered items, for example, to add them to the user's order history. | ¶37 | col. 11:59-62 |
| receiving, at the terminal machine, a terminal dialogue module that updates at least a portion of the first code to produce first updated code... | When a user modifies a list, the server sends information (e.g., JSON data) back to the app. This information is alleged to be the "terminal dialogue module" that updates the app's bytecode ("first code") to produce "first updated code." | ¶38 | col. 8:63-9:3 |
| wherein the first updated code adapts the terminal application to display a second prompt for the terminal machine's portion of a modified dialogue sequence... | The updated code enables the app to display a "second prompt," which is evidenced by the ability to access the newly updated list of items. | ¶38 | col. 9:4-10 |
’10,261,774 Infringement Allegations
| Claim Element (from Independent Claim 1) | Alleged Infringing Functionality | Complaint Citation | Patent Citation |
|---|---|---|---|
| displaying a first prompt...by running a terminal application, the terminal application comprising first computer-executable instructions and first code... | The Defendant app displays a list of items. The app is the terminal application, its bytecode is the "first code," and the Android Runtime is the "first computer-executable instructions." | ¶53 | col. 15:50-57 |
| accepting a first data entry at the terminal machine... | The system accepts user input related to the displayed list, such as editing or deleting items. | ¶54 | col. 15:58-61 |
| communicating information...from the terminal machine to the service provider machine... | Information from the user's list interactions is sent from the mobile device to the Defendant's server. | ¶55 | col. 15:62-67 |
| receiving, at the terminal machine, third code that modifies at least a portion of the first code to produce first updated code... | Information communicated from the server back to the app (e.g., JSON data representing a new list item) is alleged to be the "third code" which modifies the app's bytecode ("first code") to produce "first updated code." | ¶56 | col. 16:1-5 |
| wherein the first updated code adapts the terminal application to display a second prompt for the terminal machine's portion of a modified dialogue sequence... | The updated code allows the app to display a "second prompt," evidenced by the ability to access the newly added list items. | ¶56 | col. 16:6-11 |
Identified Points of Contention
- Scope Questions: A primary question may be whether the routine exchange of structured data (e.g., JSON) between a client application and a server in a standard e-commerce architecture constitutes receiving a "terminal dialogue module" or "third code" in the structural sense claimed by the patents. The dispute may center on whether this is merely data being processed by the application, or a module that structurally modifies the application's code.
- Technical Questions: The infringement theory hinges on the allegation that received server data (e.g., JSON) "updates at least a portion of the first code [the app's bytecode] to produce first updated code" (Compl. ¶38, 56). A key technical question will be what evidence the complaint or discovery provides that the application's bytecode is actually modified, rather than the application's pre-existing executable instructions simply interpreting the new data to change the user display.
V. Key Claim Terms for Construction
The complaint relies on constructions from prior litigation (S3G Tech. LLC v. Unikey Techs., Inc.), which will likely frame the dispute over these terms.
The Term: "code"
Context and Importance: This term is foundational to the patents' claimed distinction between static "instructions" and dynamic "code." The infringement case depends on whether data like an app's bytecode and server-side .Net programs meet the specific definition of "code" that requires translation before execution.
Intrinsic Evidence for Interpretation:
- Evidence for a Broader Interpretation: The complaint cites the patent's explicit definition: "code represents at least some information that must be translated by the software application before it can be implemented on the machine processor" (’124 Patent, col. 4:30-40, cited in Compl. ¶17). Plaintiff may argue this broad "information" language covers app bytecode and server data.
- Evidence for a Narrower Interpretation: The specification provides examples such as "Java Byte Code" as "intermediary code" (’124 Patent, col. 2:61-65). A defendant may argue this context limits "code" to compiled intermediate languages, not simple structured data formats like JSON.
The Term: "dialogue module"
Context and Importance: The claims require receiving a "dialogue module" to update the application. The complaint equates this with JSON data sent from the server (Compl. ¶38). Whether this data qualifies as the claimed "module" is a central point of contention.
Intrinsic Evidence for Interpretation:
- Evidence for a Broader Interpretation: The complaint notes a prior court finding that the specification discloses "that a 'dialogue module' can contain code or other data and can be communicated" (Compl. ¶21). This supports the view that a data structure can be a module.
- Evidence for a Narrower Interpretation: The same court found that the term refers to "a particular type of structure rather than to any structure for performing a function" (Compl. ¶21). A defendant may argue that JSON data is simply data for the function of displaying a list, not the specific "type of structure" claimed by the patent.
VI. Other Allegations
- Indirect Infringement: The complaint alleges inducement based on Defendant's marketing and promotion of the accused apps and its instructions for users to download and install them (Compl. ¶¶42, 44, 60, 62). Contributory infringement is alleged on the grounds that the accused products are not staple articles of commerce and are especially adapted to infringe the patents (Compl. ¶¶45, 63).
- Willful Infringement: Willfulness is not explicitly pled in the infringement counts. However, the complaint alleges Defendant has had actual knowledge of the patents "at least since the filing of this complaint" (Compl. ¶¶31, 50, 68), and the prayer for relief asks for a finding that infringement is willful (Compl. p. 31). This suggests a theory based on post-suit knowledge.
VII. Analyst’s Conclusion: Key Questions for the Case
- A core issue will be one of definitional scope: Can the term "dialogue module," which the patents and prior construction describe as a specific "type of structure," be construed to cover the routine transmission of formatted data like JSON from a server to a client application in a conventional e-commerce system?
- A key evidentiary question will be one of technical operation: Does the accused system's receipt of server data result in the actual "modification" of the mobile application's translatable bytecode to "produce...updated code," as required by the claims, or does the application's existing executable logic simply interpret the new data to update the display, representing a fundamental operational distinction?
- A third question may concern architectural mapping: Can the Plaintiff demonstrate that the Defendant's two-part client-server system maps onto the patents' three-entity architecture, which explicitly includes a distinct "update server machine" in addition to the "terminal machine" and "service provider machine"?