IP Library › Granted Patent US 12,321,760
Granted Patent B2
US 12,321,760 · App. 18/186,424 · Granted Jun 3, 2025

Transforming instructions for collaborative updates

Inventors: Andrew Moreland (Stanford, CA); John Carrino (Redwood City, CA)
Assignee: Palantir Technologies Inc.
G06F9/451G06F3/0481G06F3/0482G06F16/2365G06F40/169G06F40/194G06Q10/101G06F8/65
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,321,760
App. No.
18/186,424
Granted
Jun 3, 2025
Kind
B2
Abstract

In various example embodiments, a system and method for transforming instructions for collaborative updates are described herein. A group of instructions for an update of an element depicted in a client device version of a user interface are generated. The group of instructions is executed and the group or a subset of instructions are transmitted to a server. The server accepts or rejects the instructions. The server may execute the instructions to update a server version of the element. The server sends accepted instructions to the other or all client devices.

Claims (64)

1. A method comprising:

receiving, by a first client device, a first group of instructions from a server, the first group of instructions instructing the first client device to execute a first update to an element of a user interface presented on the first client device, the first group of instructions having been received by the server from a second client device, wherein the first group of instructions are generated based off a state of the element presented on a user interface of the second client device;

determining that the first group of instructions conflicts with a second group of instructions previously executed on the first client device, the second group of instructions having performed a previous update to the element of the user interface;

in response to determining that the first group of instructions conflicts with the second group of instructions:

transforming the first group of instructions based on the second group of instructions to generate a transformed first group of instructions;

causing the first client device to execute the transformed first group of instructions; and

transmitting the transformed first group of instructions to the server, wherein the server transmits the transformed first group of instructions to the second client device and cause the second client device to execute the transformed first group of instructions.

2. The method of claim 1 , wherein the first group of instructions are generated by the second client device.

3. The method of claim 1 , further comprising:

generating a third group of instructions for an update to a second element of the user interface, the third group of instructions including at least one front-end instruction;

executing the third group of instructions locally on the first client device, including the at least one front-end instruction;

generating a filtered group of instructions based on the third group of instructions, wherein the filtered group excludes the at least one front-end instruction; and

transmitting the filtered group of instructions to the server.

4. The method of claim 1 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area; or

a word processing document.

5. The method of claim 1 , further comprising:

transmitting a notification to the first client device about the conflict.

6. The method of claim 1 , wherein the first update includes moving the element from a first position to a second position.

7. The method of claim 1 , wherein the first update comprises annotating the element.

8. A client device comprising:

one or more computer processors; and

one or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the client device to perform operations comprising:

receiving, by a client device, a first group of instructions from a server, the first group of instructions instructing the client device to execute a first update to an element of a user interface presented on the client device, the first group of instructions having been received by the server from a second client device, wherein the first group of instructions are generated based off a state of the element presented on a user interface of the second client device;

determining that the first group of instructions conflicts with a second group of instructions previously executed on the client device, the second group of instructions having performed a previous update to the element of the user interface;

in response to determining that the first group of instructions conflicts with the second group of instructions:

transforming the first group of instructions based on the second group of instructions to generate a transformed first group of instructions;

causing the client device to execute the transformed first group of instructions; and

transmitting the transformed first group of instructions to the server, wherein the server transmits the transformed first group of instructions to the second client device and cause the second client device to execute the transformed first group of instructions.

9. The client device of claim 8 , wherein the client device is a first client device and the first group of instructions are generated by the second client device.

10. The client device of claim 8 , wherein the first update comprises annotating the element.

11. The client device of claim 8 , further comprising:

transmitting a notification to the client device about the conflict.

12. The client device of claim 8 , the operations further comprising:

generating a third group of instructions for an update to a second element of the user interface, the third group of instructions including at least one front-end instruction;

executing the third group of instructions locally on the client device, including the at least one front-end instruction;

generating a filtered group of instructions based on the third group of instructions, wherein the filtered group excludes the at least one front-end instruction; and

transmitting the filtered group of instructions to the server.

