Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TRACKING] Enable P2P distance requests #23291

Open
19 of 22 tasks
JmillsExpensify opened this issue Jul 20, 2023 · 191 comments
Open
19 of 22 tasks

[TRACKING] Enable P2P distance requests #23291

JmillsExpensify opened this issue Jul 20, 2023 · 191 comments
Assignees
Labels
Design Distance Wave5-free-submitters NewFeature Something to build that is a new item. Weekly KSv2

Comments

@JmillsExpensify
Copy link

JmillsExpensify commented Jul 20, 2023

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

  • Post Proposal (full Problem/Solution statement) in #whatsnext
  • Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
    16 up / 22 total = 72% approval
  • Paste Proposal in the space above with a link to the Slack thread
  • Email strategy@expensify.com and paste in the Proposal
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email strategy@expensify.com (continue the same email chain as before) with the link to your Design Doc
  • Host a pre-design meeting (example) in an appropriate slack channel to discuss any necessary details in public before filling out the High-level of proposed solution section. Posted here on 11/8/23
  • Fill out the High-level of proposed solution section
  • Email stategy@expensify.com again with links to the doc and pre-design conversation in Slack
  • Add the DesignDocReview label to get the High-level of proposed solution section reviewed
  • Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Host another pre-design meeting in the appropriate slack channel to ask for engineering feedback on the technical solution. Posted in Slack here on 12/27/23.
  • Additional high level re-design conversation
  • Fill out the Detailed implementation of the solution and related sections.
  • Re-add the DesignDocReview label to this issue
  • Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Email strategy@expensify.com one last time to let them know the Design Doc is moving into the implementation phase
  • Implement the changes - Implementation started on 2/20/24
  • Add regression tests so that QA can test your feature with every deploy (instructions)
  • Send out a follow up email to strategy@expensify.com once everything has been implemented and do a Project Wrap-Up retrospective that provides:
    • Summary of what we accomplished with this project
    • What went well?
    • What could we have done better?
    • What did we learn?
Issue OwnerCurrent Issue Owner: @neil-marcellini
@JmillsExpensify JmillsExpensify added the NewFeature Something to build that is a new item. label Jul 20, 2023
@JmillsExpensify JmillsExpensify self-assigned this Jul 20, 2023
@melvin-bot
Copy link

melvin-bot bot commented Jul 20, 2023

@melvin-bot melvin-bot bot added the Weekly KSv2 label Jul 20, 2023
@melvin-bot
Copy link

melvin-bot bot commented Jul 20, 2023

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

@JmillsExpensify
Copy link
Author

Still not a priority.

@melvin-bot melvin-bot bot removed the Overdue label Aug 2, 2023
@neil-marcellini
Copy link
Contributor

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

@melvin-bot melvin-bot bot added the Overdue label Aug 10, 2023
@JmillsExpensify
Copy link
Author

Definitely not critical.

@melvin-bot melvin-bot bot removed the Overdue label Aug 16, 2023
@melvin-bot melvin-bot bot added the Overdue label Aug 25, 2023
@JmillsExpensify
Copy link
Author

Still not a priority.

@JmillsExpensify
Copy link
Author

I need to prioritize this one this week.

@melvin-bot melvin-bot bot removed the Overdue label Sep 13, 2023
@tgolen
Copy link
Contributor

tgolen commented Sep 15, 2023

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

  • Allowing you to select an individual when requesting a distance expense? (I think you can already do this)
  • Adding the option to the composers "+" menu (ie. NOT the global "+" menu) when in a DM?
  • Do we need to do anything for the payment side of things?

@melvin-bot melvin-bot bot added the Overdue label Sep 21, 2023
@JmillsExpensify
Copy link
Author

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

@melvin-bot melvin-bot bot removed the Overdue label Sep 25, 2023
@tgolen
Copy link
Contributor

tgolen commented Sep 25, 2023

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

@melvin-bot melvin-bot bot added the Overdue label Oct 3, 2023
@melvin-bot melvin-bot bot added the Overdue label Aug 1, 2024
@neil-marcellini
Copy link
Contributor

neil-marcellini commented Aug 2, 2024

The bottom up flow has been implemented and deployed on the backend. I created a separate issue to get it working on the frontend, which shouldn't be too much work. Today I will work on making any updates needed to get the frontend distance splits PR through review.

I also completed [P2P Distance] Create the UpdateMileageRates chore today.

Here is all that remains.

@melvin-bot melvin-bot bot removed the Overdue label Aug 2, 2024
@melvin-bot melvin-bot bot added the Overdue label Aug 12, 2024
@neil-marcellini
Copy link
Contributor

Things are moving along well. The distance splits went out on the frontend recently, as well as updating the rate. The frontend RBR logic is underway, but the contributor found an issue with the violations coming from the backend. I'm pretty sure that issues lies in Web-E and I hope to fix it later this week to unblock him.

I'm going to do a search now for all the P2P distance related bugs, since a few popped up recently, and I will add them to the out-dated project just for tracking purposes. After we get everything finished and the bugs cleared up I will start running through the manual tests from the doc and create any additional bugs as needed. After that we can remove the beta, someday.

@melvin-bot melvin-bot bot removed the Overdue label Aug 13, 2024
@neil-marcellini
Copy link
Contributor

I didn't add the issues to the project since some are related to other projects, but I found a ton of existing issues and put [P2P Distance] in the title. All P2P distance issues can be found here

@neil-marcellini
Copy link
Contributor

Head's up, I'll be working 50% for the rest of this week and next 🌲

@melvin-bot melvin-bot bot added the Overdue label Aug 23, 2024
@neil-marcellini
Copy link
Contributor

I fixed tracking an expense on a workspace with a custom rate this week. I also helped a few conversations progress. Currently working on E[$250] [P2P Distance] Add RBR logic for the bottom up flow.

@melvin-bot melvin-bot bot removed the Overdue label Aug 23, 2024
@melvin-bot melvin-bot bot added the Overdue label Sep 2, 2024
@neil-marcellini
Copy link
Contributor

neil-marcellini commented Sep 3, 2024

I got a chance to chat about this project with Tom in a fist bump meeting last week, and we decided it would be a good idea to evaluate the remaining bugs, test the core flows, and as long as that's solid enough launch it (remove the beta) even though there are some edge case bugs. That will free up the ability to choose a non-default workspace rate.

I'm going to set a reminder to work on this tomorrow.

@melvin-bot melvin-bot bot removed the Overdue label Sep 3, 2024
@carlosmiceli
Copy link
Contributor

@neil-marcellini Hey man, wanna chat and see if I can give you a hand with some bugs in the next few days? I'm starting to wrap up the homepage, and may dedicate about 50% of my bandwidth to helping with bugs for our new features / 50% to leading the implementation of another feature (most likely Workspace Downgrades).

@neil-marcellini
Copy link
Contributor

That would be great yeah! It would be wonderful if you could pick up this internal issue [$250] [P2P Distance] Split - Incorrect amount & distance behavior when changing distance on confirm page offline

@carlosmiceli
Copy link
Contributor

Sounds great! I'll let you know if I have any questions 👍

@neil-marcellini
Copy link
Contributor

neil-marcellini commented Sep 4, 2024

I went through all app issues that mention "distance" and added [P2P Distance] to the title. There was only one I had missed. There a good number of distance issues that are unrelated to P2P distance specifically so we can ignore those problems.

Here are the currently existing issues. For each one I will evaluate whether it should block the launch with 🛑 for blocking or 🟢 . I've organized the blockers to the top of this list in rough order of priority

Issues under review

Yeesh ok that took a while. Let's focus on getting all that fixed first, then I can do a run through of all the manual testing steps.

@neil-marcellini
Copy link
Contributor

#47153

I merged the App PR for this so it should be fixed when that hits prod on Monday. The issue that was blocking it also happens on main, and I asked the contributor to report it, so there will probably be another issue to solve but I don't think it will need to be a blocker for this project.

@neil-marcellini
Copy link
Contributor

Backend and frontend PRs are under review for #46753. Next up I will work on the inconsistency issues.

@melvin-bot melvin-bot bot added the Overdue label Sep 18, 2024
@neil-marcellini
Copy link
Contributor

I'll work on this issue today. E[$250] Distance - Inconsistency in showing unit in preview and transaction thread after updating unit.

On Tuesday I chatted with Vit about it and he reminded be about the originalMerchant, which should have the right format to extract and store the unit on the transaction.

@melvin-bot melvin-bot bot removed the Overdue label Sep 19, 2024
@melvin-bot melvin-bot bot added the Overdue label Sep 27, 2024
@neil-marcellini
Copy link
Contributor

I haven't gotten any feedback on the plan for that issue yet, so I just tagged some folks in Slack. I'll check back in next week. I've been focused on some other weekly issues instead, but luckily the external stuff is still moving along. I'll try to squeeze in an update on this issue soon, since I don't think it needs to be blocked anymore #46844

@melvin-bot melvin-bot bot removed the Overdue label Sep 27, 2024
@neil-marcellini neil-marcellini changed the title [TRACKING] [MEDIUM] Enable P2P distance requests [TRACKING] Enable P2P distance requests Oct 2, 2024
@melvin-bot melvin-bot bot added the Overdue label Oct 7, 2024
@neil-marcellini
Copy link
Contributor

I'm still working to finish off [$250] Distance - Inconsistency in showing unit in preview and transaction thread after updating unit. It's going to take a few more PRs.

The contributor is still fixing various bugs in the PR for this issue [$250][P2P Distance] Rate currency doesn't match expense currency

It's moving along very slowly and surely.

@melvin-bot melvin-bot bot removed the Overdue label Oct 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Design Distance Wave5-free-submitters NewFeature Something to build that is a new item. Weekly KSv2
Projects
No open projects
Development

No branches or pull requests