{{roam/render: (ns toc
(:require
[clojure.string]
[roam.block :as block]
[roam.datascript :as d]
[roam.datascript.reactive :as dr]
[roam.util :as u]))
(defn ancestor-block-uids [uid]
(d/q '[:find [?puid ...]
:in $ ?cuid
:where
[?c :block/uid ?cuid]
[?c :block/parents ?p]
[?p :block/string]
[?p :block/uid ?puid]]
uid))
(defn block-html-el [uid]
(some (fn [x]
(when (clojure.string/ends-with? (.-id x) uid) x))
(.getElementsByClassName js/document "rm-block__input")))
(defn try-scroll-into-view [uid]
(when-some [el (block-html-el uid)]
(.scrollIntoView el)))
(defn scroll-to-block [uid]
(doseq [parent (ancestor-block-uids uid)]
(block/update
{:block {:uid parent :open true}}))
(when-not (try-scroll-into-view uid)
(js/setTimeout #(try-scroll-into-view uid) 300)))
(defn flatten-block [acc block]
(reduce flatten-block
(conj acc (dissoc block :block/children))
(sort-by :block/order (:block/children block))))
(defn block->table-entry [block]
[:div {:style {:margin-left (str (dec (:block/heading block)) "em")
:font-size (str (* 0.25 (- 7 (:block/heading block)))
"em")}}
[:a {:on-click #(scroll-to-block (:block/uid block))}
(u/parse (:block/string block))]])
(defn component [{uid :block-uid}]
(let [block @(dr/q '[:find (pull ?p [:block/string
:block/uid
:block/heading
:block/order
{:block/children ...}]) .
:in $ ?uid
:where
[?e :block/uid ?uid]
[?e :block/parents ?p]
[?p :node/title]]
uid)]
(into [:div]
(comp
(filter #(-> % :block/heading pos?))
(map block->table-entry))
(flatten-block [] block))))
The core concept of the ECS strategy is to reposition yourself as a Growth Agent as opposed to a traditional service provider.
The Growth Broker. You provide a service in exchange for a % of sales or profit as it relates to new business you produce with your service.
It's a simple understanding that building a bridge isn't about the bridge, it's about the connection built between two places and the lives it enriches of those it services. Likewise, whatever service you provide end results aren't the website, advertising, sales strategies, accounting, etc. that you are providing, it is the savings, the new leads, the higher sales rates they produce.
You're designing growth opportunity between two parties, usually in the form of increased sales.
You're crafting & presenting a proposal designed to persuade the two parties that the deal is indeed worth taking.
You're building out the Distribution Mechanism that both parties have agreed to, either internally or with subcontractors.
Put simply, agreeing to be paid for your results shifts the upfront risk from your client to yourself. In a very real way you are investing in your client, in essence making you a partner.
KEY: You aren't only getting paid for the work you're doing, the skills you have, or simply the results you generate... you're also getting paid (or not paid) for the RISKS you're taking.
How do you sell lemonade if you don't have lemons or a lemonade stand? Simple, you broker a deal between a lemon producer & someone with access to street traffic (distributor).
The distribution deal you broker between your [Client A] and [Client B] becomes its own sort of 'client' within your service business. It is a stand alone project which you lend your Growth Agent skills to, you've negotiated a % of profit share on both sides of the deal.
This strategy gives you 3 potential sources of income from 2 clients...
1: Income from you services as a Growth Agent from [Client A]
2: Income from you services as a Growth Agent from [Client B]
3: Income from your independently brokered distribution deal between [Client A] and [Client B]... effectively giving you a virtual [Client C].
Now that you understand the potential, the basic concepts at work, and the core concept of the ECS strategy it's time to dig into how to execute it in practical terms.