13. The client device of claim 8 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area; or

a word processing document.

14. The client device of claim 8 , wherein the first update includes moving the element from a first position to a second position.

15. A non-transitory computer-readable medium storing instructions that, when executed by one or more computer processors of a client device, cause the client device to perform operations comprising:

receiving, by a client device, a first group of instructions from a server, the first group of instructions instructing the client device to execute a first update to an element of a user interface presented on the client device, the first group of instructions having been received by the server from a second client device, wherein the first group of instructions are generated based off a state of the element presented on a user interface of the second client device;

determining that the first group of instructions conflicts with a second group of instructions previously executed on the client device, the second group of instructions having performed a previous update to the element of the user interface;

in response to determining that the first group of instructions conflicts with the second group of instructions:

transforming the first group of instructions based on the second group of instructions to generate a transformed first group of instructions;

causing the client device to execute the transformed first group of instructions; and

transmitting the transformed first group of instructions to the server, wherein the server transmits the transformed first group of instructions to the second client device and cause the second client device to execute the transformed first group of instructions.

16. The non-transitory computer-readable medium of claim 15 , wherein the client device is a first client device and the first group of instructions are generated by the second client device.

17. The non-transitory computer-readable medium of claim 15 , wherein the first update comprises annotating the element.

18. The non-transitory computer-readable medium of claim 15 , further comprising:

transmitting a notification to the client device about the conflict.

19. The non-transitory computer-readable medium of claim 15 , the operations further comprising:

generating a third group of instructions for an update to a second element of the user interface, the third group of instructions including at least one front-end instruction;

executing the third group of instructions locally on the client device, including the at least one front-end instruction;

generating a filtered group of instructions based on the third group of instructions, wherein the filtered group excludes the at least one front-end instruction; and

transmitting the filtered group of instructions to the server.

20. The non-transitory computer-readable medium of claim 15 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area; or

a word processing document.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2025
From: MORELAND, ANDREW; CARRINO, JOHN
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 070901/0147 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2023
From: MORELAND, ANDREW; CARRINO, JOHN
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 063182/0300 →
Continuity (4)
Continuation 16997193 · Aug 19, 2020
Continuation 16133431 · Sep 17, 2018
Continuation 15298473 · Oct 20, 2016
Related Publication 20230297396A1 · Sep 21, 2023
References Cited (17)
US 8108779B1 · Rein · 2012 [cited by examiner]
US 8527660B2 · Prasad · 2013 [cited by examiner]
US 8769014B2 · Heinrich · 2014 [cited by examiner]
US 10782983B2 · Moreland · 2020 [cited by applicant]
US 20060200755A1 · Melmon · 2006 [cited by examiner]
US 20140222919A1 · Nysetvold · 2014 [cited by examiner]
US 20150120252A1 · Hepworth · 2015 [cited by examiner]
US 20150195311A1 · Lemonik · 2015 [cited by examiner]
US 20150199328A1 · Danziger · 2015 [cited by applicant]
US 20190018693A1 · Moreland · 2019 [cited by applicant]
U.S. Appl. No. 15/298,473, Final Office Action mailed Aug. 7, 2017, 21 pages. [cited by applicant]
U.S. Appl. No. 15/298,473, Non-Final Office Action mailed Dec. 21, 2017, 23 pages. [cited by applicant]
U.S. Appl. No. 15/298,473, Notice of Allowance mailed Jul. 10, 2018, 12 pages. [cited by applicant]
U.S. Appl. No. 16/133,431, First Action Interview—Office Action Summary mailed Feb. 10, 2020, 7 pages. [cited by applicant]
U.S. Appl. No. 16/133,431, First Action Interview—Pre-Interview Communication mailed Nov. 15, 2019, 4 pages. [cited by applicant]
U.S. Appl. No. 16/133,431, Notice of Allowance mailed May 22, 2020, 11 pages. [cited by applicant]
U.S. Appl. No. 16/133,431, Response filed May 11, 2020 to First Action Interview—Office Action Summary mailed Feb. 10, 2020, 10 pages. [cited by applicant]