Smart sharing with queues, promises and strings

We recently defined "dumb sharing" as the collapse of a sharer's multi-dimensional output to the single-dimensional preference of a recipient. Matt's Mag7 email digest exhibits this pattern (for now...): seven things from six categories are shared every seven days via email, and recipients can either accept all or none.

In this post, we're going to look at the conceptual building blocks of the inverse: "smart sharing". This is when a sharer's multi-dimensional output is accessible by recipients in various configurations, approximating the possibilities determined by the output's inherent characteristics.

Consider these scenarios to better understand the difference between the two:

  • Scenario one: A local real estate agent shares a weekly list of new and sold properties; the recipients can only accept or refuse the entire list.

  • Scenario two: A local real estate agent shares a weekly list of new and sold properties; the recipient opts out of new property updates but elects to receive monthly summaries of sold properties.

  • Scenario three: A local real estate agent shares a weekly list of new and sold properties, including their type (apartments, houses, commercial spaces) and value; the recipient chooses to only receive updates about houses below a certain value and to receive them individually as soon as they're available.

The first scenario is an example of dumb sharing—recipients must take the entire unfiltered list or leave it. The second and third scenarios illustrate smart sharing—recipients can tailor the updates to their specific interests based on the dimensions and characteristics of the output as a whole.

Why would a person or entity want to share smartly? What's the upside? We believe there are three main advantages:

  • Smoother experience: Both sharer and recipient gain greater autonomy over their respective outputs and inputs with reduced cognitive load. The sharer isn’t burdened by constantly tailoring their output to the lowest common denominator, while the recipient can enhance the signal-to-noise ratio of the information they receive.

  • Greater longevity: Over time, it’s inevitable that a partial misalignment or complete divergence of interest between the sharer and the recipient will occur. Unlike dumb sharing, which more quickly exposes misalignments and divergences, smart sharing sustains alignment and cultivates a more resilient connection.

  • Deeper understanding: Dumb sharing limits the intelligence exchange to binary outcomes. In contrast, smart sharing generates deeper interactions and finer-grained outcomes. This enhances both agents' self-understanding and deepens the comprehension of their relationship, influencing how the agents and their relationship develop in the future.

Subset isn't exactly pioneering this smart sharing thing. In a professional context, smart sharing is available as a dedicated stack (integrated or frankenstein-like) of applications and technologies that allows one to:

  • Gather user data

  • Identify and validate segments

  • Create and distribute targeted outputs

  • Manage those campaigns and interactions across channels and platforms

  • Fold them into wider operations that achieve high value organisational outcomes

Unfortunately, such a stack is often expensive, usually excessive in comparison to requirements, and typically intensive to configure, operate and sustain. In contrast, smart sharing is instantiated in a personal context—amongst family and friends—as implicit socio-cultural norms and in-group identifiers.

Between the poles of the implicit-personal and the expensive-overkill-professional, however, is an opportunity space where dumb sharing is the norm and smart sharing is applicable but not yet accessible. Subset is aiming to change that, and underlying our understanding of dumb versus smart sharing are three conceptual building blocks: queues, promises and string matching. Like water, fire, wind and earth, we've been combining them to craft new elements. So let's provide some very quick introductions.

First up: queues.

A queue is a mathematical model of entities that come in, are processed, and go out. Queueing theory is a rich concept that touches many domains, from information packets traversing a global network to engineers being efficiently routed to jobs within a territory. This interactive study of queueing strategies from Sam Rose provides an intuitive feel for their operation. In the context of sharing, there are two queues of interest. The things that a sharer outputs and the things that a recipient elects to receive from this output.

Next up: promises.

We have a particular type of promise in mind: those from Mark Burgess' promise theory, a theoretical framework for understanding cooperative behaviour in distributed systems.

Within this framework, an entity (a machine, a human, an organisation) can make and keep promises independently. An agent's promise to perform an action or maintain a state can be fulfilled or violated, but it's made unilaterally without requiring a guarantee of fulfilment from other relevant agents. Agents have roles defining the types of promises they can make. Expectations arise from these roles and the promises associated with them.

Systems as a whole are composed of multiple autonomous agents, each capable of making promises. There is no central control, reducing single points of failure and bottlenecks, and this autonomy is what permits scale and adaptation to emerge.

Through promises, agents interact and collaborate to achieve common goals. This cooperation is based on the mutual benefits of keeping promises, rather than enforced by external authority. Trust is built over time based on the history of promise-keeping behaviour by agents. Reliable agents are those who consistently keep their promises.

In the context of sharing, there's a core agreement: the sharer offers slices from a queue of outputs that the recipient agrees to receive. How this adapts over time is something we'll get into in a later post, but for now assume that the sharer maintains that fundamental offer in perpetuity.

Finally: string matching.

Also known as pattern matching, string matching is a fundamental problem in computer science related to finding occurrences of a substring (pattern) within another string (text). These matches can be exact, approximate, derived from regular expressions and identified algorithmically. Like queueing theory, string matching is a theory and practice that touches much of contemporary society as we know it.

In the context of dumb sharing, the substring/pattern is equivalent to the string/text. The sharer writes, "The quick brown fox jumps over the lazy dog", and the only string available for the recipient to read is, "The quick brown fox jumps over the lazy dog."

Smart sharing, however, permits the recipient to access the substring/pattern space inherent in the sharer's output. If the sharer writes, "The quick brown fox jumps over the lazy dog", then smart sharing enables the recipient to read about only the "brown fox", or just the "lazy dog", or to be periodically notified of "jumps".


Queues, promises, and string matching coalesce; these are the fundamental building blocks of smart sharing. Unlike dumb sharing, which offers a singular option that obscures a richer information space, smart sharing provides cleaner, more meaningful exchanges. While smart sharing isn't new and dumb sharing isn't entirely without merit, it's time for the benefits of smart sharing to be made accessible to a much broader class of people.

This is just one part—though still a core piece—of Subset's larger mission: to make saving simple, sharing effortless, and search joyous, and do it in a way that scales.

Subset logo
Subscribe to Subset and never miss a post.