valueflows / forum.valueflo.ws

forum.valueflo.ws has moved to https://lab.allmende.io/valueflows/forum-valueflo-ws
3 stars 1 forks source link

Sensorica examples to explore REA and traditional accounting #73

Closed bhaugen closed 4 years ago

bhaugen commented 8 years ago

@TiberiusB @serapath here's one starting point that I copied from a Sensorica document: https://github.com/valueflows/valueflows/blob/master/use-cases/sensorica-custodian.md

Tibi, maybe you could fill in with more of Sensorica's details and concerns?

bhaugen commented 8 years ago

Recapturing Tibi's comment from that other thread:

This is a hot and important topic. As we opened a dialog with the Canadian Federal Government, which will soon acknowledge the existance of open communities and networks, we need to feed them with these technical issues in order to inform policy making. They will want to know about the new tendencies but also about how these new tendencies can be reconciled with the traditional methods. The later is even more important, because it will be used first, to create an environment that allows a transition to a future system, whatever that will be.

fosterlynn commented 8 years ago

@serapath this might be a good use case:

https://github.com/valueflows/valueflows/blob/master/use-cases/3d-printer.md is from Sensorica, and shows a very simple but real example of the value flows including both exchanges and processes.

serapath commented 8 years ago

Hello @fosterlynn, thx :-) I'd tried to start with your 3d printer example, because it feels more easy to start with.

Scenario - Sensorica 3D printer

The scenario feels very blurry, but in order to translate it to financial accounting, it needs more precision. I tried to make a rough summary of my current understanding below:

It's not yet journal entries and a balance sheet structure is missing. Can we add more precision? I have several questions:

fosterlynn commented 8 years ago

I'd tried to start with your 3d printer example, because it feels more easy to start with.

Cool!

it needs more precision.

It does, let's make some things up :)

Process:

Sale:

Distribution:

It's not yet journal entries and a balance sheet structure is missing. Can we add more precision? I have several questions:

  • How much was the printer? Let's say $3000.
  • How much time does Tc, Td, Ta take? Detailed above.
  • What are the agreed upon internal service rates? Let's say all work is valued at $20/hour.
  • How much money X is being paid in each of above steps that deal with money? Detailed above.
  • What are the roles of people in which context? (manager?trainer?certifier?) Generally people play multiple roles in Sensorica, probably doesn't impact the above scenario.
  • What's the process and price that Fatuma faced? Detailed above.
  • What's the relation between Kim, Ali and Sensorica? All of these people in the scenario are members (called "affiliates") of Sensorica.
fosterlynn commented 8 years ago

^ I updated the example to have Sensorica doing the selling. Trying to make it more clear and simple. (There are more complications within Sensorica, such as "exchange firms" which interface to the outside world to sell products; and CAKE, which is the non-profit custodial legal entity that handles all the assets and sales of R&D services to universities, etc. Would be interesting and possibly useful to put these in at some point, but let's keep to this in terms of accounting terms. Tibi can elaborate later.)

serapath commented 8 years ago

Wonderful :-)

I'll try to prepare a translation into normal accounting language today.

(There are more complications within Sensorica, such as "exchange firms" which interface to the outside world to sell products; and CAKE, which is the non-profit custodial legal entity that handles all the assets and sales of R&D services to universities, etc. Would be interesting and possibly useful to put these in at some point, but let's keep to this in terms of accounting terms. Tibi can elaborate later.)

I'd love to learn more about it. Maybe the best is i'll first post something and then I'd like to add whatever the above means to it :-)

One question:

fosterlynn commented 8 years ago

I'll try to prepare a translation into normal accounting language today.

And I can do an REA treatment (not sure if today but soon).

Are members employees or shareholders (co-owners) or creditors or something else?

@TiberiusB can help with this explanation. In the meantime: Sensorica is not a formal organization (it has a legal standing in Canada, but it does not interface with the state directly), so in the above scenario, having Sensorica "sell" something is not accurate. Sensorica is a loose network, let's use a definition like members are people who contribute to Sensorica projects for potential income.

(Trying to focus on accounting as a useful "counting" rather than legal requirements. If we need to go legal, Tibi will need to help.)

serapath commented 8 years ago

Ok. for accounting as a general method - the legal status does not matter. It just tries to write down everything that happens in order to keep a history that can be used for many purposes.

When doing the accounting for the sensorica example, I was just wondering - because there are many ways how to book certain "business events" - how should those people be treated.

You say they invest into the printer fund, but that means, they might need to pay taxes - or if it's company internal -

It's just that in the context of accounting and law i would like to try to distinguish between fact and fiction. In context of certain business relationships and activity, there is the culture and how people treat each other and what values they live which is what actually counts - but then there is also the legal structure of who - if the worst comes to the worst - is actually the legal authority to make decisions about ownership, money, hire & fire, etc...

In order to protect people and make whatever values and culture people live in a business context a legal reality that people can rely on even if the worst comes to the worst - i'd like to check possible "alternative systems" for how they legally work :-)

bhaugen commented 8 years ago

If Sensorica is not a legal entity - can it even buy a 3d printer from a supplier?

That's why Sensorica uses legal entities to do business with outside agents. The custodian scenario I described in the original post in this issue is an example.

More to come in a couple of hours...

serapath commented 8 years ago

Just wondering what would be the ideal structure - because having a story about a "made up" Sensorica structure which covers the real structure from the eyes of participants can lead to a "rude awakening" if the worst comes to the worst - especially if certain people counted and invested into the Sensorica story but at a later point in their life lose a lot because they do not have any legal say in the matter...

bhaugen commented 8 years ago

I'm getting you as much of the actual data as I can. But Lynn and I are not part of the core of the network, so we will need to get some Sensoricans to participate here for the next stage. (Which we will try to get.)

fosterlynn commented 8 years ago

@serapath I can try to do a version more like Sensorica would do it, although as @bhaugen points out, we may be too out of touch. Will try to do that later today, and ping Tibi to verify.

Just to note, that is not an "ideal" structure, it is just what they feel they have to do to balance their principles with the realities of the legal system. But I do understand your desire to deal with some semblance of reality in a use case. :)

fosterlynn commented 8 years ago

Here is a version with an exchange firm (Exchange Inc.) and the custodial non-profit (CAKE) involved. The exchange firm is responsible for handling sales. I believe the exchange firm is a member of Sensorica of some kind. The custodial non-profit "owns" (has custody of?) the equipment that is part of the Sensorica commons, handles insurance, warranties, etc.

People who receive distributions are responsible for their own taxes and reporting. The exchange firm and custodial non-profit are responsible for their own taxes and reporting.

@TiberiusB please correct as needed!

Pre-process:

Process 1:

Process 2:

Sale:

Distribution:

fosterlynn commented 8 years ago

^ updated the above scenario to break out the design process explicitly so the design is put into inventory

bhaugen commented 8 years ago

@serapath here's some of the actual data:

serapath commented 8 years ago

Thx - I'm still struggling to post the first draft. There are a lot of implicit relations that are not easy to write down.

If Jim is a member of Sensorica (which is a virtual contstruct that legally is still CAKE) and he creates a 3D printed part, how can all of a sudden Exchange Inc. sell it to a Random Customer?

serapath commented 8 years ago

@bhaugen

bhaugen commented 8 years ago

Who receives in case of for example 500$ from Marisa?

http://nrp.sensorica.co/accounting/exchange/0/391/

What did Marisa do?

In this case, she contributed $500 to the virtual account for buying a professional-scale 3d printer.

Is she a customer?

