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

[HOLD for payment 2024-10-16] [$250] Update beginningOfChatHistory for certain cases with fresh copy #47427

Closed
jamesdeanexpensify opened this issue Aug 14, 2024 · 69 comments
Assignees
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Daily KSv2 External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item.

Comments

@jamesdeanexpensify
Copy link
Contributor

jamesdeanexpensify commented Aug 14, 2024

Problem

New users often write in confused about how to use New Expensify. Key points of confusion still seem to be “How do I submit expenses?” or “How do I use this?” or are just unclear why they are looking at a chat platform. They then become frustrated or just leave us all together.

Solution

Update the beginningOfChatHistory copy in all rooms to be clearer and more concise, as well as remove any noise around features that don’t lead to conversion.

P/S is also here in Slack.

Copy updates

Type Current example Proposed copy
Concierge This is the beginning of your chat with Concierge. This chat is with Concierge. Ask questions and get 24/7 realtime support.
DM (aka beginningOfChatHistory) This is the beginning of your chat with Daniel Vidal. You can also use the + button to split an expense, submit an expense, pay expenses, or assign a task! This chat is with [recipient]. Use the + button to split, submit, or pay an expense.
Group chat (can’t find this in the code) This is the beginning of your chat with Anu, Daniel and James. This chat is with [recipients that don't include you]. Use the + button to split an expense.
Workspace chat (aka beginningOfChatHistoryPolicyExpenseChat) Collaboration between James Dean (Marketing/PR) and NewDot Test - Expensify US starts here! 🎉 This is the place to chat, submit expenses and settle up. You can also use the + button to split an expense, submit an expense, track an expense, or assign a task! This is where [submitter] will submit expenses to [workspaceName]. Just use the + button.
#announce room (aka beginningOfChatHistoryAnnounceRoom) Collaboration between all Expensify's Workspace 6 members starts here! 🎉 Use #announce to chat about anything Expensify's Workspace 6 related. This chat is with everyone in [workspaceName]. Use it for the most important announcements.
#admins room (aka beginningOfChatHistoryAdminRoom) Collaboration among james@expensify.com Small Business Expo admins starts here! 🎉 Use #admins to chat about topics such as workspace configurations and more. This chat is with [workspaceName] admins. Use it to chat about workspace setup and more.
Domain room (aka beginningOfChatHistoryDomainRoom) Collaboration with everyone at #expensify.com starts here! 🎉 Use #expensify.com to chat with colleagues, share tips, and ask questions. This chat is with all Expensify members on the [domain] domain. Use it to chat with colleagues, share tips, and ask questions.
User-created room (aka beginningOfChatHistoryUserRoom) Collaboration starts here! 🎉 Use this space to chat about anything #bravo-clubhouse related. This chat room is for anything #[roomName] related. It was created by [displayName].
Invoice room (aka beginningOfChatHistoryInvoiceRoom) Collaboration starts here! 🎉 Use this room to view, discuss, and pay invoices. This chat is for invoices between [invoice sender/bill payer workspaceName] and [invoice/paid bill receiver workspaceName OR displayName]. Use the + button to send an invoice.

Important

We need to make sure that the beginningOfChatHistory never gets replaced by a custom roomDescription if someone sets one. The roomDescription will instead be included/updated elsewhere (in the subheader).

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~021831355584440701165
  • Upwork Job ID: 1831355584440701165
  • Last Price Increase: 2024-09-04
  • Automatic offers:
    • ikevin127 | Reviewer | 103838820
    • nkdengineer | Contributor | 104176525
Issue OwnerCurrent Issue Owner: @VictoriaExpensify
@jamesdeanexpensify jamesdeanexpensify added the Planning Changes still in the thought process label Aug 14, 2024
@jamesdeanexpensify jamesdeanexpensify self-assigned this Aug 14, 2024
@jamesdeanexpensify jamesdeanexpensify changed the title Update beginningOfChatHistory for certain cases with fresh copy [HOLD] Update beginningOfChatHistory for certain cases with fresh copy Aug 14, 2024
@danielrvidal
Copy link
Contributor

@jamesdeanexpensify, what do you think is still needed for this? Just to get an engineer to pick it up or do we need to keep fleshing out the proposal?

@jamesdeanexpensify
Copy link
Contributor Author

Just left you a comment in the doc, and then it would be great to get an engineer to pick it up and ask any remaining questions. I just thought you wanted to wait to house it under the F1 deadline.

@jamesdeanexpensify jamesdeanexpensify changed the title [HOLD] Update beginningOfChatHistory for certain cases with fresh copy Update beginningOfChatHistory for certain cases with fresh copy Aug 19, 2024
@jamesdeanexpensify
Copy link
Contributor Author

@danielrvidal I think this is ready for an engineer whenever!

@danielrvidal
Copy link
Contributor

@jamesdeanexpensify now that this is in a whatsnext room/project, I imagine you should be able to recruit an engineer. I'm going to drop an update in the room but I think you should be good to go.

@jamesdeanexpensify
Copy link
Contributor Author

Posted here as a next step!

@melvin-bot melvin-bot bot added the Overdue label Aug 29, 2024
@jamesdeanexpensify
Copy link
Contributor Author

Renewed the convo here.

@melvin-bot melvin-bot bot removed the Overdue label Sep 3, 2024
@jamesdeanexpensify jamesdeanexpensify added Daily KSv2 External Added to denote the issue can be worked on by a contributor and removed Weekly KSv2 labels Sep 3, 2024
Copy link

melvin-bot bot commented Sep 4, 2024

Job added to Upwork: https://www.upwork.com/jobs/~021831355584440701165

@melvin-bot melvin-bot bot changed the title Update beginningOfChatHistory for certain cases with fresh copy [$250] Update beginningOfChatHistory for certain cases with fresh copy Sep 4, 2024
@melvin-bot melvin-bot bot added the Help Wanted Apply this label when an issue is open to proposals by contributors label Sep 4, 2024
Copy link

melvin-bot bot commented Sep 4, 2024

Triggered auto assignment to Contributor-plus team member for initial proposal review - @ikevin127 (External)

@mariapeever
Copy link

Proposal

Please re-state the problem that we are trying to solve in this issue.

Update beginningOfChatHistory for certain cases with fresh copy #47427

What is the root cause of that problem?

Current copy is not clear enough for new Expensify users.

What changes do you think we should make in order to solve the problem?

Update the current copy to match the proposed copy.
Updates to the language file (en.ts):

  • Concierge - add a beginningOfChatHistoryConcierge property specific for Concierge just before beginningOfChatHistory.

  • DM (aka beginningOfChatHistory) - update the beginningOfChatHistory property and add a participantNames param.

  • Group chat - Count the participants' names for a group chat and re-use the beginningOfChatHistory property

    beginningOfChatHistory: 'This is the beginning of your chat with ',

    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistory');
    const participantAccountIDs = ReportUtils.getParticipantsAccountIDsForDisplay(report);
    const isMultipleParticipant = participantAccountIDs.length > 1;
    const displayNamesWithTooltips = ReportUtils.getDisplayNamesWithTooltips(
    OptionsListUtils.getPersonalDetailsForAccountIDs(participantAccountIDs, allPersonalDetails),
    isMultipleParticipant,
    );
    const displayNamesWithTooltipsText = displayNamesWithTooltips
    .map(({displayName, pronouns}, index) => {
    const formattedText = !pronouns ? displayName : `${displayName} (${pronouns})`;
    if (index === displayNamesWithTooltips.length - 1) {
    return `${formattedText}.`;
    }
    if (index === displayNamesWithTooltips.length - 2) {
    return `${formattedText} ${Localize.translateLocal('common.and')}`;
    }
    if (index < displayNamesWithTooltips.length - 2) {
    return `${formattedText},`;
    }
    return '';
    })
    .join(' ');
    welcomeMessage.messageText = `${welcomeMessage.phrase1} ${displayNamesWithTooltipsText}`;

  • Workspace chat (aka beginningOfChatHistoryPolicyExpenseChat) - Combine the beginningOfChatHistoryPolicyExpenseChat parts 1-3 into 1 and add parameters for participantName and policyName.
    - beginningOfChatHistoryPolicyExpenseChatPartOne
    - beginningOfChatHistoryPolicyExpenseChatPartTwo
    - beginningOfChatHistoryPolicyExpenseChatPartThree

    App/src/languages/en.ts

    Lines 604 to 606 in c885f96

    beginningOfChatHistoryPolicyExpenseChatPartOne: 'Collaboration between ',
    beginningOfChatHistoryPolicyExpenseChatPartTwo: ' and ',
    beginningOfChatHistoryPolicyExpenseChatPartThree: ' starts here! 🎉 This is the place to chat, submit expenses and settle up.',

    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryPolicyExpenseChatPartOne');
    welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryPolicyExpenseChatPartTwo');
    welcomeMessage.phrase3 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryPolicyExpenseChatPartThree');
    welcomeMessage.messageText = `${welcomeMessage.phrase1} ${ReportUtils.getDisplayNameForParticipant(report?.ownerAccountID)} ${welcomeMessage.phrase2} ${ReportUtils.getPolicyName(
    report,
    )} ${welcomeMessage.phrase3}`;

  • #announce room (aka beginningOfChatHistoryAnnounceRoom) - Combine the beginningOfChatHistoryAnnounceRoom parts 1-2 into 1 with a parameters for workspaceName and reportName.
    - beginningOfChatHistoryAnnounceRoomPartOne
    - beginningOfChatHistoryAnnounceRoomPartTwo

    App/src/languages/en.ts

    Lines 597 to 599 in c885f96

    beginningOfChatHistoryAnnounceRoomPartOne: ({workspaceName}: BeginningOfChatHistoryAnnounceRoomPartOneParams) =>
    `Collaboration between all ${workspaceName} members starts here! 🎉\nUse `,
    beginningOfChatHistoryAnnounceRoomPartTwo: ({workspaceName}: BeginningOfChatHistoryAnnounceRoomPartTwo) => ` to chat about anything ${workspaceName} related.`,

    } else if (ReportUtils.isAnnounceRoom(report)) {
    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAnnounceRoomPartOne', {workspaceName});
    welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAnnounceRoomPartTwo', {workspaceName});

  • #admins room (aka beginningOfChatHistoryAdminRoom) - Combine the beginningOfChatHistoryAdminRoom parts 1-2 into 1 with a parameters for workspaceName and reportName.
    - beginningOfChatHistoryAdminRoomPartOne
    - beginningOfChatHistoryAdminRoomPartTwo

    App/src/languages/en.ts

    Lines 595 to 596 in c885f96

    beginningOfChatHistoryAdminRoomPartOne: ({workspaceName}: BeginningOfChatHistoryAdminRoomPartOneParams) => `Collaboration among ${workspaceName} admins starts here! 🎉\nUse `,
    beginningOfChatHistoryAdminRoomPartTwo: ' to chat about topics such as workspace configurations and more.',

    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminRoomPartOne', {workspaceName});
    welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryAdminRoomPartTwo');

  • Domain room (aka beginningOfChatHistoryDomainRoom) - Combine the beginningOfChatHistoryDomainRoom parts 1-2 into 1 with a parameter for domainRoom.
    - beginningOfChatHistoryDomainRoomPartOne
    - beginningOfChatHistoryDomainRoomPartTwo

    App/src/languages/en.ts

    Lines 593 to 594 in c885f96

    beginningOfChatHistoryDomainRoomPartOne: ({domainRoom}: BeginningOfChatHistoryDomainRoomPartOneParams) => `Collaboration with everyone at ${domainRoom} starts here! 🎉\nUse `,
    beginningOfChatHistoryDomainRoomPartTwo: ' to chat with colleagues, share tips, and ask questions.',

    } else if (ReportUtils.isDomainRoom(report)) {
    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryDomainRoomPartOne', {domainRoom: report?.reportName ?? ''});
    welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryDomainRoomPartTwo');

  • User-created room (aka beginningOfChatHistoryUserRoom) - Combine the beginningOfChatHistoryUserRoom parts 1-2 into 1 with a parameter for reportName.
    - beginningOfChatHistoryDomainRoomPartOne
    - beginningOfChatHistoryDomainRoomPartTwo

    App/src/languages/en.ts

    Lines 593 to 594 in c885f96

    beginningOfChatHistoryDomainRoomPartOne: ({domainRoom}: BeginningOfChatHistoryDomainRoomPartOneParams) => `Collaboration with everyone at ${domainRoom} starts here! 🎉\nUse `,
    beginningOfChatHistoryDomainRoomPartTwo: ' to chat with colleagues, share tips, and ask questions.',

    } else {
    // Message for user created rooms or other room types.
    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryUserRoomPartOne');
    welcomeMessage.phrase2 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryUserRoomPartTwo');

  • Invoice room (aka beginningOfChatHistoryInvoiceRoom) - Edit the beginningOfChatHistoryInvoiceRoom property and add params for invoice sender/bill payer workspaceName and invoice/paid bill receiver workspaceName OR displayName
    - beginningOfChatHistoryInvoiceRoom

    beginningOfChatHistoryInvoiceRoom: 'Collaboration starts here! 🎉 Use this room to view, discuss, and pay invoices.',

    } else if (ReportUtils.isInvoiceRoom(report)) {
    welcomeMessage.showReportName = false;
    welcomeMessage.phrase1 = Localize.translateLocal('reportActionsView.beginningOfChatHistoryInvoiceRoom');

welcomeMessage.messageText = `${welcomeMessage.phrase1} ${welcomeMessage.showReportName ? ReportUtils.getReportName(report) : ''} ${welcomeMessage.phrase2 ?? ''}`;

What alternative solutions did you explore? (Optional)

N/A

@nkdengineer
Copy link
Contributor

Proposal

Please re-state the problem that we are trying to solve in this issue.

Update beginningOfChatHistory for certain cases with fresh copy

What is the root cause of that problem?

This is a new feature

What changes do you think we should make in order to solve the problem?

  • concierge chat, we can create a new translation for this one as per the description above or we can still use beginningOfChatHistory and create a new translation text for the additional text Ask questions and get 24/7 realtime support. and add it here if the report is concierge.

{(moneyRequestOptions.includes(CONST.IOU.TYPE.PAY) || moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT) || moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)) && (

  • DM chat and group chat, we can update beginningOfChatHistory translation as the description to This chat is with and then update usePlusButton to \nUse the + button to ${additionalText}, or assign a task!

beginningOfChatHistory: 'This is the beginning of your chat with ',

usePlusButton: ({additionalText}: UsePlusButtonParams) => `\nYou can also use the + button to ${additionalText}, or assign a task!`,

OPTIONAL: We can remove or assign a task text.

  • Policy expense chat: update three phrase beginningOfChatHistoryPolicyExpenseChat translations as the description
beginningOfChatHistoryPolicyExpenseChatPartOne: 'This is where ',
beginningOfChatHistoryPolicyExpenseChatPartTwo: ' will submit expenses to the ',
beginningOfChatHistoryPolicyExpenseChatPartThree: ' workspace. Just use the + button.',

App/src/languages/en.ts

Lines 604 to 607 in cb2bdf2

beginningOfChatHistoryPolicyExpenseChatPartOne: 'Collaboration between ',
beginningOfChatHistoryPolicyExpenseChatPartTwo: ' and ',
beginningOfChatHistoryPolicyExpenseChatPartThree: ' starts here! 🎉 This is the place to chat, submit expenses and settle up.',
beginningOfChatHistorySelfDM: 'This is your personal space. Use it for notes, tasks, drafts, and reminders.',

  • Admin room and announce room: Update two phrase of the beginningOfChatHistoryAnnounceRoom translation and beginningOfChatHistoryAdminRoom as the description

App/src/languages/en.ts

Lines 595 to 599 in cb2bdf2

beginningOfChatHistoryAdminRoomPartOne: ({workspaceName}: BeginningOfChatHistoryAdminRoomPartOneParams) => `Collaboration among ${workspaceName} admins starts here! 🎉\nUse `,
beginningOfChatHistoryAdminRoomPartTwo: ' to chat about topics such as workspace configurations and more.',
beginningOfChatHistoryAnnounceRoomPartOne: ({workspaceName}: BeginningOfChatHistoryAnnounceRoomPartOneParams) =>
`Collaboration between all ${workspaceName} members starts here! 🎉\nUse `,
beginningOfChatHistoryAnnounceRoomPartTwo: ({workspaceName}: BeginningOfChatHistoryAnnounceRoomPartTwo) => ` to chat about anything ${workspaceName} related.`,

  • Domain room: Update the beginningOfChatHistoryDomainRoom translation as the description with domain param is the report.reportName

App/src/languages/en.ts

Lines 593 to 594 in cb2bdf2

beginningOfChatHistoryDomainRoomPartOne: ({domainRoom}: BeginningOfChatHistoryDomainRoomPartOneParams) => `Collaboration with everyone at ${domainRoom} starts here! 🎉\nUse `,
beginningOfChatHistoryDomainRoomPartTwo: ' to chat with colleagues, share tips, and ask questions.',

  • User-created room: Update two phrases the beginningOfChatHistoryUserRoom translation as the description

App/src/languages/en.ts

Lines 600 to 601 in cb2bdf2

beginningOfChatHistoryUserRoomPartOne: 'Collaboration starts here! 🎉\nUse this space to chat about anything ',
beginningOfChatHistoryUserRoomPartTwo: ' related.',

  • Invoice room: Update the beginningOfChatHistoryInvoiceRoom translation as the description with two extra params invoice sender/bill payer workspaceName is the display name of the user that is invited to the invoice room and invoice/paid bill receiver workspaceName OR displayName is the display name user that creates the send invoice or the workspace name of the workspace that we create the send invoice.

For all translations, we should update the all places that we use this translation if the param is changed.

We need to make sure that the beginningOfChatHistory never gets replaced by a custom roomDescription if someone sets one. The roomDescription will instead be included/updated elsewhere (in the subheader).

We already have handled this in getRoomWelcomeMessage function

What alternative solutions did you explore? (Optional)

@AsfandSoomro
Copy link

Proposal

Please re-state the problem that we are trying to solve in this issue.

Update beginningOfChatHistory for certain cases with fresh copy

What is the root cause of that problem?

Chat header message is not clear to new users

What changes do you think we should make in order to solve the problem?

First of all we need to re-code all beginningOfChatHistory(all) data in reportActionsView object in a clear and consistent way. They all need to accept arguments if they need dynamic message so we can pass (e.g workspace name, recipient name, or multiple recipients names etc) rather than the current PartOne PartTwo PartThree different keys. This will be more flexible and easier to change the message in future.
Something like this: welcomeToRoom: ({roomName}: WelcomeToRoomParams) => `Welcome to ${roomName}!`,

Files that will be affected

  • src/languages/en.ts
  • src/languages/es.ts
  • src/libs/SidebarUtils.ts

My approach to solve the problem

  • For Concierge create new key beginningOfChatHistoryConcierge in reportActionsView it won't accept any parameters, just static message. And in getWelcomeMessage() function figure out if the recipient name is Concierge since we don't have a Report util function like this ReportUtils.isSelfDM(report) to check if user is in chatroom with Concierge.
  • For DM same key remains, just dynamic.
  • For Group Chat new dynamic key beginningOfChatHistoryGroupChat. And in getWelcomeMessage() figure out the way to remove the name of the client user before the recipients names message constructor loop.

Similar approach in all others. This way I think messages will be more flexible and easy to change in future as well.

P.S I have only explored Expensify code now and have not contributed to Open Source before. Still reading the contribution.md file

What alternative solutions did you explore? (Optional)

This comment was marked as resolved.

@AsfandSoomro

This comment was marked as resolved.

@ikevin127
Copy link
Contributor

  • [@ikevin127] Please propose regression test steps to ensure the new feature will work correctly on production in further releases.

I don't think we need regression test here since this was copy update, if I'm wrong please let me know.

@jamesdeanexpensify Not sure who's the BZ here for payment but we had 1 regression which was handled in a follow-up PR (#50384), therefore the payment should have a -50% penalty here.

@melvin-bot melvin-bot bot added Daily KSv2 and removed Weekly KSv2 labels Oct 16, 2024
Copy link

melvin-bot bot commented Oct 16, 2024

Issue is ready for payment but no BZ is assigned. @VictoriaExpensify you are the lucky winner! Please verify the payment summary looks correct and complete the checklist. Thanks!

@ikevin127
Copy link
Contributor

cc @VictoriaExpensify Payment details in #47427 (comment).

@ikevin127
Copy link
Contributor

Bumped on Slack thread for payment as well, here's a short summary:

Summary

  • me (reviewer) and merged PR author should get $125 (-50% penalty for 1 regression, see above)
  • I vote for 25% for Maria Peever, meaning $62.5 for their work on the first PR which we did not merge (hopefully still around to get paid)

@VictoriaExpensify
Copy link
Contributor

As discussed in Slack, this is how the payment breakdown will work out:

Everyone is paid via Upwork, fixing this up now

@melvin-bot melvin-bot bot added the Overdue label Oct 23, 2024
@VictoriaExpensify
Copy link
Contributor

Payment summary:
Contributor: @nkdengineer paid $125 via Upwork
Contributor+: @ikevin127 paid $125 via Upwork

@mariapeever I have sent you an offer for the work you did on the initial PR. Once accepted I will approve the payment

Thanks all for getting this fixed up

@ikevin127
Copy link
Contributor

Not overdue, most of the payments were completed - awaiting completion of last payment to contributor once they accept the offer.

@melvin-bot melvin-bot bot removed the Overdue label Oct 23, 2024
Copy link

melvin-bot bot commented Oct 28, 2024

@jamesdeanexpensify, @stitesExpensify, @roryabraham, @VictoriaExpensify, @ikevin127, @nkdengineer Eep! 4 days overdue now. Issues have feelings too...

@melvin-bot melvin-bot bot added the Overdue label Oct 28, 2024
@ikevin127
Copy link
Contributor

Not overdue, most of the payments were completed - awaiting completion of last payment to contributor once they accept the offer.

@melvin-bot melvin-bot bot removed the Overdue label Oct 28, 2024
@ikevin127 ikevin127 removed their assignment Oct 28, 2024
@melvin-bot melvin-bot bot added the Overdue label Oct 31, 2024
Copy link

melvin-bot bot commented Nov 1, 2024

@jamesdeanexpensify, @stitesExpensify, @roryabraham, @VictoriaExpensify, @nkdengineer Whoops! This issue is 2 days overdue. Let's get this updated quick!

@jamesdeanexpensify
Copy link
Contributor Author

What's next here? Thanks!

@melvin-bot melvin-bot bot removed the Overdue label Nov 4, 2024
@melvin-bot melvin-bot bot added the Overdue label Nov 11, 2024
Copy link

melvin-bot bot commented Nov 11, 2024

@jamesdeanexpensify, @stitesExpensify, @roryabraham, @VictoriaExpensify, @nkdengineer 6 days overdue. This is scarier than being forced to listen to Vogon poetry!

@VictoriaExpensify
Copy link
Contributor

Hmm still waiting for @mariapeever to accept my offer. I've bumped her in the Open Source channel and sent her a message in upwork. We'll give her a few more days before we close this out I guess.

@melvin-bot melvin-bot bot removed the Overdue label Nov 12, 2024
@VictoriaExpensify
Copy link
Contributor

Still nothing from Maria. I'll close this out tomorrow if I haven't heard anything

@VictoriaExpensify
Copy link
Contributor

Maria still hasn't accepted the offer. Not much more we can do here so I'm closing this out.

@github-project-automation github-project-automation bot moved this from In Progress to Done in [#whatsnext] #convert Nov 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Daily KSv2 External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item.
Projects
Development

No branches or pull requests