A method of operating a notes service that communicates with a variety of applications on end-user devices and allows users to create notes in any application that flow to the same or other applications, the method comprising: receiving note items produced by a plurality of software applications , wherein each of the note items comprises metadata, context data, and content representative of a note, wherein context data is indicative of a surrounding context when the note was created or edited, including for each given note item at least a document associated with the given note item; for each of the note items, storing a given note item in a note repository and updating a graph to reflect the existence of the note item and its relationship to the document based at least on the metadata, the context data, and the content for the given note item, wherein the graph is a data structure organized in terms of nodes and edges, the nodes representing the note items and other entities including documents, messages, and people, while the edges represent relationships between the note items, and wherein the graph expresses relationships between and amongst the notes themselves, but also between and amongst the notes, documents, messages, and people; receiving queries from the plurality of software applications to obtain relevant ones of the note items from the note repository, wherein each given query of the queries includes additional context data associated with an application of the plurality that sent the given query; and in a response to the queries: searching the graph for one or more note items relevant to a given query based on the additional context data included in the given query; retrieving one or more identified note items from the repository; and replying to the given query with the one or more identified note items. receiving note items produced by a plurality of software applications , wherein each of the note items comprises metadata, context data, and content representative of a note, wherein context data is indicative of a surrounding context when the note was created or edited, including for each given note item at least a document associated with the given note item; for each of the note items, storing a given note item in a note repository and updating a graph to reflect the existence of the note item and its relationship to the document based at least on the metadata, the context data, and the content for the given note item, wherein the graph is a data structure organized in terms of nodes and edges, the nodes representing the note items and other entities including documents, messages, and people, while the edges represent relationships between the note items, and wherein the graph expresses relationships between and amongst the notes themselves, but also between and amongst the notes, documents, messages, and people; receiving queries from the plurality of software applications to obtain relevant ones of the note items from the note repository, wherein each given query of the queries includes additional context data associated with an application of the plurality that sent the given query; and in a response to the queries: searching the graph for one or more note items relevant to a given query based on the additional context data included in the given query; retrieving one or more identified note items from the repository; and replying to the given query with the one or more identified note items. searching the graph for one or more note items relevant to a given query based on the additional context data included in the given query; retrieving one or more identified note items from the repository; and replying to the given query with the one or more identified note items. <EOS>