Expensify / App

Welcome to New Expensify: a complete re-imagination of financial collaboration, centered around chat. Help us build the next generation of Expensify by sharing feedback and contributing to the code.
https://new.expensify.com
MIT License
3.09k stars 2.59k forks source link

[TRACKING] [MEDIUM] Enable P2P distance requests #23291

Open JmillsExpensify opened 11 months ago

JmillsExpensify commented 11 months ago

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, Neil

Emailed 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

Issue OwnerCurrent Issue Owner: @neil-marcellini
melvin-bot[bot] commented 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.

melvin-bot[bot] commented 11 months ago

Triggered auto assignment to Design team member for new feature review - @shawnborton (NewFeature)

JmillsExpensify commented 10 months ago

Still not a priority.

neil-marcellini commented 10 months ago

I don't think this is critical, I would say it's more polish right? If it's critical for smallbizexpo, why?

JmillsExpensify commented 10 months ago

Definitely not critical.

JmillsExpensify commented 10 months ago

Still not a priority.

JmillsExpensify commented 9 months ago

I need to prioritize this one this week.

tgolen commented 9 months ago

Do we have an idea of what exactly needs to happen to the product to enable this? Is it:

JmillsExpensify commented 9 months ago

The main change required is adding a Rate row, such that the distance rate can be updated at any time during creation.

tgolen commented 9 months ago

OK, can you please update the title and the OP to reflect that?

JmillsExpensify commented 8 months ago

Updated the OP with further details.

JmillsExpensify commented 8 months ago

I believe that the next step is that Neil will update this issue with more detailed considerations before implementing.

neil-marcellini commented 8 months ago

Yep, I plan to work on that for a bit today

neil-marcellini commented 8 months ago

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:

neil-marcellini commented 8 months ago

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.

tgolen commented 8 months ago

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.

JmillsExpensify commented 8 months ago

What's Next post is live.

neil-marcellini commented 7 months ago

I updated this issue with the project template and I started drafting an expanded proposal to send out to strategy@.

neil-marcellini commented 7 months ago

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.

melvin-bot[bot] commented 7 months ago

@JmillsExpensify, @neil-marcellini Whoops! This issue is 2 days overdue. Let's get this updated quick!

neil-marcellini commented 7 months ago

I'm planning to send out the proposal today and write up the high level pre-design.

neil-marcellini commented 7 months ago

I just sent the pre-design out to the room!

neil-marcellini commented 7 months ago

The pre-design went well and I'm going to start writing the high level design.

neil-marcellini commented 7 months ago

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.

melvin-bot[bot] commented 7 months ago

Triggered auto assignment to @shawnborton (Design), see these Stack Overflow questions for more details.

neil-marcellini commented 7 months ago

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.

melvin-bot[bot] commented 7 months ago

@JmillsExpensify, @shawnborton, @neil-marcellini Whoops! This issue is 2 days overdue. Let's get this updated quick!

melvin-bot[bot] commented 7 months ago

@JmillsExpensify, @shawnborton, @neil-marcellini Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

melvin-bot[bot] commented 7 months ago

@JmillsExpensify, @shawnborton, @neil-marcellini Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

neil-marcellini commented 7 months ago

I was OOO Friday but I'm back now and this is my top focus.

shawnborton commented 7 months ago

Added some mocks for you!

neil-marcellini commented 7 months ago

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

neil-marcellini commented 7 months ago

To do before sending the high level

neil-marcellini commented 7 months ago

I assigned James for marketing since he said he can help.

melvin-bot[bot] commented 7 months ago

: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.


neil-marcellini commented 7 months ago

Woohoo the high level is out for review 🚀

tgolen commented 7 months ago

I have read and reviewed this Design Doc!

bfitzexpensify commented 7 months ago

I have read and reviewed this Design Doc!

sakluger commented 7 months ago

I have read and reviewed this Design Doc!

trjExpensify commented 7 months ago

I have read and reviewed this Design Doc!

jliexpensify commented 7 months ago

I have read and reviewed this Design Doc!

LLPeckham commented 7 months ago

I have read and reviewed this Design Doc!

heyjennahay commented 7 months ago

I have read and reviewed this Design Doc!

neil-marcellini commented 7 months ago

@shawnborton may I please have a mockup for how the MoneyRequestPreview will look for a split distance request?

Here's the current split preview image

Here's a distance request preview image

neil-marcellini commented 7 months ago

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.

danielrvidal commented 7 months ago

I have read and reviewed this Design Doc!

shawnborton commented 7 months ago

I think that would look something like this. Does that look right @trjExpensify? cc @Expensify/design

CleanShot 2023-11-17 at 10 19 57@2x
trjExpensify commented 7 months ago

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?

dannymcclain commented 7 months ago

@shawnborton That looks right to me.

jamesdeanexpensify commented 7 months ago

@joaniew and I chatted about a marketing approach yesterday, she's continuing the conversation in Slack.