Skip to content

Comments

Helpsite refractor fixing duplicates#83294

Open
stephanieelliott wants to merge 4 commits intomainfrom
helpsite-refractor-fixing-duplicates
Open

Helpsite refractor fixing duplicates#83294
stephanieelliott wants to merge 4 commits intomainfrom
helpsite-refractor-fixing-duplicates

Conversation

@stephanieelliott
Copy link
Contributor

Moved Understanding Duplicates into help site nav and renamed to more accurately reflect scope. Also edited peripheral articles to reduce overlap for better AI retrieval.

@stephanieelliott stephanieelliott self-assigned this Feb 24, 2026
- Attendees
- Tags
- Report assignment
- Receipt images
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Duplicate and inconsistent list items: Lines 29-37 contain duplicate entries. "Receipt images" appears twice (lines 34 and 37), and "Category" appears both as a standalone item (line 29) and again combined with tags/billable status (line 35). The indented "Receipt images" on line 34 also breaks the flat list structure.

Suggested fix: Remove the duplicate "Receipt images" and the duplicate "Category, tags, reimbursable and billable status" entry. Consolidate into a single clean list, for example:

- Category
- Description
- Attendees
- Tags
- Report assignment
- Receipt images
- Reimbursable and billable status (if the report is Draft or Outstanding)
- Amount (if not a company card expense)

**Note:** Expenses with violation can be submitted manually, they cannot be submitted automatically. The violation will still appear but will not block submission if a comment or explanation is provided.

---

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Grammar error: "Expenses with violation can be submitted manually" is missing an article. Should read "Expenses with a violation can be submitted manually." Additionally, this is a comma splice -- two independent clauses joined only by a comma. Consider splitting into two sentences or joining with a semicolon.

Suggested change
**Note:** Expenses with a violation can be submitted manually; they cannot be submitted automatically. The violation will still appear but will not block submission if a comment or explanation is provided.

6. Once complete, tap **Save** again.
Violations appear with a note explaining which rule has been broken. You can resolve a violation by:

- Editing the expense to resolve the violation so it complies with the Workspace rules, or
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Confusing sentence: "Violations should be resolved before reports are submitted and can be approved" reads ambiguously -- it is unclear whether "can be approved" is a parallel action or a consequence. Consider rephrasing for clarity.

Suggested change
- Editing the expense to resolve the violation so it complies with the Workspace rules, or
A violation is a flag applied to expenses that break Workspace rules, such as missing required Categories or Tags, or exceeding the allowed amount. Violations should be resolved before reports are submitted for approval.

**On Mobile:**

**Note:** If the two expenses are on different reports, you'll be asked to choose which report the new expense should be added.
1. Tap the **Expenses** tab.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style compliance violation -- Inconsistent platform instruction: In the Mobile section for splitting, step 5 says "Click Save" instead of "Tap Save". Mobile instructions should consistently use "Tap" rather than "Click."

Suggested change
1. Tap the **Expenses** tab.
5. Tap **Save**.

SmartScanned receipts are designed to merge with matching card feed transactions. A failed merge creates two expenses for one purchase:
- A SmartScan-only expense (marked as "SmartScanned")
- A card feed-only expense (marked as "Imported")
If duplicate expenses are detected, tap **Resolve now**, then tap **Merge expense**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Missing period at end of step: Step 3 is missing a period at the end of the sentence ("Click the red Trash icon").

Suggested change
If duplicate expenses are detected, tap **Resolve now**, then tap **Merge expense**.
3. Click the red **Trash icon**.

Resolving duplicates helps keep your reports clean and accurate.
1. Tap **Expenses**.
2. Select the expense you want to delete.
3. Tap **More Options**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Grammar error: "ask approver or Workspace Admin" is missing an article. Should be "ask an approver or Workspace Admin."

Suggested change
3. Tap **More Options**.
If you need to edit an expense on a submitted report, ask an approver or Workspace Admin to Unapprove the report.

@github-actions
Copy link
Contributor

HelpDot Documentation Review

Overall Assessment

This PR restructures duplicate-expense guidance by deleting an unlisted catch-all article (Avoiding-Duplicates.md), creating two new platform-specific articles (How-to-prevent-duplicate-expenses.md for both Expensify Classic and New Expensify), and trimming Edit-expenses.md to remove overlapping duplicate-prevention content. The separation of concerns is a clear improvement for AI retrieval and navigation -- each article now has a focused scope. However, the changes introduce several issues that should be addressed before merging: broken cross-reference anchors, duplicate list items in Edit-expenses.md, a grammar error, lost content coverage for duplicate reports, and inconsistent heading hierarchy.