http://nrp.sensorica.co/accounting/agent/279/

Who prints and who buys and/or pays?

In Lynn's example above, Jim prints, Random Customer buys and pays Exchange Inc.

Here is the real exchange firm:

bdan

http://nrp.sensorica.co/accounting/agent/244/

As far as I can tell, very few of the actual uses of the 3d printer are logged in NRP, and those that are, are incomplete. I think they are mostly recorded in spreadsheets, which is a complication of Sensorica's actual "accounting", such as it is.

A lot of Sensorica's other business is recorded more completely in NRP, however. For example: http://nrp.sensorica.co/accounting/contributions/160/

bhaugen commented 8 years ago

P.S. you can probably by now get a feel for the problem Sensorica is facing as they try to make sense of themselves to government agencies etc.

Francois Bergeron used to know how to do that for them, but unfortunately he left in a split.

This is not an REA problem, by the way. REA wants you to record all of your economic events in the same "system of record". If that were the case, financial reports could be generated. But somebody would still need to design something like a chart of accounts to shoot for. Accounting is an interpretation of events. The last time we did this, for the timber project that was our first REA operational system, we generated the financial reports automatically, but they were a lot simpler than Sensorica. I am pretty sure Sensorica will need a designed chart of accounts.

fosterlynn commented 8 years ago

@serapath yeah, it is a bit confusing. A lot of this relies on trust among the individuals. And open books accountability, although they have some work to do there as you can tell. But basically, people figure they are not going to get ripped off by each other. And they are trying to build something different and positive. It is experimental.

I think for the sake of this example, you can just consider the exchange firm to be another member of Sensorica, with a specific role. They do a job, they get a cut.

You could consider CAKE to be the "enterprise" in a standard accounting sense. The bank account that holds all the virtual accounts (like the one earmarked for the 3D printer purchase) is CAKE's account. So you could run everything through CAKE to get it all to work in a connected way. Like the payment from the sale could initially go into CAKE's account, and get distributed from there. They may not do it that way when using an exchange firm, but in my opinion they should.

stevebosserman commented 8 years ago

While the Sensorica 3d printer maybe a working example to better understand REA applications to flows according to "process," "sale," "distribution," etc., the real value in this exercise comes in making those applications repeatable and learning where to tailor the flows to improve efficiency without compromising adaptability. I'm struck by the amount of TIME @bhaugen, @fosterlynn, and @serapath continue to INVEST to generate this value for the "Sensorica commons." Where is your investment recorded so the increase in value of the commons can be appropriately acknowledged? And if this value is applied by other Sensoricans for compensation, how do you investors receive a fair share? And maybe these questions are outside the scope of this particular exercise, but perhaps they can get a hearing in another thread or forum later on.

bhaugen commented 8 years ago

@stevebosserman those are excellent questions. Lynn and I are doing this for Value Flows, which is our main focus these days. If Sensorica is going to get anything out of it, they will need to participate. We have pinged them a few different ways and will see what happens. If they get engaged, I will mostly pull back and let them take it from here.

But if @serapath does some serious accounting work for Sensorica here, yeah, he should be entitled to some compensation from Sensorica, which I am sure they will handle according to value network rules. Likewise if we do any more software development for them, we will log our time.

But we are trying to work our way out of coding on NRP and working on getting other people to take it over. We do see some people stepping up to the challenge, especially in this fork.

fosterlynn commented 8 years ago

@stevebosserman hey, thanks for thinking about it, really! :blush:

serapath commented 8 years ago

@bhaugen

I'm thinking of Exchange Inc. now as some kind of ebay, thus Sensorica can offer a 3D model and if a customer buys, the Exchange Inc. gets an affiliation fee or something in this sense.


@fosterlynn

exactly, that's what i started with. It's all about CAKE and Sensorica is just a made up story which doesnt matter at all if the worst comes to the worst - because the lawyers and courts will only recognize CAKE. But Sensorica and all this matters in CAKE internally, thus how members share what comes from their activity within CAKE and "sub projects"


@stevebosserman

sry :-) in my eyes - our economic systems are simply not working and broken beyond repair. I and virtually everyone I know is investing their time regardless of any recordings or payments to build alternatives - because if you wait or spend time to think about how this is recorded, you wont move anywhere. The mechanisms where such a thing might become possible in the future simply do not exist in our present.

Otherwise - it probably goes under "entrepreneurial risk" :P Maybe in the future we can all have "donation" buttons attached to some kind of virtual profile where people can donate if they like the activity :P

The process of "pathfinding" or trying to be visionary and break that down into something tangible - is what entrepreneurs do, but it's also what crazy people do :-) ...for those who are not visionaries it's really hard to decide whether an activity is creating a vision or it's just crazy... ...so it's really hard to decide how to pay for this without attracting "bullshitters" who are just in the game to get money for blabla

stevebosserman commented 8 years ago

No problem, @fosterlynn and @bhaugen! And thanks, too, @serapath for your timely comments. Several members of our local time bank are starting a couple of initiatives that would be well-suited for an NRP "work breakdown structure" to organize tasks and an REA accounting system to keep score. In the bigger picture, it is my opinion that the time bank could begin to function as a value network, of sorts, with these types of initiatives. Such "pathfinding" could lead to a change in the core organizing principles for the time bank. Since time, not money, constitutes the medium of exchange among time bank members, that may make them / us more entrepreneurial than crazy ;-) Let's see how it goes!

fosterlynn commented 8 years ago

@stevebosserman interesting. Without getting too off topic, let's see where your time bank stuff leads as it gets going! ValueFlows definitely needs to support time bank and all types of mutual credit, although I am confident it will. Maybe we can hook you in to provide some VF use cases at some point. :smile:

The process of "pathfinding" or trying to be visionary and break that down into something tangible - is what entrepreneurs do, but it's also what crazy people do :-) ...for those who are not visionaries it's really hard to decide whether an activity is creating a vision or it's just crazy... ...so it's really hard to decide how to pay for this without attracting "bullshitters" who are just in the game to get money for blabla

That is our experience too..... :disappointed: .... maybe this process we are going thru now is to find out if each other is crazy..... so far I am encouraged..... :smile:

serapath commented 8 years ago

sure :-) no rest for the wicked ;-)

So here i have another version of the story, not perfectly formatted yet, but before i really put it into accounting terms, i'd like to make sure i get the story right and with all the possible details and persons involved, so here we go...

Scenario - Sensorica 3D printer

Description in english

See: https://github.com/valueflows/valueflows/blob/master/use-cases/3d-printer.md

Economic Participants
Existing Contract Relationships
Pre-Process
  1. Kim, Ali & Fatuma are members of Sensorica, thus CAKE.
  2. They invest each 1000$ from their bank account at Royal Bank of Canada into a printer fund offered by Sensorica, thus CAKE.
  3. CAKE/Sensorica buys/orders a 1x 3D printer from [???] for 3000$
  4. CAKE/Sensorica receives a printer invoice from [???] for 3000$
  5. CAKE/Sensorica pays the debt/invoice/3Dprinter/$ using the printer fund.
  6. CAKE/Sensorica receives the 1x 3D printer from [???]
Process 1
  1. Daniel is member of Sensorica, thus CAKE.
  2. Daniel buys/invests 1000g photopolymer from [???] for 30$ and pays the invoice from his bank account at Royal Bank of Canada.
  3. photopolymer is received at lab
  4. ???
  5. Kim works 3h into Sensorica accounting for Sensorica, thus CAKE.
  6. Daniel works 20h to design a 3D model/blueprint for Sensorica, thus CAKE.
