Open zspencer opened 1 year ago
April (CEO of Piikup) is interested in a demo sometime! I've asked if she'd be available during our monthly member meeting, or during our Wednesday sessions. If not, I'll set aside a separate time.
Demoed our Marketplace: Furniture to April today, feedback was:
Today, I onboarded Ivin and Mikaya as Account Managers for Piikup; who will be supporting Piikups Clients with their eCommerce platform.
I recorded the walk-through that Ivin did, and will be passing it on to them via email.
We've also asked that they do some practice account set up and orders to make sure they're comfortable with the flow; as well as to provide us with adjusting feedback.
Two key new work items from the call:
Script I used to port data from the sandbox to the production site:
from = Space.find_by(slug: 'piikup-sandbox')
to = Space.find_by(slug: 'piikup')
from.rooms.map { |r| to.rooms.find_or_initialize_by(name: r.name, slug: r.slug).update!(access_level: :internal, publicity_level: :listed) }
frs = from.rooms
frs.map do |fr|
tr = to.rooms.find_or_initialize_by(name: fr.name, slug: fr.slug)
# tr.update!(access_level: :internal, publicity_level: :unlisted)
fr.furnitures.each { |ff| tr.furnitures.find_or_initialize_by(slot: ff.slot).update!(furniture_kind: ff.furniture_kind, settings: ff.settings) }
end
tms = Marketplace::Marketplace.where(furniture_kind: "marketplace", room: to.rooms)
fms = Marketplace::Marketplace.where(furniture_kind: "marketplace", room: from.rooms)
tms.each do |tm|
# tm.update!(stripe_account: nil, stripe_webhook_endpoint: nil, stripe_webhook_endpoint_secret: nil)
fm = fms.includes(:room).find_by(room: { slug: tm.room.slug })
next unless fm.present?
fm.tax_rates.each do |ftr|
tm.tax_rates.find_or_initialize_by(label: ftr.label).update!(tax_rate: ftr.tax_rate)
end
fm.delivery_areas.each do |fda|
tm.delivery_areas.find_or_initialize_by(label: fda.label).update!(price: fda.price)
end
fm.products.each do |fp|
tp = tm.products.find_or_initialize_by(name: fp.name)
tp.update!(description: fp.description, price: fp.price)
fp.tax_rates.each do |ftr|
tp.product_tax_rates.find_or_initialize_by(tax_rate: tm.tax_rates.find_by!(label: ftr.label))
end
end
end
From me on 3/31
Hey April!
We turned on your live Marketplace today (https://piikup.zinc.coop/) and ran a test transaction through! https://dashboard.stripe.com/payments/pi_3MrobIGi42bwJziz0Oqklo9t. You should be able to connect your Clients' Stripe accounts to their Piikup Marketplace Storefront!
We also learned you will need to maintain a "float" balance in your Piikup Stripe account, which means:
- We transitioned your stripe account from automatic daily payouts to manual payouts: https://dashboard.stripe.com/settings/payouts.
- When running a manual payout (https://dashboard.stripe.com/balance/overview?currency=usd) , you'll want to make sure you're only paying-out your delivery fees. If running manual payouts gets onerous, we can automate that for ya.
- You may want to "Top Up" your Stripe Balance so that you have some $$$ in it.
Before you start accepting orders, we recommend:
1.You may want a Terms of Service and/or Privacy Policy. It's possible the NoBAWC or SELC folks can help with this? I'm available to support you by working with your legal team, or I can look for some off-the-shelf ones for ya.
- We want to do some bug-bashing and polishing on the Shopper experience. In particular
- The Shopper email was empty when I checked out as a Guest
- The Order Confirmation page is absolutely hideous
- The Order Confirmation page does not work for Guests
That said, it's entirely your call on whether you're ready to start directing folks to taking online orders or not. We don't think it's quite ready, but the orders should flow through at least!
Response from April:
Hi Zee Yahoo to the live Marketplace 🤩 hella raw🙌🏿
Agreed . I’d like to wait until a few bugs Question, am I able to correct the tax rate? I recall you wanted to adjust the increments to allow for 5’s
I have created 7 merchant rooms and added furniture to each.
Can I add a check box âś… option for if the order is for a catering event? Or better for phase 2.
I’m asking because on the marketplace are both restaurants that will be expecting orders from a regular consumer who wants to order for dinner time.
There are also places like Cafe Gabriela and The Table Catering that provide catering…
Thinking about the understory’s and arizmendiz co-op fam, they also likely have 2 order scenarios
Most of the restaurants likely have that double target market
Here’s how they lineup:
The Table Catering online
Cafe Gabriela restaurant storefront
Tha Mufn vegan online only
Coco noir storefront
Lion dance cafe storefront
Response from Zee:
Re: Tax Rates - Yep! You can do it in increments to the 10ths place now (i.e. 10.23% or whatever)
Re: Check-box for catering - We can do that, I am thinking a bit about the outcomes you would hope for with that box being checked? Like, if that box is checked does it mean that they get to choose a delivery time, but if it is not it's for the "today" delivery time?
Re: Bugs - Please let us know each time you notice something that makes you hesitant to accept deal flow. Or feel free to compile a list, we're doing our own testing and bug-bashing; but guidance from people who are using the software and deriving the benefit is our favorite thing. Even just snapping a screenshot and sending it to the convene-maintainers@zinc.coop email list as you notice stuff is a huge help.
Hey April,
We've made a number of improvements to the piikup marketplace, in particular:
We've tidied up rough edges around the site. Things should look more consistent and polished.
You can create "Delivery Areas" for each Marketplace. "Area" is a bit of a misleading term, because you could create "Delivery Area"s for "Catering" and "Dinner" with different fees. We're thinking of moving the "Order By" and "Delivers On" fields from the Marketplace onto the Delivery Area. This would let you tailor the messaging around when orders must be placed and when they will be delivered. Does that sound useful to you? (Thanks Kelly!)
Shoppers can see products before setting their delivery information, and the UI for setting their delivery information is a little nicer. Shoppers must also pick a Delivery Area before they may Check Out.
The after-order experience, including the emails sent to you and the Shopper are fuller and formatted nicer. Also, the Order History screens no longer look like a trash fire.
We've added in tools to observe the site and identify confusing or frustrating experiences, which is how we proactively noticed and remediated the log in bug last week. Whenever you notice anything that doesn't feel great, just send a quick email to either myself or convene-customer-team@zinc.coop and we'll be able to dig in. (Thanks Ana!)
If you'd like to do a demo this week, we'll be in
starting at 5pm on Wednesday and 10AM on Sunday, or you can book time at We will be continuing testing and polishing of the Seller onboarding experience; as well as looking into an appropriate privacy policy and terms of service. That said, we think there is no technical reason not to start taking orders?
I've merged in the data from https://piikup-sandbox.zinc.coop/ to https://piikup.zinc.coop/, so all of the Client's, Marketplaces, Taxes, Products and Marketplaces should be up to date.
- Zee
Sent an update to April tonight, w/special shout-outs to @KellyAH and @anaulin!
I'm definitely not sure how to proceed with a Terms of Service and Privacy Policy. From an implementation perspective, I'm thinking maybe just text fields on a Space?
But the harder question is "how do we set our Client-Owners up for success on these critical pieces of high-trust service without requiring them to shoulder the specialized expertise and labor?"
Or to put it less hoity-toity: Are there off-the-shelf ToS we can use? Privacy Policies? Is there a SELC-a-like for software legalese stuff? Maybe Banchan has something we can borrow?
Call with April:
Next Steps:
marketplace.piikup.com
and marketplace-sandbox.piikup.com
convene-support@zinc.coop
if they experience any issues with the marketplaceLatest copy script:
from = Space.find_by(slug: 'piikup-sandbox')
to = Space.find_by(slug: 'piikup')
from.rooms.each { |r| to.rooms.find_or_initialize_by(name: r.name, slug: r.slug).save! }
from.rooms.each do |fr|
tr = to.rooms.find_by!(name: fr.name, slug: fr.slug)
fr.furnitures.each do |ff|
tr.furnitures
.find_or_initialize_by(slot: ff.slot)
.update!(furniture_kind: ff.furniture_kind, settings: ff.settings)
end
end
tms = Marketplace::Marketplace.where(room: to.rooms)
fms = Marketplace::Marketplace.where(room: from.rooms)
tms.each do |tm|
# tm.update!(stripe_account: nil, stripe_webhook_endpoint: nil, stripe_webhook_endpoint_secret: nil)
fm = fms.includes(:room, :delivery_areas, :products).find_by(room: { slug: tm.room.slug })
next unless fm.present?
# fm.tax_rates.each do |ftr|
# tm.tax_rates.find_or_initialize_by(label: ftr.label).update!(tax_rate: ftr.tax_rate)
# end
# fm.delivery_areas.each do |fda|
# tm.delivery_areas.find_or_initialize_by(label: fda.label).update!(price: fda.price)
# end
fm.products.each do |fp|
puts "Finding... #{fp.name}"
tp = tm.products.find_or_initialize_by(name: fp.name)
tp.update!(description: fp.description, price: fp.price)
if fp.photo.attached?
puts "Attaching... #{fp.photo}"
downloaded = fp.photo.download
tp.photo.attach(fp.photo.blob)
end
fp.tax_rates.each do |ftr|
tp.product_tax_rates.find_or_initialize_by(tax_rate: tm.tax_rates.find_by!(label: ftr.label))
end
end
end
Sat with April as she onboarded Cafe Gabriela today! Noticed:
Marketplace::StripeAccount
(or perhaps Marketplace::StripeConfiguration
probably should be related to the StripeUtility
. When we swapped from test to prod and it caused the Connect to Stripe
to fail because it already had an account id attached to a different Stripe account. https://github.com/zinc-collective/convene/issues/1508@zspencer
- She has onboarded Cafe Gabriela! If you want to order delicious sandwhiches for a company event https://marketplace.piikup.com/rooms/cafe-gabriela
This website seems to be not accessible right now, just in case we weren't aware.
Good catch. It looks like only Crumble & Whisk is currently publicly listed on https://marketplace.piikup.com/. Not sure if that's intended or not. @zspencer do you know? would it make sense to check in with April to make sure she's aware?
Hey April,
We noticed that Cafe Gabriela is listed on your main website it's not on https://marketplace.piikup.com/ anymore; is there anything you need from us to support their launch?
We also noticed that while Crumble & Whisk is listed on the marketplace, it is not listed or linked to from your main website. Is there anything you need from us to start taking orders?
We're still plugging away at polish and what not; at a bit of a reduced pace from the harder push over the last quarter. Our current priorities are:
- Order Notifications: Make it Easier to manage who receives Order Notifications - https://github.com/zinc-collective/convene/issues/1511
- Order Notifications: Send Order Notifications to Square - https://github.com/zinc-collective/convene/issues/1500
If you have suggestions for where else to invest our time; we're all ears!
- Zee
Just sent the following email! Good catch @daltonrpruitt / @anaulin !
Call w/April as she demoed to Mandela
Right now, they get emails to a shared email address; so order notifications should be straightforward.
Had a great bit of feedback from April! Linked here in the Convene Support Group: https://groups.google.com/a/zinc.coop/g/convene-support/c/G6Iv1kx81eA
My Response:
This is great! I'm including the Convene Support email to loop in the folks working on the Piikup Marketplace.
Re: Customer Facing Info - I think I need more context for what this is supposed to mean. Let's talk a bit Friday?
Re: Delivery Windows - We had a great discussion about this today! We've got some good short-term next steps that should help, and Kelly is going to write up some thoughts for to organize that work-flow and support your wider set of constraints.
Re: Order Notifications:
- to Phone - That's a great point; I've put it into the fuller definition of what we want to offer regarding Notifications: https://github.com/zinc-collective/convene/issues/1654
- to Square - Good to know that Square is used across all three. Work definition here: https://github.com/zinc-collective/convene/issues/1500
If you had to pick between the two, presuming SMS is something we could probably take care of in a month or so; and Square is something that would take about 3 months; which would you prefer?
My instincts are Order notifications to Phone will be better for short-term getting people onboard; but the Square side will work better for your clients.... We'll talk more on Friday!
Re: Tax - I think what you are asking for is you want the Order to show the Tax per Line-Item, rather than the full Tax amount. Is that correct? If so, that makes a lot of sense. I've added it to our work tracker: https://github.com/zinc-collective/convene/issues/1655
Originally posted on https://github.com/zinc-collective/convene/issues/1500#issuecomment-1690834894
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:
Sent out two updates to April tonight regarding ride-along follow-up and square work update respectively. CC'd the shared Convene support email address, so everyone should see the responses hopefully. Let's see what she says!
Hi April,
Zinc would like to sincerely thank you again for the opportunity to ride along in the van for a whirlwind tour of Piikup’s daily operating procedures. It was really insightful, and I truly appreciate your patience and skill to walk me through the technicalities in detail while we completed real deliveries!
A couple weeks ago I had a chance to present my notes to the rest of the Zinc team at our weekly meeting. We had a lively discussion, as the team was keen to better understand how Zinc can continue helping you overcome technological problems like creating email notifications for your recurring wholesale intake sheets, or advance your business through more sophisticated technological integration with Onfleet.
I found a quick video tutorial on setting up email notifications for Google sheets anytime someone makes a change: https://www.youtube.com/watch?v=h3dASEhZFiI. Would this help you avoid missing new wholesale orders? I could also sit with you on a Zoom call and help you set this up.
I'd like to jump on a call to talk about your tech priorities and see how can we be most helpful to you in the short-term, while we wait for Marketplace business to ramp up. For example, you brought up that having an “unassigned” task queue in Onfleet for incoming deliveries might be useful. What’s a good time in the next couple weeks for you to jump on a call (Zoom preferably if we are going to work on the spreadsheet)? I’m generally available late morning to late afternoon weekdays.
Look forward to connecting again soon!
Warmly, Ross
And...
Hi April,
We’ve recently completed the initial iteration of a Square Order Notifications integration for Convene Marketplaces. We’re looking forward to trialing this with you! Let me give you a brief explanation of how it currently works.
But first, it’s important to understand that Square does not support creation of order notifications from external software directly. This means Convene cannot send an email “notification” or sms per se to a vendor when a purchase was made on Convene. However, Square does allow us to create entirely new orders and transmit them to the vendor’s Square account automatically. These new orders will show up in their Square Dashboard, and also be associated with the correct payment amount.
To test this, first we would have to manually add Square account information to our database for a vendor’s marketplace listing (what we call a “Marketplace Gizmo”). Then every time a customer places an order for that vendor, Convene will automatically create a new order in that vendor’s Square account. That’s it!
To make sure this works as expected, we'd like to test this with you and Crumble & Whisk or another one of your vendors, if y'all are available for that. We would need to get on a video call to set it up and test/demo the functionality. What’s a good time for you in the next couple weeks? I’m generally available late morning to late afternoon weekdays.
Look forward to connecting again soon!
Warmly, Ross
Hey April!
2 things:
- There was a bug preventing you from attaching Stripe accounts until just today; apologies!
- I've completed a redesign pass on the shopper's buying products flow; which should make things a little bit easier to step through and more clear about when things are arriving!
Attached is a video walkthrough: <snip, sincei t has my home address> Next I'm going to start working on packaging up the Marketplace as an App that can be downloaded on the Google Play and Apple App Store; unless you have feedback from your clients or your operational staff about rough edges that are preventing you from directing orders to the caterers in your group.
- Zee
We got an update from April regarding Onfleet in response to the first message I sent last week (see https://github.com/zinc-collective/convene/issues/832#issuecomment-1718500018).
Bad news / Good news. Piikup is moving away from ONfleet effective September 30th due to their 50% price increase and no non-profit discounts. Our rate will increase from $279 to $500 per month with Onfleet.
We are currently looking into Ono....the need to change is frustrating and a huge time suck as we've been with Onfleet for over two years.
One interesting thing about ONO that April mentioned (briefly, in passing) at the lake sit last Friday is that ONO does seem to expose some kind of end-user product listing and ordering capability. While she seemed fuzzy about it, she hinted this may have some redundant capability with Convene Marketplace. Let's keep an eye on this.
Assuming this is Ono: https://onoapp.co.
Chatted with April today:
@zspencer thanks for the bug report (#2198). I'll take a look after the weekend.
https://github.com/zinc-collective/convene/issues/1475
Our main point-of-contact for https://github.com/zinc-collective/convene/issues/832 is April Fenall, their CEO. https://github.com/zinc-collective/convene/issues/103 sometimes interact with Piikup's clients directly as part of https://github.com/zinc-collective/convene/issues/1503
See: https://marketplace.piikup.com/
Desired Furniture
Piikup is a solidarity economy business focused on supplanting gig-economy delivery companies. They support a network of restaurants, grocers, and caterers throughout the San Francisco Bay Area.