Open JmillsExpensify opened 11 months ago
Triggered auto assignment to @lschurr (NewFeature
), see https://stackoverflowteams.com/c/expensify/questions/14418#:~:text=BugZero%20process%20steps%20for%20feature%20requests for more details.
Triggered auto assignment to Design team member for new feature review - @shawnborton (NewFeature
)
Still not a priority.
I don't think this is critical, I would say it's more polish right? If it's critical for smallbizexpo, why?
Definitely not critical.
Still not a priority.
I need to prioritize this one this week.
Do we have an idea of what exactly needs to happen to the product to enable this? Is it:
The main change required is adding a Rate
row, such that the distance rate can be updated at any time during creation.
OK, can you please update the title and the OP to reflect that?
Updated the OP with further details.
I believe that the next step is that Neil will update this issue with more detailed considerations before implementing.
Yep, I plan to work on that for a bit today
Ok, here are some of the changes that I think we will need to make. I will get started on a backend PR when I finish planning. I will keep updating this comment. I played around with some of the frontend changes but the current routing makes it quite a pain. @tgolen is there a PR that I or a contributor can branch off of with updated routing? Maybe we should get someone from an agency to implement the front end changes, because they're fairly involved.
Backend changes:
Partial frontend changes:
includeP2P: true
here isAllowedToSplit
here.withOnyx
to the policy that has type: personal
and the current user's ownerAccountID
. We already return the user's personal policy when opening the app or reconnecting.OpenDraftWorkspaceRequest
and call it for IOU distance requestsUpdateWorkspaceCustomUnitAndRate
api like we do here, but for the personal policy.That's just for a proof of concept / testing ^. I've gotten Jason on board with writing a doc for this, so I think we will start soon and it will be a better medium for planning.
Yeah, you should probably base any changes off of this branch: https://github.com/Expensify/App/pull/28618
It's fully done, but not 100% updated with main
at this point. I think this branch will make all of these changes a lot easier.
What's Next post is live.
I updated this issue with the project template and I started drafting an expanded proposal to send out to strategy@.
I finished a draft of the expanded proposal and I sent it to Jason for review. After his feedback I will send it out, hopefully tomorrow morning.
@JmillsExpensify, @neil-marcellini Whoops! This issue is 2 days overdue. Let's get this updated quick!
I'm planning to send out the proposal today and write up the high level pre-design.
I just sent the pre-design out to the room!
The pre-design went well and I'm going to start writing the high level design.
Ok cool, the high level is about 50% done. I got the proposed solution and ui additions and changes sections filled out. We're still discussing how the rates will move from a user's personal workspace to the workspace owing reimbursement. I also want to walk through the flows a bit more on staging and make sure we have considered the entire UX. Finally, I should read the complete high level of the bottom up design doc if I'm going to ask readers of this doc to do the same.
Triggered auto assignment to @shawnborton (Design
), see these Stack Overflow questions for more details.
Hey there Shawn, would you please help us out with some mocks and design review on the high level? I'll make some notes in the doc about where I need help so far.
@JmillsExpensify, @shawnborton, @neil-marcellini Whoops! This issue is 2 days overdue. Let's get this updated quick!
@JmillsExpensify, @shawnborton, @neil-marcellini Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!
@JmillsExpensify, @shawnborton, @neil-marcellini Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!
I was OOO Friday but I'm back now and this is my top focus.
Added some mocks for you!
I filled out the rest of the high level sections and asked a couple more questions for consensus in Slack. Very close to being ready to send out.
To do before sending the high level
To do before sending the high level
I assigned James for marketing since he said he can help.
:wave: Hello Generalist Track Team - you have been assigned to review this High Level Design Doc. Check out this Stack Overflow for some tips on reviewing a design doc. Once you are done, simply press the Add "Reviewed Doc" comment
button in the right hand side K2 panel or follow these instructions.
@bfitzexpensify
(Expensifier / Graduate) - https://github.com/Expensify/App/issues/31330@ryanldonato
(Expensifier / Graduate) - https://github.com/Expensify/App/issues/31331@zsgreenwald
(Project Manager) - https://github.com/Expensify/App/issues/31332@sakluger
(Project Manager) - https://github.com/Expensify/App/issues/31333@robertjchen
(Product Manager) - https://github.com/Expensify/App/issues/31334@LLPeckham
(Product Manager) - https://github.com/Expensify/App/issues/31335@tgolen
(Generalist) - https://github.com/Expensify/App/issues/31336@danielrvidal
(Generalist) - https://github.com/Expensify/App/issues/31337@heyjennahay
(Accounting Technical Team) - https://github.com/Expensify/App/issues/31338@joaniew
(Marketing Team) - https://github.com/Expensify/App/issues/31339Woohoo the high level is out for review 🚀
I have read and reviewed this Design Doc!
I have read and reviewed this Design Doc!
I have read and reviewed this Design Doc!
I have read and reviewed this Design Doc!
I have read and reviewed this Design Doc!
I have read and reviewed this Design Doc!
I have read and reviewed this Design Doc!
@shawnborton may I please have a mockup for how the MoneyRequestPreview will look for a split distance request?
Here's the current split preview
Here's a distance request preview
I responded to all the comments on the doc and made some updates based on feedback. I'll take another look tomorrow. If there are still blocking conversations on Monday then I'll bring them to slack.
I have read and reviewed this Design Doc!
I think that would look something like this. Does that look right @trjExpensify? cc @Expensify/design
Yep, I think that's right. IIRC, there was another issue somewhere about making sure the comment/merchant text field scales down if it's getting too long, so I don't think we need to necessarily do anything here with this implementation.
Though actually, @neil-marcellini, with the changes in this doc we're somewhat combining the distance
and rate
field here on the preview component. Is that cool? Otherwise it would be just 3.44 miles
?
@shawnborton That looks right to me.
@joaniew and I chatted about a marketing approach yesterday, she's continuing the conversation in Slack.
DESIGN DOC ➡️
Proposal
Proposal: Add support for P2P distance requests
Problem: Expensify makes it easy to request money from a friend, split a dinner receipt with a group, or request reimbursement for a company expense. We are also building a seamless bottom up flow in wave 6 to upgrade P2P requests into a workspace requests. No matter the request type, everything is possible; except for distance requests, which can only be sent to workspaces. Not only does this create an inconsistent and confusing UX for requesting money, but the bottom up flow will also be limited to manual and scan requests. We will miss out on converting distance request users from free to paid plans, losing out on valuable revenue.
Solution: Add support for P2P distance requests whether you’re requesting from a friend, splitting expenses for a road trip, or introducing your boss to the power of Expensify for distance tracking.
Posted in #whatsnext here on 10/24/23
Long version
Hey everyone! I'm excited to move forward with this project after the[ #whatsnext post](https://expensify.slack.com/archives/CC7NECV4L/p1698164341635109). Here is the expanded proposal. Proposal: Enable P2P distance requests so that the bottom up flow works for all expense types. Strategy: If someone hears about Expensify (from chalk on a sidewalk or seeing the logo as a prestigious racing sponsor), our viral growth model can convert that curious onlooker into a paying customer. No matter the type of expense they want to create: a simple request, scanning a receipt, or tracking distance; the user can jump into the app and get started. Select the start and finish points, choose who you want to send it to, and be done. When the new user's boss gets the request they click the big green "Pay" button and can select "Business bank account". As described in the[ wave 6 basic bottom up flow](https://docs.google.com/document/d/1pFEepu3ih7_NxPxudIXMa5KMF8POp4IM-ZIcANS8srY/edit), that kicks off an elegant process of creating a workspace, starting a free trial, setting up the bank account, and moving the request over to the workspace chat. Of course, the receiver may also be your carpool buddy that is a bit too comfortable with getting a ride to work everyday; or you might split the cost of your road trip with friends. The possibilities are endless with a super app, after all. Problem: Expensify makes it easy to request money from a friend, split a dinner receipt with a group, or request reimbursement for a company expense. We are also building a seamless bottom up flow in wave 6 to upgrade P2P requests into workspace requests. No matter the request type, everything is possible; except for distance requests, which can only be sent to workspaces. Not only does this create an inconsistent and confusing UX for requesting money, but the bottom up flow will also be limited to manual and scan requests. We will miss out on converting distance request users from free to paid plans, losing out on valuable revenue. If a user hears about Expensify's distance tracking feature and wants to try it out they will jump into the app, click the green plus, request money, select distance, enter their waypoints and click next. So far they are dazzled by the ease of use and our fancy Mapbox animations. However, on the next page, they enter the email address of the person who owes reimbursement for their trip, and they see a little error message saying that distance requests can only be sent to a workspace. "Huh, that's weird. What am I supposed to do now?", they think. Confused, they close the app and never come back. Solution: Enable P2P distance requests whether you’re requesting from a friend, splitting expenses for a road trip, or introducing your boss to the power of Expensify for distance tracking. First, allow individuals to be selected, as well as split with. The existing distance field can be separated into distance and rate fields on the confirmation screen; which is the last step before creating the request. The user can click “Rate” to input the rate amount and unit. It will be saved to the user's personal workspace, making it sticky for subsequent requests. An added benefit is that the user doesn't have to configure the rate separately in settings. For workspace requests the rate will also be displayed, but it will not be editable because it comes from the workspace settings and can only be changed by admins. On the backend the basic operations and format stay the same. We will extend the existing P2P and split functionality to work with distance transactions. Distance requests already use the same underlying function as the rest of the expense types, so it's mostly a matter of setting up additional parameters. Along the way there will be close collaboration with the wave 6 bottom up flow team, to ensure that our designs mesh well out of the box. The test steps will focus on the upgrade flow for distance requests since that's the most important part of the solution. Please keep an eye out in[ #wave5-free-submitters](https://expensify.enterprise.slack.com/archives/C05DWUDHVK7) for a pre-design coming soon! Best, NeilEmailed to strategy@expensify.com on 11/6/23 with the subject
Proposal: Enable P2P distance requests so that the bottom up flow works for all expense types.
Tasks
#whatsnext
strategy@expensify.com
and paste in the Proposalstrategy@expensify.com
(continue the same email chain as before) with the link to your Design Docstategy@expensify.com
again with links to the doc and pre-design conversation in SlackDesignDocReview
label to get the High-level of proposed solution section reviewedDesignDocReview
label to this issuestrategy@expensify.com
one last time to let them know the Design Doc is moving into the implementation phasestrategy@expensify.com
once everything has been implemented and do a Project Wrap-Up retrospective that provides:Issue Owner
Current Issue Owner: @neil-marcellini