Process 2
  1. Jim is member of Sensorica, thus CAKE.
  2. Jim seems to act as an agent - he can use the printer, but needs to pay in case he sells (TERMS OF USE)
  3. Jim invests 2h to create a 3D printed part by using the 3D printer, 1000g photopolymer and Sensoricas 3D model
  4. [Jim] cites the [Design for 3D printed part - give 20% of payment] for [process: 3D print operation & wish delivery]
Sale
  1. CAKE/Sensorica contracts Exchange Inc. to offer the 3D printed part for 100$ through Exchange Inc. marketplace
  2. Random Customer buys 3D printed part for 100$ on Exchange Inc. marketplace
  3. Random Customer pays 100$ through his bank account at Royal bank of Canada to CAKE's bank account at Royal bank of Canada
  4. Exchange Inc. invoices CAKE 0.01*100$ for Sale of 3D printed part
  5. CAKE ships ...
  6. CAKE pays ...
Distribution
Questions
  1. Is the following story correct? Anything missing or unclear?
  2. What triggered Process 1?
  3. Does Daniel sell the 1000g photopolymer to Sensorica or does he buy it in the name of Sensorica and Sensorica pays for it through having access to one of Sensoricas, thus CAKE's bank accounts?
  4. What triggered Process 2?
  5. Does Jim really invest time or does he just work?
    • In theory Jim could make a profit of 8h per day and invest those into stuff
    • At the end of each day he could make a loss of all non-invested hours
    • ...it's possible to do the accounting for that if it makes really sense to go into that level of detail...
fosterlynn commented 8 years ago
  • Is the following story correct? Anything missing or unclear?

I'm going to make some corrections in the next comment/post, see if they make sense.

  • What triggered Process 1?

Daniel bought polymer because he wants a bunch of it onhand for Sensorica use, in particular his. He made the design either because it was fun or because he thought someone might use it to make and sell something.

  • Does Daniel sell the 1000g photopolymer to Sensorica or does he buy it in the name of Sensorica and Sensorica pays for it through having access to one of Sensoricas, thus CAKE's bank accounts?

Daniel buys it in the name of Sensorica and pays out of his pocket because Sensorica doesn't have cash on hand. That makes it a financial contribution from him to Sensorica, for which he is eligible to get paid back, or often paid back plus some for the risk. Or he could do it as a loan, but usually not.

  • What triggered Process 2?

Jim felt like making the part, or Jim figured if he made the part he could sell it. We could include an order for the part, but we didn't. If you would like to, we can include it. But in reality, lots of stuff gets made without an order in Sensorica, people are playing around, doing R&D, etc. If we include the order, then that would trigger a plan for both processes 1 and 2 (design and making).

  • Does Jim really invest time or does he just work?
    • In theory Jim could make a profit of 8h per day and invest those into stuff
    • At the end of each day he could make a loss of all non-invested hours
    • ...it's possible to do the accounting for that if it makes really sense to go into that level of detail...

I'm not sure the difference in Sensorica. He just works, but work is sort of an investment in that nobody is getting paid by the hour, they are just getting paid if money comes in for something they worked on. "Contributory accounting." So it feels more like an investment in some ways. Don't know if that helps. He does log his work hours. I don't think your bullets are worth accounting for because they don't account in that way.

fosterlynn commented 8 years ago

I'm going to make some corrections in the next comment/post, see if they make sense.

Economic Participants
Existing Contract Relationships

(I don't know if these are contracts, but maybe. Again pinging @TiberiusB. But let's just account for the activity, not worrying about contracts. Sensorica has economic governance in the form of "value equations" that say how people get paid when income comes in.)

Pre-Process
  1. Kim, Ali & Fatuma are members of Sensorica, thus CAKE.
  2. They invest each 1000$ from their bank account at Royal Bank of Canada into a printer fund offered by Sensorica, thus CAKE.
  3. CAKE/Sensorica buys/orders a 1x 3D printer from [ORD] for 3000$
  4. CAKE/Sensorica receives a printer invoice from [ORD] for 3000$
  5. CAKE/Sensorica pays the debt/invoice/3Dprinter/$ using the printer fund.
  6. CAKE/Sensorica receives the 1x 3D printer from [ORD]
  7. Daniel is member of Sensorica, thus CAKE.
  8. Daniel buys/invests 1000g photopolymer from [PP Inc.] for 30$ and pays the invoice from his bank account at Royal Bank of Canada.
  9. photopolymer is received at lab
  10. ???
  11. Kim works 3h into Sensorica accounting for Sensorica, thus CAKE.
Process 1

(I moved several things back into pre-process, since they happened without any knowledge of Jim making the part usually.)

Process 2
  1. Jim is member of Sensorica, thus CAKE.
  2. Jim seems to act as an agent - he can use the printer, but needs to pay in case he sells (TERMS OF USE)
  3. Jim invests 2h to create a 3D printed part by using the 3D printer, 100g photopolymer and Sensoricas 3D model (Jim didn't use all of the photopolymer)
  4. [Jim] cites the [Design for 3D printed part - give 20% of payment] for [process: 3D print operation & wish delivery]
Sale
  1. CAKE/Sensorica contracts Exchange Inc. to offer the 3D printed part for 100$ through Exchange Inc. marketplace
  2. Random Customer buys 3D printed part for 100$ on Exchange Inc. marketplace
  3. Random Customer pays 100$ through his bank account at Royal bank of Canada to CAKE's bank account at Royal bank of Canada
  4. Exchange Inc. invoices CAKE 0.01*100$ for Sale of 3D printed part
  5. CAKE ships ...
  6. CAKE pays ... (The last three happen through a distribution process, not an invoicing process. Let's just consider Exchange Inc. as a member just like Jim or Daniel who will get a piece of the pie. I would put them back under Distribution.)
Distribution
fosterlynn commented 8 years ago

OK, here is an initial draft of an REA/VF treatment of this use case ( @serapath don't worry about the prefixes, that is a convention that the team is using so we know where the vocab term came from in our current state of agreement).

Note all of these economic events are recorded with the context of Sensorica (vf:contextAgent = Sensorica). When the custodial accounting is done for CAKE, some but not all of these are needed.

I am sure there will be some discussion of the fudging of who owns or accounts for something at any particular stage. :)

vf:Agents
vf:Relationships (they are also bi-directional)

(vf:subject vf:relationship vf:object)

rea:EconomicResources (inventory starting state)

(I'm considering the individuals' bank accounts out of scope of the network for accounting purposes, this is the context of Sensorica

Pre-Process rea:EconomicEvents

(leaving out orders / commitments, considering this cash accounting method) (the first set if vf:Transfers, the last is nrp:NonProductionLogging)

(vf:Agent(from) nrp:TransferType nrp:EventType vf:Quantity vf:Agent(to) rea:EconomicResource(to increment or decrement) )

(vf:Agent(from) nrp:EventType vf:Quantity vf:Agent(to) nrp:Description)

rea:EconomicResources (changes to inventory state after cash contributions)
rea:EconomicResources (changes to inventory state after all of pre-process)
Process 1 rea:EconomicEvents

(vf:Agent(from) nrp:EventType vf:Quantity rea:EconomicResource(to increment or decrement) vf:Process)

rea:EconomicResources (changes to inventory state after Process 1)
Process 2 rea:EconomicEvents

(vf:Agent(from) nrp:EventType vf:Quantity rea:EconomicResource(to increment or decrement) vf:Process)

rea:EconomicResources (changes to inventory state after Process 2)
Sale rea:EconomicEvents

(vf:Agent(from) nrp:TransferType nrp:EventType vf:Quantity vf:Agent(to) rea:EconomicResource(to increment or decrement) )

Distribution 1 rea:EconomicEvents

(vf:Agent(from) nrp:TransferType nrp:EventType vf:Quantity rea:EconomicResource(to increment or decrement) )

Distribution 2 rea:EconomicEvents

(vf:Agent(from) nrp:TransferType nrp:EventType vf:Quantity rea:EconomicResource(to increment or decrement) )

rea:EconomicResources (changes to inventory state after all of distribution)
Payouts rea:EconomicEvents

(vf:Agent(to) nrp:TransferType nrp:EventType vf:Quantity rea:EconomicResource(to increment or decrement) )

rea:EconomicResources (changes to inventory state after payouts)

(Aargh, that was torturous, @serapath may your treatment go well! :smile: )

fosterlynn commented 8 years ago

^ [edited to include the payouts, probably need them to complete the CAKE accounting]

fosterlynn commented 8 years ago

@serapath I have some thoughts about this exercise. I think we are mixing two issues - one is the question of how a group like Sensorica can best do their accounting, when they want to maintain different legal entities to meet their legal requirements but also want their main group to be a much looser open network. The other is to look at how REA accounting works vs pre-REA standard accounting.

The legal complications of Sensorica make this example more painful in terms of just seeing how REA works, which was the initial objective (I think).

I propose we scale this example back to something where the main network is formally registered, let's say as a cooperative, and get rid of the CAKE / Exchange Firm baggage. We could call it '3D Coop' or something like that. And they could still use the contributory accounting scheme (although that is independent of the REA question too).

If we want to also look into Sensorica's situation to see if we can be of help there, maybe that could be a separate issue?

What do you think?

serapath commented 8 years ago

Hm, from a first glance, the REA accounting looks interesting. I'll skip more in-depth reading for now. Thx. for all the corrections. Regarding people's bank (i just made up they all have an account at royal bank of canada), i did that, because i wanted to really account for every change that happens based on activity in that business scenario from a macro economic perspective. A payment includes changes to the balance sheet of the buyers and sellers bank accounts.

I'm still a bit confused about a few bits and pieces :-) ... Some more clarifying questions

fosterlynn commented 8 years ago

Regarding people's bank (i just made up they all have an account at royal bank of canada), i did that, because i wanted to really account for every change that happens based on activity in that business scenario from a macro economic perspective. A payment includes changes to the balance sheet of the buyers and sellers bank accounts.

I can see that makes sense. Let's put that back into the scenario. (I'll do that once we decide where we are going with it.)

How do "members" get paid by Sensorica and/or CAKE? Is it dividends or is it salary or do they invoice Sensorica and/or CAKE? (in the latter case they would need some form of self employment status and a tax number, right?)

People are not employees, but I don't know how they handle it legally. And I don't know the Canadian laws, although I'm familiar in the US from having done a lot of contracting.

If there will be revenue directly or indirectly connected to that investment, they get paid back, but if not, will they face a loss?

Yes. Lots of people have put in lots of time and money over the years, and the chances of ever getting paid are extremely low for many of them.

Can Jim just print a part and temporary use it for his own benefit or for a fun experiment using up Daniels investment - "depriving" him from the chance that revenue will come from it?

Yes, all the hardware designs are open source, anyone can do that, in or out of Sensorica. Just like those of us who write open source software. :) On the other hand, there is a complicated governance doc about the printer, and something has to be paid there, even if just the maintenance fee of $1.50/hour (not included in the scenario) and the polymer.

serapath commented 8 years ago

I somehow got the feeling that CAKE and all this happens in Canada - if it's USA based, sure, why not :P Don't know why I imagined it to be in Canada. So i maybe should switch RBC to Bank of America or something :-)

I guess the "complicated governance doc" around the printer would be important, but for now it can maybe be skipped even though that creates a situation that is very inviting for everyone who wants to take advantage of people's investments.

It would be very nice to figure out the legal relation between "members" and "Sensorica/CAKE", because this is always what matters when the worst comes to the worst and it's also pretty difficult to do the accounting if things are not clear. (A description of how people imagine the relationship to be - regarding their rights and the rights of the organization - the legal relationship could be derived i guess)

So if people/members are not "self employed" they might not have the right to invoice Sensorica/CAKE to get out money. So maybe they cound as employees or they cound as shareholders receiving dividends (maybe the latter is the case)

fosterlynn commented 8 years ago

Ha, guess I wasn't too clear. Yes, it is all in Canada!

stevebosserman commented 8 years ago

@serapath

In my experience last year with the Sensorica team, the lack of clarity about what constitutes an investment in the Sensorica commons and what value that contribution has in monetary terms when applied to prospective projects in the portfolio can be very troublesome. This is especially the case when there is a cash flow problem in Montreal and an infusion of cash is needed to keep the doors open. At that point, contributions to the commons don't matter as much as how to extract (extort) payment from "members" for their use of what's in the commons. If this isn't addressed sooner than later, your admonishment about what could go wrong will, indeed, do just that...

On Wed, Jun 29, 2016 at 12:50 PM, Alexander Praetorius < notifications@github.com> wrote:

I guess the "complicated governance doc" around the printer would be important, but for now it can maybe be skipped even though that creates a situation that is very inviting for everyone who wants to take advantage of people's investments.

  • It would be very nice to figure out the legal relation between "members" and "Sensorica/CAKE", because this is always what matters when the worst comes to the worst and it's also pretty difficult to do the accounting if things are not clear.
    • A description of how people imagine the relationship to be - regarding their rights and the rights of the organization - the legal relationship could be derived i guess
fosterlynn commented 8 years ago

@serapath You can dig around on the Sensorica website if you are curious about all those details. http://www.sensorica.co/

bhaugen commented 8 years ago

I am uncomfortable criticizing other organizations' motives in value flows issue discussions. I think we should tread lightly, or else we will get into arguments with those other organizations, and they will not want to participate in our discussions of their use cases.

So, for example, in the Sensorica use cases, I think we should try to figure out what things mean (like, what kind of claims arise from contributions, and how might those relate to commonly understood terms), but not question their motives or stated intentions.

I like criticism, but think it should be discussed between the parties involved, and value flows in this case is a bystander.

Ok?

fosterlynn commented 8 years ago

Yes. Lots of people have put in lots of time and money over the years, and the chances of ever getting paid are extremely low for many of them.

Adding on to this, many if not all affiliates of Sensorica are in it for more than the money. They are conducting an experiment to try a new way of working together and supporting themselves as a network. All such experiments have value IMO. "Next economy" experiments if you will. I want to make sure ValueFlows to support all current economic activities, and it will; but mostly I'm personally interested in facilitating the "next economy".

bhaugen commented 8 years ago

@serapath buncha great questions upthread. I'll try this one.

How do "members" get paid by Sensorica and/or CAKE? Is it dividends or is it salary or do they invoice Sensorica and/or CAKE? (in the latter case they would need some form of self employment status and a tax number, right?)

This slide deck about value equations might help.

Each project can have its own value equation, defined by the project members, which determines how income (if any) gets allocated. You can see from slide 4 that contributions can give rise to claims defined by the value equation. They might be:

The closest analogy I can think of is a US LLC (limited liability company), in which members have capital accounts that can be increased by investments of money or sweat, and where income is distributed according to the ratios of the capital accounts.

stevebosserman commented 8 years ago

