zinc-collective / convene

An Operating System for the Solidarity Economy
https://convene.zinc.coop
Other
57 stars 21 forks source link

🌱✨ `Marketplace`: `Seller` receives `Order` in their `Square` Point of Sale #1500

Open zspencer opened 1 year ago

zspencer commented 1 year ago

Bounties:

Requested By

Prerequisites

zspencer commented 1 year ago

This was requested by Piikup on behalf of Crumble and Whisk, Oaklandia, and Mandela

rosschapman commented 1 year ago

Spec document: https://docs.google.com/document/d/1Z-d1i5AEeFPDS44vyWSESd1p-1hFEuDAjsXZuhKzn1Y. Ask @rosschapman for access.

Consensus was reached at the 7/26 ensemble that @rosschapman would proceed to build a modest, demoable workflow for Square order notifications (creations) originating in Convene.

zspencer commented 1 year ago

Invoice: https://app.qbo.intuit.com/app/invoice?txnId=588

rosschapman commented 1 year ago

Things are moving along! Allow me to share a sneak peak of a Square order (as "notification") programmatically created from a marketplace_order in my local Convene environment. I was able to simulate the checkout workflow by manually triggering a checkout.session.completed webhook event generated by the Stripe CLI. And voilá.

image
anaulin commented 1 year ago

Exciting! 🎉

rosschapman commented 1 year ago

Recap from @rosschapman's 8/15/23 ride-along with Piikup:

Firstly, it should be noted that it was atypical for April to be driving the cargo truck. Normally she would be running dispatch from home/office. I'd like to first thank her and the Piikup team for accommodating us! April displayed a heroic effort in multi-tasking driving, executing a pickup route with multilpe, talking to me and keeping me informed along the way, continuing to manage dispatch, and handling other impromptu business issues during the ride-along.

We spent nearly 2 hours together and drove a somewhat typical route:

  1. I was picked up at Mandela Grocery a little after 10am. Piikup has begun a partnership with them to deliver prepared, hot meals, and also list them on their Convene marketplace instance. April introduced me to the employees onsite, including the chef. April is excited for this partnership and believes it will drive a lot new business. A note about their handling of "hot" food: they will stick to currently established delivery window guarantees.
  2. We hopped back in the truck and headed to Gabriela's in downtown Oakland, made a brief stop for an intro (although April did physically ask if there were any new deliveries while we were there). Next we proceeded to the Alameda farmers market for a pickup. Then delivered to Omni Commons. Then attempted (failed, see below) to pickup empty boxes at the ANV farm -- no one was there. Finally I was dropped off at Mandela Grocery.
  3. Along the way April explained and demonstrated how they use OnFleet.
    • When you start a delivery in the driver app, a text message with a tracking link and ETA is sent to the business. However, OnFleet is not very sophisticated and poses challenges for Piikup's drivers. As April explained:
      • What if the driver needs to make a course correction after starting the delivery. For example, they forgot something. Once the delivery has begun, OnFleet's tooling does not provide anyway to pause, stop, or mark the delivery as delayed and send an update to the customer.
    • Another challenge for April is that OnFleet's dispatch service is only accessible through a web browser. This makes "toggling" between dispatch and driver "views" on a phone cumbersome while driving. Keep in mind drivers are likely using cell phones and not tablets. Also the Piikup fleet of cargo vehicles are not necessarily equipped with (or well designed for) dashboard attachments for phones.
    • Delivery pickups and dispatching/routing are all manually coordinated by April. OnFleet does not provide any smart, suggestive matching, etc...
    • OPPORTUNITY: April expressed a desire for new deliveries to show up in a queue in OnFleet's web view of in-progress deliveries. Currently new deliveries must be entered manually, one at a time. She thinks that OnFleet's capabilities may allow for new deliveries to be "sent into" a queue/category that sits above the list of in-progress deliveries. This ability would add some automation and save time entering these manually.
  4. April also covered the types of deliveries they make:
    • Single order deliveries (B2C), catering (B2C), and wholesale (B2B). ANV Farm is a good example of a B2B vendor.
    • The B2C deliveries come through the Convene marketplace
    • However, the B2B of the business is coordinated and managed separately and idiosyncratically
      • For Piikup, wholesale business is effectively recurring deliveries. I observed April use the terms "wholesale" and "recurring" interchangeably.
      • Although wholesale deliveries are recurring, managing intake for them is laborious. Every order, even if the same as last week, must be entered into a shared Google spreadsheet by the vendor. From what I can remember this spreadsheet is transparent, and accessible by all wholesale vendors.
      • April noted this manual process is prone to failure:
        1. Monitoring new orders requires human vigilance. Inevitably human error occurs -- which April accepts, wisely, as a given -- and a once in a while a weekly might be missed when designing the next routing schedule
        2. April says they mitigate this issue by planning for a quick stop every week, regardless of whether there is definitely an order that day. She'd rather show up mistakenly, then miss a delivery. But she admits this is wasteful.
        3. I wonder if it's possible for a vendor to literally overwrite another vendor's order?
        4. OPPORTUNITY (including notes from 8/23/23 ensemble): Could Convene have a Gizmo that support a simple table with notifications (@anaulin's idea). @zspencer noted we should understand the cost of shifting from the spreadsheet system to a new intake system on Convene. The question might become, then, can we bridge the gap between a Google Sheet and Convene so that we could still support timely notifications of new or updated recurring/wholesale orders. Is there even a lighter approach, where Zinc might build notifications into Google Sheets directly -- either programmatically, with extensions, etc...
  5. We also experienced a common frustration for Piikup drivers when attempting to pickup the previous weeks empty boxes at ANV:
    • No one was present at ANV farm when we arrived for pickup
    • What's more, April wasn't able to reach anyone directly (I can't quite remember if it was because she doesn't have a direct contact by phone, or if no one picked up either directly or on a general line -- possibly both)
    • April noted that wasting even a few minutes can be a huge disruption/waste for effective dispatching
    • I gathered this wasn't about blame so much as a troubling inconvenience that must have a solution, somehow
    • OPPORTUNITY: It seems a shame that in this day in age a group of business partners that need to coordinate regular pickup/delivery do not have an effective, standardized way to communicate. Could a technology partner help here? In this case, all April needed to know was weather anyone would be at the farm when she arrived.
anaulin commented 1 year ago

Thanks for the writeup, @rosschapman, super interesting stuff!

A quick search revealed that Google Sheets has a feature for change notifications. Tools > Notification settings > Edit notifications gives the options: image

Any thoughts if these ^ kinds of edit notifications would be helpful to April?

rosschapman commented 1 year ago

@anaulin I suspect so. Let's ask and find out. It's possible they just haven't had the capacity or wherewithal to discover this. I can help reach out!

anaulin commented 1 year ago

@rosschapman if you could reach out to April with that suggestion, that would be aces! 🙏

rosschapman commented 1 year ago

Quick dev update: I've upgraded the version of the API in my Square Sandbox environment from 7/20/23 -> 10/18/23. I was behind 4 versions. Our code and any new manual e2e tests will hit this version. Although from what I could gather scanning the release notes, there haven't been any notable changes in the Orders API.