Skip to content

[No QA] Refine card expense and reconciliation help articles#85023

Merged
johncschuster merged 13 commits intomainfrom
claude-refineCardReconciliationArticles
Mar 18, 2026
Merged

[No QA] Refine card expense and reconciliation help articles#85023
johncschuster merged 13 commits intomainfrom
claude-refineCardReconciliationArticles

Conversation

@MelvinBot
Copy link
Contributor

Explanation of Change

These two HelpDot articles overlapped and in places contradicted each other. This PR refines their scope so they are complementary:

Article 1 (View and Reconcile Expensify Card Expenses) is now focused on viewing, filtering, and exporting Expensify Card transactions from the Search page. Key changes:

  • Updated navigation from outdated "Reports page" to Search page
  • Fixed export workflow: users must select expenses via checkboxes to reveal the Export action (not click a nonexistent icon in the top-right corner)
  • Removed the "Reconcile Card Payments Manually" section (this is now handled by Article 2's in-app workflows)
  • Removed outdated "reconciliation tool in development" language (it already exists — Article 2 describes it)
  • Added internalScope metadata and cross-link to Article 2

Article 2 (Statement Matching and Reconciliation) is now focused on in-app statement matching and reconciliation workflows. Key changes:

  • Separated the combined "Reconciliation" section into distinct "How to" sections with full step-by-step instructions
  • Added cross-link to Article 1 for viewing/exporting card transactions
  • Added internalScope metadata
  • FAQ headings updated to Title Case per TEMPLATE.md
  • Tightened intro prose to remove redundancy

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/603377

Tests

These are documentation-only changes (markdown files in docs/). No code behavior is affected.

  1. Verify both markdown files render correctly on the help site
  2. Verify the cross-links between the two articles resolve correctly
  3. Verify that the export steps in Article 1 accurately describe the current UI behavior
  • Verify that no errors appear in the JS console

Offline tests

N/A — documentation-only change.

QA Steps

[No QA] — documentation-only change. No app behavior is affected.

  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

N/A — documentation-only change. No UI modifications.

Android: Native N/A
Android: mWeb Chrome N/A
iOS: Native N/A
iOS: mWeb Safari N/A
MacOS: Chrome / Safari N/A

…rlap

Article 1 (View and Reconcile) now focuses on viewing, filtering, and
exporting Expensify Card transactions from the Search page. Removed
outdated manual reconciliation section and corrected export workflow.

Article 2 (Statement Matching and Reconciliation) now focuses on in-app
statement matching and reconciliation workflows. Separated combined
sections into distinct how-to guides with full steps.

Both articles now cross-link to each other for complementary coverage.

Co-authored-by: Stephanie Elliott <stephanieelliott@users.noreply.github.com>
@MelvinBot MelvinBot requested a review from a team March 12, 2026 04:06
@MelvinBot
Copy link
Contributor Author

The failing spellcheck check is unrelated to this PR's changes.

Analysis: The failure is a GitHub Actions infrastructure issue — the runner received 401 Unauthorized errors when trying to download the actions/checkout action, which prevented the job from even starting:

Failed to download action 'https://api.github.com/repos/actions/checkout/tarball/...'
Error: Response status code does not indicate success: 401 (Unauthorized)

Evidence: This PR only modifies two markdown documentation files (docs/articles/new-expensify/expensify-card/View-and-Reconcile-Expensify-Card-Expenses.md and docs/articles/new-expensify/reports-and-expenses/Statement-Matching-and-Reconciliation.md). The spellcheck job never ran any actual spell checking — it failed during the setup phase while trying to download GitHub Actions dependencies. This is a transient infrastructure issue.

Recommendation: Re-run the failed check. The failure should not recur.

@stephanieelliott

This comment was marked as outdated.

Rewrites existing articles and adds two new ones so each article covers
a single reconciliation workflow with no overlap:

- View-and-Reconcile-Expensify-Card-Expenses.md: withdrawal-based
  Expensify Card reconciliation (in-product workflow)
- Statement-Matching-and-Reconciliation.md: high-level overview and
  decision guide linking to all three workflow articles
- Reconcile-Company-Cards.md (new): statement-based company card
  reconciliation against external card statements
- Reconcile-Reimbursements.md (new): payment-based reimbursement
  reconciliation tracing bank charges to reports

Co-authored-by: Stephanie Elliott <stephanieelliott@users.noreply.github.com>
@MelvinBot

This comment was marked as outdated.

@github-actions github-actions bot changed the title Refine card expense and reconciliation help articles [No QA] Refine card expense and reconciliation help articles Mar 18, 2026
@OSBotify
Copy link
Contributor

OSBotify commented Mar 18, 2026

@stephanieelliott stephanieelliott marked this pull request as ready for review March 18, 2026 05:16
@stephanieelliott stephanieelliott self-requested a review as a code owner March 18, 2026 05:16
@melvin-bot
Copy link

melvin-bot bot commented Mar 18, 2026

Concierge reviewer checklist:

  • I have verified the accuracy of the article
    • The article is within a hub that makes sense, and the navigation is correct
    • All processes, screenshots, and examples align with current product behavior.
    • All links within the doc have been verified for correct destination and functionality.
  • I have verified the readability of the article
    • The article's language is clear, concise, and free of jargon.
    • The grammar, spelling, and punctuation are correct.
    • The article contains at least one image, or that an image is not necessary
  • I have verified the formatting of the article
    • The article has consistent formatting (headings, bullet points, etc.) with other HelpDot articles and that aligns with the HelpDot formatting standards.
    • The article has proper text spacing and breaks for readability.
  • I have verified the article has the appropriate tone and style
    • The article's tone is professional, friendly, and suitable for the target audience.
    • The article's tone, terminology, and voice are consistent throughout.
  • I have verified the overall quality of the article
    • The article is not missing any information, nor does it contain redundant information.
    • The article fully addresses user needs.
  • I have verified that all requested improvements have been addressed

For more detailed instructions on completing this checklist, see How do I review a HelpDot PR as a Concierge Team member?

cc @johncschuster

@melvin-bot melvin-bot bot requested review from johncschuster and removed request for a team March 18, 2026 05:16
@melvin-bot
Copy link

melvin-bot bot commented Mar 18, 2026

@johncschuster Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@github-actions
Copy link
Contributor

HelpDot Documentation Review

Overall Assessment

This PR is a strong refactoring effort that splits a previously monolithic reconciliation article into three focused, single-workflow articles -- one for Expensify Card reconciliation, one for reimbursement reconciliation, and one for company card statement matching. The restructuring aligns well with the governance principle of one primary workflow per article. All three files follow the required heading hierarchy, include proper YAML metadata with internalScope, and use task-based headings throughout. A handful of grammar errors and minor style inconsistencies should be addressed before merging.

Scores Summary

  • Readability: 8/10 - Clear, scannable step-by-step instructions across all three articles. Minor issues with a missing blank line before a horizontal rule in Reconcile-Reimbursements.md (step 4) and a missing space between sentences in the Expensify Card FAQ reduce polish slightly.
  • AI Readiness: 9/10 - Excellent. All articles include full YAML metadata (title, description, keywords, internalScope), task-based headings with feature names, and proper heading hierarchy (only # and ## used). Each article has multiple "How to..." headings with specific feature names, which is ideal for semantic retrieval.
  • Style Compliance: 8/10 - Navigation instructions follow the unified format correctly. UI elements are bolded appropriately. A few capitalization inconsistencies in FAQ headings and one instance of misplaced content need attention.

Key Findings

Positive aspects:

  • The split from one combined article into three dedicated articles is the right architectural decision and directly follows the "one primary workflow per article" rule.
  • Every ## heading is task-based and starts with an action verb or question word (How, What, Why, Who). No generic headings are present.
  • YAML frontmatter is complete across all three files, including well-written internalScope fields that clearly define audience, coverage, and exclusions.
  • Cross-linking in Statement-Matching-and-Reconciliation.md is done correctly: relative path, descriptive anchor text, placed in an FAQ answer (not inside numbered steps).
  • The removal of the <div id="new-expensify" markdown="1"> wrapper from Statement-Matching-and-Reconciliation.md is a welcome cleanup.

Issues that should be addressed:

  1. Grammar errors in Reconcile-Reimbursements.md:

    • Step 4: "Review the list of reimbursement." should be "reimbursements" (plural).
    • FAQ answer: "A single reimbursement payment may covers one expense report." should be "may cover" (not "may covers").
    • FAQ answer: "confirm that the Payments is enabled" -- either drop "the" or rephrase to "confirm that the Payments feature is enabled."
  2. Misplaced content in Reconcile-Reimbursements.md: The last FAQ answer ("Why Don't I See Reimbursements Under Reconciliation?") contains a second paragraph about the Expensify Card option and Payments that does not belong in a reimbursements-focused article. This appears to be a copy-paste artifact and should be removed.

  3. Missing space in View-and-Reconcile-Expensify-Card-Expenses.md: In the FAQ answer for "How Is Expensify Card reconciliation different From statement matching?" -- the text reads "expenses.Company card reconciliation" with no space after the period. Should be "expenses. Company card reconciliation".

  4. Inconsistent capitalization in FAQ headings (View-and-Reconcile-Expensify-Card-Expenses.md):

    • "Why is Expensify Card not showing under Reconciliation" -- missing question mark at the end.
    • "How Is Expensify Card reconciliation different From statement matching?" -- mixed capitalization. "reconciliation" is lowercase while "Is" and "From" are uppercase. Should use consistent title case or sentence case.
  5. Navigation phrasing capitalization: All three articles use "on the left on Web, on the bottom on Mobile" with capitalized "Web" and "Mobile." The governance convention example shows lowercase: "on the left on web, on the bottom on mobile." This is a minor point but worth making consistent with the convention.

  6. Formatting gap in Reconcile-Reimbursements.md: After step 4 in "How to View Reimbursements," there is no blank line before the --- horizontal rule, which may cause rendering issues in some Markdown parsers.

Recommendations

Priority fixes (should address before merge):

  1. Fix the three grammar errors in Reconcile-Reimbursements.md ("reimbursement" -> "reimbursements", "may covers" -> "may cover", "the Payments is" phrasing).
  2. Remove the misplaced Expensify Card paragraph from the last FAQ answer in Reconcile-Reimbursements.md.
  3. Add the missing space after the period in the Expensify Card FAQ answer ("expenses.Company" -> "expenses. Company").
  4. Add the missing question mark to the FAQ heading "Why is Expensify Card not showing under Reconciliation".

Suggested improvements:
5. Normalize FAQ heading capitalization in View-and-Reconcile-Expensify-Card-Expenses.md to use consistent casing (either title case throughout or sentence case throughout).
6. Lowercase "Web" and "Mobile" in navigation instructions to match the governance convention exactly, or confirm that the project has adopted capitalized forms as standard.
7. Add a blank line before the --- after step 4 in "How to View Reimbursements" for clean Markdown rendering.

Files Reviewed

  • docs/articles/new-expensify/expensify-card/View-and-Reconcile-Expensify-Card-Expenses.md (MODIFIED) -- Major rewrite. Well-structured with proper metadata and task-based headings. Has minor FAQ capitalization and punctuation issues.
  • docs/articles/new-expensify/reports-and-expenses/Reconcile-Reimbursements.md (NEW) -- New article. Good structure and metadata. Contains grammar errors and one misplaced paragraph that needs removal.
  • docs/articles/new-expensify/reports-and-expenses/Statement-Matching-and-Reconciliation.md (MODIFIED) -- Major rewrite. Cleanest of the three files. Proper cross-linking, good metadata, well-focused on company card workflow.

Note: This review covers only the proposed changes in the PR diff, not unchanged content from previous versions.

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

ℹ️ 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".

…Expensify-Card-Expenses.md

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
stephanieelliott and others added 3 commits March 17, 2026 19:40
…Expensify-Card-Expenses.md

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@stephanieelliott
Copy link
Contributor

Fixed all the bot comments!

@johncschuster johncschuster merged commit 7053fde into main Mar 18, 2026
14 checks passed
@johncschuster johncschuster deleted the claude-refineCardReconciliationArticles branch March 18, 2026 22:56
@OSBotify
Copy link
Contributor

🚀 Deployed to staging by https://github.com/johncschuster in version: 9.3.41-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Bundle Size Analysis (Sentry):

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.41-4 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

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.

4 participants