@bhaugen First, I apologize if my previous comment came across as critical of SENSORICA's motives and certainly any member. That was not my intent. However, I don't want to lose sight of the issues that arise for members when trying to maintain localized brick and mortar facilities that incur traditional economy expenses yet contributing to a globally distributed virtual network that experiments with "next economy" principles and behaviors. I'm not suggesting there are irreconcilable differences between the two, but they do warrant careful attention about how to manage their interfaces so that members feel included, contributory, and valued while responding / adapting to ongoing changes in conditions and circumstances. I don't have answers, but I'm in it to find out ways that work as we move forward. Thanks in advance for your patience...

serapath commented 8 years ago

@all btw, thx for all this input and explanations, I'm really thankful for all of this :-) I will write the accounting in executable javascript code, but try to make it as readable as possible. I feel once it works as executable code, there is little room for misunderstandings.

I would then also be interested to translate the example written by @fosterlynn into javascript and then maybe there can be "converters" who convert one representation into the other, if possible... :-)


@fosterlynn do you know how much money people have to invest into CAKE or Sensorica to become members (i assume it's a coop). If members are not self-employed and are also not employed, so they do not have salary claims against CAKE or Sensorica, they would probably use their "shares" (thus membership deposit) to invest into a printer fund or maybe use their private money to buy more of CAKEs or Sensoricas "coop shares" which are then through a contract somehow connected to the "printer fund" in regard to any profit/loss that will happen?


@bhaugen thx, i'll check it. So from what you write, i understand, that value equations equals contract, where contract is more general and value equations are probably a specific kind of contract. In addition value networks means self employed people working together using the rules of shareholding and taking on the roles of entrepreneur and investor instead of doing traditional `employment.

Question


@bhaugen Below are further comments on the links you provided

What I really like is the emphasis on transparency and having everything open for everyone to see. That's a quality that is non-classical and I believe vital in order to "save the planet" :-)

bhaugen commented 8 years ago

that value equations equals contract, where contract is more general and value equations are probably a specific kind of contract.

Yes. Exactly.

What is the difference between agent (real or legal person) and network and project is a network or project some kind of "virtual agent"?

Yes. Agents can be people or groups, if the group makes decisions as a group via some agreement mechanism.

What is a value flow?

It is the same as a resource flow, but not very precisely defined yet. Most simply, it might be a resource flowing between two agents, or between and agent and a process or an exchange. But value flows continue, from one process to another, from one agent to another, from one transfer to another agent to another transfer. And then other resources flow in reverse, in reciprocal relationships to the flows going forward.

...or what is the difference between "contribution to project", "contribution to organization" and "contribution to an order or shipment"? (...and why does it matter)

It only has to do with how the work is organized, and how the income arrived. If the income arrived as (for example) a payment for a shipment, then the contributions to that shipment, going back through the chains of inputs, are all eligible for a share of the income, according to the value equation. Which might also include shares for administrative work, etc. Or if the income came directly to an organization, as a grant or sponsorship, then it's contributions to the organization, however they want to organize it.

We tried to accommodate a lot of variations on value equations that different organizations we knew wanted. I'm sure other variations are possible. We do know some people in Michigan who are looking at value equations as a part of LLC agreements.

I think even in a world where everyone gets what they need... (based on their needs => who or what will be arrogant enough to play god and decide what that means anyway?) ...even in such a world - it's still worth doing the accounting for everything.

We've had several discussions about that. I don't know how much we need to account for. I am pretty sure that reciprocity will still be important, but it could work differently. My current example is a community bus service. If the riders don't feel some reciprocal responsibility for the bus service, the bus service will cease. Might not be paying for rides. Might be maintaining the bus, or getting fuel, or feeding the bus workers, or whatever. But it will be necessary or things will not work well.

bhaugen commented 8 years ago

slide6+ feels complicated. A lot of new words get introduced, but in my head it all feels like splitting revenue based on contracts

The slide about the buckets and rules? That's the minimum structure it took to handle all the variations people wanted.

serapath commented 8 years ago

ok :-)

bhaugen commented 8 years ago

P.S. if you want a lot more detail, some of it is in this set of notes. Might be more than you want to know.

Or if you are a glutton for punishment I can walk you through the code, or at least the regression tests. They were a bear.

serapath commented 8 years ago

I have to say it get's quite tricky to do the normal accounting once Jim gets entrepreneurial and creates a 3D printed part from Daniels blueprint, using some of the photopolymer and using the 3D printer financed by several others. This is the first time, that dependencies are introduced which get resolved in the future and until then the exact value cannot be known. It seems to call for contracts that specify dependencies. I'm not sure yet how to express this in an easy-to-read way :-) I hope in the end something useful will come from it.

I have to say, the exercise gives me an interesting perspective on what REA or valueflows might be good for :-) It's already now, that I feel the accounting should be generated from the contracts which are probably all value equations.

I'll post the code soon - just wanted to give you guys an update

serapath commented 8 years ago

@fosterlynn I also took a first look at your initial draft for REA/VF statement. It seems it follows a similar pattern to what I'm doing, just that I'm updating a global economy balance sheet and that I'm currently struggeling with some bits and pieces that I see addressed in your draft, even though your draft still feels informal.

At least I can see that the traditional accounting is probably lacking and there needs to be some kind of "contract chaining" that can start updating accounts once a payment comes in.

serapath commented 8 years ago

Ok, here comes the first draft. It probably contains a lot mistakes. I am not happy with the manual setting up of journal entries and i think it made me understand why there is such a thing as value equations which are contracts that ideally generate the accounting. The contracts idea probably needs some reworking, so that it's both: easily readable and automatically inserting certain sets of journal entries once triggered. I'm also not yet sure how to set them up in a way, so that certain journal entries will trigger them automatically :-)

I would then soon make the stuff below into a markdown file in it's own repository and then work on it by doing "pull requests" and discussions of them :-)

I'd love to improve this. At least it's executable, so if you want to see it at work, check out:


Otherwise, here you go:

Scenario - Sensorica 3D printer

Description in english

See: https://github.com/valueflows/valueflows/blob/master/use-cases/3d-printer.md

Economic Participants
Contract Relationships
Pre-Process
  1. Ali invests Sensorica shares worth 500$ into Sensoricas 3d printer fund
  2. Kim invests Sensorica shares worth 1000$ into Sensoricas 3d printer fund
  3. Fatuma invests 1500$ from her bank account at Royal Bank of Canada into a Sensorica printer fund
  4. Sensorica uses printerfund to order a 3D printer for 3000$ from ORD
  5. Sensorica pays the invoice from it's bank account at Royal Bank of Canada
  6. Sensorica receives 3D printer from ORD, who paid 20$ to UPS for shipping
    • Daniel invests 30$ to order 1000g photopolymer from PP Inc. via Sensorica
    • Daniel buys 1000g photopolymer for 30$ from PP Inc. to ship it to Sensorica
    • Daniel pays the invoice from his bank account at Royal Bank of Canada
    • Sensorica receives 1000g photopolymer at it's lab
    • Kim works 3h into Sensorica accounting for Sensorica
Process 1
  1. Daniel works 20h to design a 3D model/blueprint for Sensorica
Process 2
  1. Jim invests 2h to create a 3D printed part by using the 3D printer, 100g/1000g photopolymer and Sensoricas 3D model
Sale
  1. Sensorica offers the 3D printed part for 100$ through Exchange Inc. marketplace
  2. Random Customer buys 3D printed part for 100$ on Exchange Inc. marketplace
  3. Random Customer pays 100$ through his bank account at Royal bank of Canada to CAKE's bank account at Royal bank of Canada
  4. CAKE ships 3D printed part to Random Customer for 5$ via UPS
Distribution
  1. Exchange Inc. invoices CAKE 0.01*100$ for Sale of 3D printed part
  2. Sensorica receives $5 (5%) for general network expenses, e.g. UPS shipping.
  3. Daniel receives $3 for Photopolymer (based on the cost per gram)
  4. Daniel receives $20 for Design for 3D printed part (20% of selling price)
  5. Ali receives $5 for PrinterFund (printer gets paid at $15/hour, gets split among contributors)
  6. Kim receives $10 for PrinterFund
  7. Kim receives $1 for MonthlySensoricaPrinterFundAccounting (based on some rule, let's say 1% of sale until reaching $20/hour)
  8. Fatuma receives $15 for PrinterFund
  9. Jim receives $40 for PrinterOperation his work and initiative for the sale (the rest)

Description in Financial Accounting

/******************************************************************************
  HELPER
******************************************************************************/
var apply=J=>J.forEach(b=>b.forEach(e=>e[0][e[1]]?e[0][e[1]]+=e[2]:e[0][e[1]]=e[2]))
var log=E=>console.log(E)
/******************************************************************************
  "VALUE EQUATIONS"
******************************************************************************/
CONTRACT = {
  purchaseOrder: ({seller, buyer, receiver=buyer, price, amount=1, subject, dependencies=[]}={}) => ({
    shippingRequest: `${seller} ships ${amount} ${subject} to ${buyer}`,
    invoice: `${buyer} pays ${price}$ to ${seller}`
  }),
  membership: ({name, x}={}) => `
    ${name} is member of Sensorica starting with a "capital account of" ${x}.
    ${name} can work on authorized tasks and get paid at a task specific rate.
    ${name} can fill up a "capital account" through contributions by acting as independent micro investors (investing money into a Sensorica cause) and/or micro entrepreneurs (=investing time into a Sensorica cause).
    ${name} will receives dividends based on revenue directly or indirectly caused by such a cause. Contributions and the distribution of revenue is subject to Sensorica "contribution contracts" (=value equations) members can join by investing time/money into causes.
    They can be of type: 'debt-like', 'equity-like', 'one-time'
  `,
  work: ({name, x, activity, rate = 20}={}) => `
    ${name} works for ${x} hours on ${activity} for ${x*rate} $ by CAKE.
  `,
  affiliate: ({name, service, x, rate = 0.01, dependencies = []}={}) => `
    Exchange Inc. offers ${service} to ${name} to sell for ${x} taking 0.01 in case of success.
  `,
  // Investment Contract (= value equation)
  // => defined "democratically" by Sensorica project members
  // TYPE: debt-like
  investment: ({name, x, subject, amount=1, rate = 1.2}={}) => `
    ${name} invested ${x}$ into a Sensorica project for ${subject} and will
    receive dividends from it's commercial use until the ${subject} is used up or
    the received income (=Return On Invest) reaches ${x*rate}, after which further usage will become part of the Sensorica commons.

    // (printer gets paid at $15/hour, gets split among contributors)
  `,
  // Entrepreneursip Contract (= value equation)
  // => defined "democratically" by Sensorica project members
  // TYPE: debt-like
  entrepreneurship: ({name, x, subject, rate = 20, dependencies = []}={}) => `
    ${name} invested ${x}h into a Sensorica project for ${subject} and will
    receive dividends from it's commercial use until the ${subject} is used up or
    the received income (=Return On Invest) reaches ${x*rate}, after which further usage will become part of the Sensorica commons.
    ${dependencies.length ?
      `20% of Potential payment also needs to be distributed to:
        * ${dependencies.join('\n * ')}}
      ` : ''
    }
  `
}
/******************************************************************************
  BALANCE SHEETS
    * assets: // contains a priced inventory
    * capital: // contains liabilities, equity and other capital positions
    * off: // Off balance sheet positions, such as contracts
           // => might trigger/generate capital or asset changing events
******************************************************************************/
with (CONTRACT) {
  ECONOMY = {
    'RBC': { // Royal Bank of Canada
      assets: { /* ... */ },
      capital: {
        // ...
        'liability/Kim/$'             : +1000,
        'liability/Jim/$'             : +1500,
        'liability/Ali/$'             : +2000,
        'liability/Daniel/$'          : +2500,
        'liability/Fatuma/$'          : +3000,
        'liability/Random Customer/$' : +5000,
        'liability/PP Inc./$'         : +15000,
        'liability/ORD/$'             : +25000,
        'liability/CAKE/$'            : +27000,
        'liability/UPS/$'             : +500000
        // ...
      },
      off: { /* ... */ }
    },
    'UPS': {
      assets: {
        'claim/RBC/account/$' : +500000,
      },
      capital: { /* ... */ },
      off: { /* ... */ }
    },
    'PP': {
      assets: {
        'claim/RBC/account/$' : +15000,
      },
      capital: { /* ... */ },
      off: { /* ... */ }
    },
    'ORD': {
      assets: {
        'claim/RBC/account/$'   : +25000,
        'inventory/3Dprinter/$' : +3000,
      },
      capital: { 'equity/$' : +28000 },
      off: { /* ... */ }
    },
    'CAKE': {
      assets: {
        'claim/RBC/account/$'               : +12000,
        'claim/RBC/account/Sensorica/$'     : +10000,
        'claim/RBC/account/Exchange Inc./$' : +5000
      },
      capital: {
        // ...
        'equity/Sensorica/Ali/$'    : +2000,
        'equity/Sensorica/Fatuma/$' : +2000,
        'equity/Sensorica/Kim/$'    : +2000,
        'equity/Sensorica/Daniel/$' : +2000,
        'equity/Sensorica/Jim/$'    : +2000
      },
      off: {
        // ...
        'contract/Sensorica/Ali/membership'   : membership({name:'Ali',x:2000}),
        'contract/Sensorica/Kim/membership'   : membership({name:'Kim',x:2000}),
        'contract/Sensorica/Fatuma/membership': membership({name:'Fatuma',x:2000}),
        'contract/Sensorica/Daniel/membership': membership({name:'Daniel',x:2000}),
        'contract/Sensorica/Jim/membership'   : membership({name:'Jim',x:2000})
      }
    },
    'Ali': {
      assets: {
        'claim/RBC/account/$' : +2000,
        'shares/Sensorica/$'  : +2000
      },
      capital: { 'equity/$': +4000 },
      off: { /* ... */ }
    },
    'Fatuma': {
      assets: {
        'claim/RBC/account/$' : +3000,
        'shares/Sensorica/$'  : +2000
      },
      capital: { 'equity/$': +5000 },
      off: { /* ... */ }
    },
    'Kim': {
      assets: {
        'claim/RBC/account/$' : +1000,
        'shares/Sensorica/$'  : +2000
      },
      capital: { 'equity/$': +3000 },
      off: { /* ... */ }
    },
    'Jim': {
      assets: {
        'claim/RBC/account/$' : +1500,
        'shares/Sensorica/$'  : +2000
      },
      capital: { 'equity/$': +3500 },
      off: { /* ... */ }
    },
    'Daniel': {
      assets: {
        'claim/RBC/account/$' : +2500,
        'shares/Sensorica/$'  : +2000
      },
      capital: { 'equity/$': +4500 },
      off: { /* ... */ }
    },
    'RC': { // Random Customer
      assets: {
        'claim/RBC/account/$' : +5000
      },
      capital: { 'equity/$': +5000 },
      off: { /* ... */ }
    }
  }
}
/******************************************************************************
  JOURNAL
******************************************************************************/
log(ECONOMY)
with (ECONOMY) { /* and */ with (CONTRACT) {
  JOURNAL = [
    /**************************************************************************
      PRE PROCESS
    **************************************************************************/
    // Ali invests Sensorica shares worth 500$ into Sensoricas 3d printer fund
    ((amount, contract) => [
      [Ali.assets,        'shares/Sensorica/$',               -amount],
      [Ali.assets,        'shares/Sensorica/printerfund/$',   +amount],
      [Ali.off,           'contract/Sensorica/printerfund',   contract],
      [CAKE.capital,      'equity/Sensorica/Ali/$',           -amount],
      [CAKE.capital,      'provision/Sensorica/3Dprinter/$',  +amount],
      [CAKE.off,          'contract/Ali/printerfund',         contract]
    ])(500, investment({name:'Ali',x:500,subject:'3Dprinter'})),
    // Kim invests Sensorica shares worth 1000$ into Sensoricas 3d printer fund
    ((amount, contract) => [
      [Kim.assets,        'shares/Sensorica/$',               -amount],
      [Kim.assets,        'shares/Sensorica/printerfund/$',   +amount],
      [Kim.off,           'contract/Sensorica/printerfund',   contract],
      [CAKE.capital,      'equity/Sensorica/Kim/$',           -amount],
      [CAKE.capital,      'provision/Sensorica/3Dprinter/$',  +amount],
      [CAKE.off,          'contract/Kim/printerfund',         contract]
    ])(1000, investment({name:'Kim',x:1000,subject:'3Dprinter'})),
    // Fatuma invests 1500$ from her bank account at Royal Bank of Canada into a Sensorica printer fund
    ((amount, contract) => [
      [Fatuma.assets,     'claim/RBC/account/$',              -amount],
      [Fatuma.assets,     'shares/Sensorica/printerfund/$',   +amount],
      [Fatuma.off,        'contract/Sensorica/printerfund',   contract],
      [RBC.capital,       'liability/Fatuma/$',               -amount],
      [RBC.capital,       'liability/CAKE/$',                 +amount],
      [CAKE.assets,       'claim/RBC/account/Sensorica/$',    +amount],
      [CAKE.capital,      'provision/Sensorica/3Dprinter/$',  +amount],
      [CAKE.off,          'contract/Fatuma/printerfund',      contract]
    ])(1500, investment({name:'Fatuma',x:1500,subject:'3Dprinter'})),
    // Sensorica uses printerfund to order a 3D printer for 3000$ from ORD
    ((amount, contract) => [
      [CAKE.assets,       'claim/ORD/3Dprinter/$',            +amount],
      [CAKE.capital,      'liability/ORD/$',                  +amount],
      [CAKE.capital,      'provision/Sensorica/3Dprinter/$',  -amount],
      [CAKE.capital,      'equity/Sensorica/$',               +amount],
      [CAKE.off,          'contract/ORD/purchase/3Dprinter',  contract],
      [ORD.assets,        'claim/CAKE/$',                     +amount],
      [ORD.capital,       'liability/CAKE/3Dprinter/$',       +amount],
      [ORD.off,           'contract/CAKE/sale/3Dprinter',     contract]
    ])(3000, purchaseOrder({seller:'ORD', buyer:'CAKE', price:3000, amount:'1x', subject:'3Dprinter'})),
    // Sensorica pays the invoice from it's bank account at Royal Bank of Canada
    ((amount, contract) => [
      [CAKE.assets,       'claim/RBC/account/Sensorica/$',    -amount],
      [CAKE.capital,      'liability/ORD/$',                  -amount],
      [RBC.capital,       'liability/CAKE/$',                 -amount],
      [RBC.capital,       'liability/ORD/$',                  +amount],
      [ORD.assets,        'claim/RBC/account/$',              +amount],
      [ORD.assets,        'claim/CAKE/$',                     -amount]
    ])(3000),
    // Sensorica receives 3D printer from ORD, who paid 20$ to UPS for shipping
    ((amount, contract) => [
      [CAKE.assets,       'claim/ORD/3Dprinter/$',            -amount],
      [CAKE.assets,       'inventory/Sensorica/3Dprinter/$',  +amount],
      [RBC.capital,       'liability/ORD/$',                  -20],
      [RBC.capital,       'liability/UPS/$',                  +20],
      [UPS.assets,        'claim/RBC/account/$',              +20],
      [UPS.capital,       'equity/$',                         +20],
      [UPS.off,           'contract/ORD/shipping',            contract],
      [ORD.assets,        'inventory/3Dprinter/$',            -amount],
      [ORD.assets,        'liability/CAKE/3Dprinter/$',       -amount],
      [ORD.off,           'contract/UPS/shipping',            contract]
    ])(3000, purchaseOrder({seller:'UPS',buyer:'ORD',receiver:'CAKE',price:20,subject:'3Dprinter'})),
    // Daniel invests 30$ to order 1000g photopolymer from PP Inc. via Sensorica
    ((amount, contract) => [
      [Daniel.assets,  'shares/Sensorica/photopolymer/$',     +amount],
      [Daniel.capital, 'liability/Sensorica/photopolymer/$',  +amount],
      [Daniel.off,     'contract/Sensorica/photopolymer',     contract],
      [CAKE.assets,    'claim/Daniel/photopolymer/$',         +amount],
      [CAKE.capital,   'equity/Sensorica/$',                  +amount],
      [CAKE.off,       'contract/Daniel/photopolymer/$',      contract]
    ])(30, investment({name:'Daniel',x:30,subject:'photopolymer', amount:'1000g'})),
    // Daniel buys 1000g photopolymer for 30$ from PP Inc. to ship it to Sensorica
    ((amount, contract) => [
      [Daniel.assets,  'claim/PP Inc./photopolymer/$',        +amount],
      [Daniel.capital, 'liability/PP Inc./$',                 +amount],
      [Daniel.off,     'contract/PP/purchase/photopolymer/$', contract],
      [PP.assets,      'claim/Daniel/$',                      +amount],
      [PP.capital,     'liability/CAKE/photopolymer/$',       +amount],
      [PP.off,         'contract/Daniel/sale/photopolymer/$', contract]
    ])(30, purchaseOrder({seller:'PP',buyer:'Daniel',receiver:'CAKE',price:30,amount:'1000g',subject:'photopolymer'})),
    // Daniel pays the invoice from his bank account at Royal Bank of Canada
    ((amount) => [
      [Daniel.assets,     'claim/RBC/account/$',              -amount],
      [Daniel.assets,     'liability/PP Inc./$'               -amount],
      [RBC.capital,       'liability/Daniel/$',               -amount],
      [RBC.capital,       'liability/PP Inc./$',              +amount],
      [PP.assets,         'claim/Daniel/$',                   -amount],
      [PP.assets,         'claim/RBC/account/$',              +amount]
    ])(30),
    // Sensorica receives 1000g photopolymer at it's lab
    ((amount) => [
      [Daniel.assets,  'claim/PP Inc./photopolymer/$',        -amount],
      [Daniel.capital, 'liability/Sensorica/photopolymer/$',  -amount],
      [CAKE.assets,    'inventory/Sensorica/photopolymer/$',  +amount],
      [CAKE.assets,    'claim/Daniel/photopolymer/$',         -amount]
    ])(30),
    // Kim works 3h into Sensorica accounting for Sensorica
    ((amount, contract) => [
      [Kim.assets,     'claim/Sensorica/$',                   +amount],
      [Kim.capital,    'equity/Kim/$',                        +amount],
      [Kim.off,        'contract/Sensorica/accounting/$',     contract],
      [CAKE.capital,   'equity/Sensorica/$',                  -amount],
      [CAKE.capital,   'liability/Kim/$',                     +amount],
      [CAKE.off,       'contract/Kim/accounting/$',           contract]
    ])(60, work({name:'Kim',x:3,activity:'Sensorica Accounting'})),
    /**************************************************************************
      PROCESS 1
    **************************************************************************/
    // Daniel invests 20h to design a 3D model/blueprint for Sensorica
    ((contract) => [
      [Daniel.off,     'contract/Sensorica/3Dmodel/$',        contract],
      [CAKE.off,       'contract/Daniel/3Dmodel/$',           contract]
    ])(entrepreneurship({name:'Daniel',x:20,subject:'3Dmodel'})),
    /**************************************************************************
      PROCESS 2
    **************************************************************************/
    // Jim invests 2h to create a 3D printed part by using the 3D printer, 100g/1000g photopolymer and Sensoricas 3D model
    ((amount, contract) => [
      [Jim.off,        'contract/Sensorica/3Dpart/$',         contract],
      [CAKE.assets,    'inventory/Sensorica/photopolymer/$',  -(100*30/1000)],
      [CAKE.assets,    'inventory/Sensorica/3Dpart/$',        +(3+amount)],
      [CAKE.capital,   'provision/revenue/3Dpart',            +amount],
      [CAKE.off,       'contract/Jim/3Dpart/$',               contract]
    ])(2*20, entrepreneurship({name:'Jim',x:2,subject:'3Dpart',dependencies:[
      CAKE.off['contract/CAKE/sale/3Dprinter'],
      CAKE.off['contract/Daniel/photopolymer/$'],
      CAKE.off['contract/Daniel/3Dmodel/$']
    ]})),
    /**************************************************************************
      SALE
    **************************************************************************/
    // Sensorica offers the 3D printed part for 100$ through Exchange Inc. marketplace
    ((amount, contract) => [
      [CAKE.assets,    'inventory/Sensorica/3Dpart/$',        -0.4*amount],
      [CAKE.assets,    'offer/Exchange/3Dpart/$',             +amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            +0.6*amount],
      [CAKE.off,       'contract/Exchange Inc./affiliate',    contract]
    ])(100, affiliate({name:'Exchange Inc.',service:'Marketplace',x:100,dependencies:[
      CAKE.off['contract/Jim/3Dpart']
    ]})),
    // Random Customer buys 3D printed part for 100$ on Exchange Inc. marketplace
    ((amount, contract) => [
      [RC.assets,       'claim/CAKE/3Dpart/$',                +amount],
      [RC.capital,      'liability/CAKE/$',                   +amount],
      [RC.off,     'contract/Random Customer/purchase/3Dpart',contract],
      [CAKE.assets,    'claim/Random Customer/$',             +amount],
      [CAKE.capital,   'liability/Random Customer/3Dpart/$',  +amount],
      [CAKE.off,   'contract/Random Customer/purchase/3Dpart',contract]
    ])(100, purchaseOrder({seller:'CAKE',buyer:'Random Customer',price:100,subject:'3Dpart',dependencies:[
      CAKE.off['contract/Exchange Inc./affiliate']
    ]})),
    // Random Customer pays 100$ through his bank account at Royal bank of Canada to CAKE's bank account at Royal bank of Canada
    ((amount) => [
      [RC.assets,      'claim/RBC/account/$',                 -amount],
      [RC.capital,     'liability/CAKE/$',                    -amount],
      [RBC.capital,    'liability/Random Customer/$',         -amount],
      [RBC.capital,    'liability/CAKE/$',                    +amount],
      [CAKE.assets,    'claim/RBC/account/$',                 +amount],
      [CAKE.assets,    'claim/Random Customer/$',             -amount]
    ])(100),
    // CAKE ships 3D printed part to Random Customer for 5$ via UPS
    ((amount, contract) => [
      [RC.assets,      'inventory/3Dpart/$',                  +amount],
      [RC.assets,      'claim/CAKE/3Dpart/$',                 -amount],
      [RBC.capital,    'liability/CAKE/$',                    -5],
      [RBC.capital,    'liability/UPS/$',                     +5],
      [UPS.assets,     'claim/RBC/account/$',                 +5],
      [UPS.capital,    'equity/$',                            +5],
      [UPS.off,        'contract/ORD/shipping',               contract],
      [CAKE.assets,    'offer/Exchange/3Dpart/$',             -amount],
      [CAKE.capital,   'liability/Random Customer/3Dpart/$',  -amount],
      [CAKE.off,       'contract/UPS/shipping',                contract]
    ])(100, purchaseOrder({seller:'UPS',buyer:'CAKE',receiver:'RC',price:5,subject:'3Dpart'})),
    /**************************************************************************
      DISTRIBUTION
    **************************************************************************/
    // Exchange Inc. invoices CAKE 0.01*100$ for Sale of 3D printed part
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.01*amount],
      [CAKE.assets,    'claim/RBC/account/Exchange Inc./$',   +0.01*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.01*amount],
      [CAKE.capital,   'equity/$',                            +0.01*amount]
    ])(100),
    // Sensorica receives $5 (5%) for general network expenses, e.g. UPS shipping.
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.05*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.05*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.05*amount],
      [CAKE.capital,   'equity/$',                            +0.05*amount]
    ])(100),
    // Daniel receives $3 for Photopolymer (based on the cost per gram)
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.03*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.03*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.03*amount],
      [CAKE.capital,   'equity/Sensorica/Daniel/$',           +0.03*amount]
    ])(100),
    // Daniel receives $20 for Design for 3D printed part (20% of selling price)
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.2*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.2*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.2*amount],
      [CAKE.capital,   'equity/Sensorica/Daniel/$',           +0.2*amount]
    ])(100),
    // Ali receives $5 for PrinterFund (printer gets paid at $15/hour, gets split among contributors)
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.05*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.05*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.05*amount],
      [CAKE.capital,   'equity/Sensorica/Ali/$',              +0.05*amount]
    ])(100),
    // Kim receives $10 for PrinterFund
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.1*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.1*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.1*amount],
      [CAKE.capital,   'equity/Sensorica/Kim/$',              +0.1*amount]
    ])(100),
    // Fatuma receives $15 for PrinterFund
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.15*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.15*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.15*amount],
      [CAKE.capital,   'equity/Sensorica/Fatuma/$',           +0.15*amount]
    ])(100),
    // Kim receives $1 for MonthlySensoricaPrinterFundAccounting (based on some rule, let's say 1% of sale until reaching $20/hour)
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.01*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.01*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.01*amount],
      [CAKE.capital,   'equity/Sensorica/Kim/$',              +0.01*amount]
    ])(100),
    // Jim receives $40 for PrinterOperation his work and initiative for the sale (the rest)
    ((amount) => [
      [CAKE.assets,    'claim/RBC/account/$',                 -0.4*amount],
      [CAKE.assets,    'claim/RBC/account/Sensorica/$',       +0.4*amount],
      [CAKE.capital,   'provision/revenue/3Dpart',            -0.4*amount],
      [CAKE.capital,   'equity/Sensorica/Jim/$',              +0.4*amount]
    ])(100)
  ]
}}
apply(JOURNAL)
log(ECONOMY)

Description in REA

// @TODO