Scores Summary

  • Readability: 7/10 - Prose is clear and at an appropriate reading level throughout. Sentences are concise and well-structured. Deductions are for a duplicate bullet list in "What fields can be edited," a grammar error ("Expenses with violation can be submitted manually"), and a missing article ("ask approver" should be "ask an approver"). The overall flow of each new article is logical and easy to follow.

  • AI Readiness: 8/10 - Strong performance here. All new and modified files include well-formed internalScope metadata following the required "Audience is... Covers... Does not cover..." pattern. Headings use full task phrasing (e.g., "How to prevent duplicate expenses," "Common reasons SmartScan merge fails"). The keyword arrays are comprehensive and natural. Minor deductions for the heading hierarchy issue in Edit-expenses.md (see below) and for the two new articles having nearly identical internalScope and description fields, which could confuse AI routing between Classic and New Expensify contexts.

  • Style Compliance: 7/10 - Good use of Expensify terminology ("Workspace Admin," "SmartScan," "Draft," "Outstanding"). Markdown structure is mostly correct with proper FAQ sections. Deductions for: inconsistent use of "Web" vs. "Desktop" (the PR changes "Desktop" to "Web," which is fine, but the mobile split section says "Click Save" instead of "Tap Save"), heading hierarchy violations in Edit-expenses.md (mixed # and ## under the same parent), and the title casing inconsistency between YAML title ("How to Prevent Duplicate Expenses" with capitals) and the H1 heading ("How to prevent duplicate expenses in Expensify" in sentence case).


Key Findings

Critical Issues

  1. Broken cross-reference anchors in the Classic duplicate article. The "How to fix duplicate expenses" section links to Edit-expenses#merge-expenses and Edit-expenses#delete-an-expense. However, the PR renames those headings to "How to merge expenses" and "How to delete expenses," which would generate anchors #how-to-merge-expenses and #how-to-delete-expenses. These links will produce 404 anchors on the live help site.

  2. Duplicate bullet items in "What fields can be edited" section of Edit-expenses.md. The list includes "Receipt images" twice (once indented under "Report assignment" and once at the end), and "Category" appears both as a standalone item and within a compound bullet. This appears to be an editing oversight where old and new list items were not fully reconciled.

  3. Lost content: duplicate reports. The deleted Avoiding-Duplicates.md covered duplicate reports (auto-sync + manual export causing double entries in accounting software). Neither new article replaces this content. If this was intentional, consider noting it in the PR description; if not, this guidance should be preserved somewhere.

Moderate Issues

  1. Grammar error in Edit-expenses.md. The sentence "Expenses with violation can be submitted manually, they cannot be submitted automatically" is a comma splice and is missing an article. Suggested fix: "Expenses with violations can be submitted manually. They cannot be submitted automatically."

  2. Missing article in Edit-expenses.md FAQ. "ask approver or Workspace Admin to Unapprove the report" should be "ask an approver or Workspace Admin."

  3. Heading hierarchy inconsistency in Edit-expenses.md. The file mixes # (H1) and ## (H2) headings in a way that breaks expected hierarchy. For example, "How to resolve an expense violation" and "How to split an expense" are ## under the # "How to edit an expense" section, but they are independent topics, not sub-tasks of editing. Meanwhile, "How to delete expenses" is promoted to #. The HelpDot convention calls for # and ## only, used in a consistent parent-child relationship.

  4. "Click Save" in mobile instructions. In the "How to split an expense" mobile steps, step 5 says "Click Save" -- it should say "Tap Save" to match the mobile context.

Positive Aspects

  1. Clear separation of concerns. Moving duplicate-prevention content into its own dedicated articles and trimming it from Edit-expenses.md is a strong architectural decision. This reduces overlap and makes each article more focused for both human readers and AI retrieval.

  2. Well-structured YAML frontmatter. The internalScope fields are well-written and follow the prescribed format. The keywords arrays are comprehensive and include natural-language search phrases like "why didn't my expenses merge" and "receipt didn't merge."

  3. Consistent, clear prose. The new articles use plain language, short sentences, and a logical progression from "why it happens" to "how it works" to "how to prevent it" to "how to fix it." The FAQ sections are relevant and well-targeted.

  4. Appropriate cross-linking strategy. The new articles link back to Edit-expenses.md for step-by-step merge/delete instructions rather than duplicating that content. The New Expensify version links to its own platform-specific articles (Merging-expenses, Delete-Expenses). The linked target files exist in the repository.


Recommendations

Must fix before merge:

  1. Update the anchor links in docs/articles/expensify-classic/expenses/How-to-prevent-duplicate-expenses.md to match the new heading text in Edit-expenses.md. Change #merge-expenses to #how-to-merge-expenses and #delete-an-expense to #how-to-delete-expenses.

  2. Remove the duplicate "Receipt images" and "Category" entries from the "What fields can be edited" section of Edit-expenses.md. Consolidate into a single clean list.

  3. Fix the grammar: "Expenses with violation" should be "Expenses with a violation" or "Expenses with violations." The comma splice should be split into two sentences.

Should fix:

  1. Change "Click Save" to "Tap Save" in the mobile steps for splitting expenses in Edit-expenses.md.

  2. Add the missing article: "ask approver" should be "ask an approver."

  3. Consider whether the duplicate reports content from the deleted article needs a new home. If it was intentionally removed, a note in the PR description would help reviewers understand the decision.

  4. Differentiate the two new duplicate-prevention articles more clearly. Currently, only the keywords (first entry: "Expensify Classic" vs. "New Expensify") and the cross-links differ. Consider whether the New Expensify version should reference different UI flows or terminology if the product experience differs, or add a brief note explaining why the content is intentionally shared.

Nice to have:

  1. Align title casing between the YAML title field and the H1 heading. Either both should use title case or both should use sentence case.

  2. Normalize the heading hierarchy in Edit-expenses.md so that independent task sections (split, merge, delete, violations) are all at the same heading level.


Files Reviewed

File Status Summary
docs/articles/Unlisted/Avoiding-Duplicates.md DELETED Removed catch-all duplicates article. Content partially replaced by two new articles; duplicate reports section has no replacement.
docs/articles/expensify-classic/expenses/Edit-expenses.md MODIFIED Trimmed duplicate-prevention content, added internalScope, restructured headings and steps. Has duplicate list items and minor grammar issues.
docs/articles/expensify-classic/expenses/How-to-prevent-duplicate-expenses.md NEW Focused Classic article on SmartScan merge behavior and prevention. Well-structured; has broken anchor links to Edit-expenses.md.
docs/articles/new-expensify/reports-and-expenses/How-to-prevent-duplicate-expenses.md NEW New Expensify version of duplicate prevention. Nearly identical to Classic version; cross-links point to correct New Expensify articles.

Note: Detailed line-by-line feedback has been provided as inline comments.

## How to resolve an expense violation

Each split becomes its own expense, and the image of the same receipt is attached. You can assign different categories, tags, or details to each one.
A violation is a flag applied to expenses that break Workspace rules, such as missing required Categories or Tags, or exceeding the allowed amount. Violations should be resolved before reports are submitted and can be approved.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Readiness violation -- Heading hierarchy issue: "How to resolve an expense violation" is a ## subheading under "# How to edit an expense", but resolving violations is a distinct task from editing expenses. This could confuse AI retrieval since the heading implies it is a sub-task of editing. Consider promoting this to a # level heading, or restructuring so it is clearly a separate section.

internalScope: Audience is members and approvers managing expenses. Covers why duplicate expenses occur and how to prevent SmartScan and card feed merge failures. Does not cover how to edit, merge, split, or delete expenses step-by-step.
---

Duplicate expenses typically occur when a SmartScanned receipt does not merge with its matching imported card transaction. This guide explains why duplicates happen and how to prevent them.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Redundant intro paragraph: The intro text on line 8 ("Duplicate expenses typically occur when a SmartScanned receipt does not merge with its matching imported card transaction. This guide explains why duplicates happen and how to prevent them.") is nearly identical to the H1 + H2 section that immediately follows on lines 10-13. The "Why duplicate expenses happen" section restates: "Duplicate expenses most commonly occur when a SmartScanned receipt doesn't merge with a matching card transaction as expected." Consider making the intro distinct or removing the redundancy from the H2 body.

If expenses are duplicated because they failed to merge automatically, you can manually merge or delete the duplicate as needed.

For step-by-step instructions, see:
- [Merge Expenses](https://help.expensify.com/articles/expensify-classic/expenses/Edit-expenses#merge-expenses)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Potentially broken anchor link: The link Edit-expenses#delete-an-expense uses the anchor #delete-an-expense, but the corresponding heading in the updated Edit-expenses.md is "# How to delete expenses". The generated anchor would be #how-to-delete-expenses, not #delete-an-expense. Please verify and update the anchor to match the actual heading.

Similarly, the "Merge Expenses" link on line 62 points to #merge-expenses, but the heading in the updated file is "## How to merge expenses", which would generate #how-to-merge-expenses.

- Avoid uploading the same receipt multiple times
- Do not edit key fields (amount, date, currency) while SmartScan is processing
- Wait for the card transaction to post before manually resolving duplicates
- Review duplicate warnings before submitting or approving a report
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Missing horizontal rule separator: There is no --- separator between "How to prevent duplicate expenses" (line 48) and "How to fix duplicate expenses" (line 56), whereas all other sections in this article use horizontal rule separators. Add a --- before this section for consistency.

internalScope: Audience is members and approvers managing expenses. Covers why duplicate expenses occur and how to prevent SmartScan and card feed merge failures. Does not cover how to edit, merge, split, or delete expenses step-by-step.
---

Duplicate expenses typically occur when a SmartScanned receipt does not merge with its matching imported card transaction. This guide explains why duplicates happen and how to prevent them.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Redundant intro paragraph: Same issue as the Classic version. The intro text restates what the "Why duplicate expenses happen" section says almost verbatim. Consider differentiating the intro or trimming the repetition from the body section.

- Review duplicate warnings before submitting or approving a report

## How to fix duplicate expenses

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability violation -- Missing horizontal rule separator: There is no --- separator between "How to prevent duplicate expenses" (line 51) and "How to fix duplicate expenses" (line 59), unlike every other section in this article. Add a --- before this heading for visual and structural consistency.

If the foreign exchange difference exceeds five percent, the expenses will not merge automatically.

## Can SmartScan merge expenses after a report is submitted?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Readiness / Content accuracy concern: This FAQ answer references report states "Outstanding, Approved, Paid, or Done" which are Expensify Classic report states. New Expensify may use different report state terminology. Since this article is in the new-expensify path, verify that these statuses are accurate for New Expensify, or update them to match the New Expensify terminology.


Duplicate expenses typically occur when a SmartScanned receipt does not merge with its matching imported card transaction. This guide explains why duplicates happen and how to prevent them.

# How to prevent duplicate expenses in Expensify
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Readiness / Duplicate content concern: This article's body content (lines 10-89) is nearly identical to docs/articles/expensify-classic/expenses/How-to-prevent-duplicate-expenses.md. The only differences are two cross-reference links. For AI retrieval accuracy, New Expensify and Expensify Classic articles should reflect platform-specific behavior, terminology, and UI flows. Consider tailoring the New Expensify version to describe the duplicate detection and resolution experience specific to New Expensify (e.g., how duplicates surface in the chat-based expense flow, New Expensify-specific UI elements).

keywords: edit expenses, split expenses, merge expenses, delete expenses, Expensify Classic, expense permissions, company card, SmartScan, Workspace Admin
title: Edit expenses
description: Learn how to edit, split, merge, or delete expenses in Expensify, including permissions and limitations.
keywords: edit expenses, split expenses, merge expenses, delete expenses, expense permissions, company card expense, Workspace Admin
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Readiness violation -- Keywords format inconsistency: The keywords field here uses a bare comma-separated list, while the new How-to-prevent-duplicate-expenses.md articles use bracket notation [keyword1, keyword2, ...]. For consistency across HelpDot articles and proper YAML parsing, consider using the same bracket format:

Suggested change
keywords: edit expenses, split expenses, merge expenses, delete expenses, expense permissions, company card expense, Workspace Admin
keywords: [edit expenses, split expenses, merge expenses, delete expenses, expense permissions, company card expense, Workspace Admin]

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ea826e1ef

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +63 to +64
- [Merge Expenses](https://help.expensify.com/articles/expensify-classic/expenses/Edit-expenses#merge-expenses)
- [Delete Expenses](https://help.expensify.com/articles/expensify-classic/expenses/Edit-expenses#delete-an-expense)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fix stale section anchors in duplicate-expense links

The two help links here still point to old Edit-expenses fragment IDs (#merge-expenses and #delete-an-expense), but this commit also renamed those target headings in docs/articles/expensify-classic/expenses/Edit-expenses.md to “How to merge expenses” and “How to delete expenses.” With mismatched anchors, readers are sent to the page without jumping to the relevant section, which breaks the remediation flow described in this article.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant