Skip to content

[No QA] Docs updates for E/A#99309 Document Reconciliation - All Expenses export template - #100629

Open
MelvinBot wants to merge 2 commits into
mainfrom
claude-docsReconciliationAllExpensesExport
Open

[No QA] Docs updates for E/A#99309 Document Reconciliation - All Expenses export template#100629
MelvinBot wants to merge 2 commits into
mainfrom
claude-docsReconciliationAllExpensesExport

Conversation

@MelvinBot

@MelvinBot MelvinBot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Explanation of Change

Help site follow-up to #99309, which added the Reconciliation - All Expenses export template to the Search export menu for workspace and card admins of a workspace with company cards or the Expensify Card enabled.

The help site listed every other pre-built export template but not this one, and neither reconciliation article explained how to pull the reconciliation data out as a CSV. This PR documents the new template where members already look for it:

  • docs/articles/new-expensify/reports-and-expenses/How-to-Export-Expenses.md — added Reconciliation - All Expenses to the "What export templates can I choose from?" list, including who sees it.
  • docs/articles/new-expensify/reports-and-expenses/How-to-Export-Reports.md — same addition to its template list.
  • docs/articles/new-expensify/reports-and-expenses/Statement-Matching-and-Reconciliation.md — new "How to Export Company Card Transactions for Reconciliation" section with the steps from Spend > Card statements, the fields the export returns, and a FAQ entry for when the template isn't visible.
  • docs/articles/new-expensify/expensify-card/View-and-Reconcile-Expensify-Card-Expenses.md — called out the template in the existing export section and added the missing Export step.

Wording follows docs/HELPSITE_NAMING_CONVENTIONS.md, docs/HELP_AUTHORING_GUIDELINES.md, and docs/TEMPLATE.md. Label capitalization comes from the merged code: the template label is Reconciliation - All Expenses (src/CONST/index.ts, src/languages/en.ts), and the role labels are Workspace admin and Card admin (src/languages/en.ts). The eligibility rule matches isAdminOfCardEnabledPolicy in src/libs/PolicyUtils.ts — workspace admin or card admin, plus areCompanyCardsEnabled or areExpensifyCardsEnabled.

Fixed Issues

$ #99172
PROPOSAL:

Tests

This PR changes help site markdown under docs/articles only — there is no app code in the diff, so there is nothing to exercise in the product. The content was verified against the merged code from #99309 rather than by running the app:

  1. Confirm the template label rendered in the export menu is exactly Reconciliation - All Expenses, matching CONST.REPORT.EXPORT_OPTIONS.RECONCILIATION_ALL_EXPENSES in src/CONST/index.ts and export.reconciliationAllExpenses in src/languages/en.ts.
  2. Confirm the documented visibility rule matches isAdminOfCardEnabledPolicy in src/libs/PolicyUtils.ts: workspace admin or card admin, and the workspace has areCompanyCardsEnabled or areExpensifyCardsEnabled.
  3. Confirm the template is added to the default export group only when that rule passes, per the includeReconciliationAllExpenses branch in getExportTemplates (src/libs/actions/Search.ts) and hasCardEnabledAdminPolicy in src/hooks/useSearchBulkActions.ts.
  4. Confirm the role labels used in the articles (Workspace admin, Card admin) match the strings in src/languages/en.ts.
  5. Confirm the article renders on the help site with correct headings, list nesting, and front matter.
  • Verify that no errors appear in the JS console

Offline tests

Not applicable. This PR changes help site markdown only.

QA Steps

[No QA] — help site markdown only. No app code changed, so there is no product behavior for QA to exercise.

  • Verify that no errors appear in the JS console

PR Author Checklist

Note: this is a docs-only PR — the diff touches four markdown files under docs/articles and no app code, tests, styles, assets, or components. The items below covering app code, unit tests, native platforms, CSS, assets, Storybook, and generic components are therefore not applicable.

  • 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 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 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)
  • 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)
  • 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.
  • 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 — this PR changes help site markdown under docs/articles only. There are no app UI changes to capture on any platform.

Android: Native

N/A — docs-only change.

Android: mWeb Chrome

N/A — docs-only change.

iOS: Native

N/A — docs-only change.

iOS: mWeb Safari

N/A — docs-only change.

MacOS: Chrome / Safari

N/A — docs-only change.


@dukenv0307, please review the files changed and confirm they reflect the current behavior. Then post a new comment saying @MelvinBot mark this PR as ready for review.

Co-authored-by: Nguyen Van Duc <dukenv0307@users.noreply.github.com>
@dukenv0307

Copy link
Copy Markdown
Contributor

@MelvinBot Complete the checklist

@MelvinBot

Copy link
Copy Markdown
Contributor Author

🤖 Checklist completed — but one documented step doesn't match the code

I filled in the PR Author Checklist (40/40), plus the Tests, Offline tests, QA Steps, and Screenshots/Videos sections. Because the diff is four markdown files under docs/articles and no app code, I added a note above the checklist marking the app-code / native-platform / CSS / assets / Storybook items as not applicable, and wrote the Tests steps as verification against the merged code from #99309 rather than a product flow. The only failing check left is Check independent approval, which needs a human reviewer.

⚠️ Please look at this before marking ready

The new step I added says the Reconciliation section, but the code puts Card statements under the Accounting section:

I did not change it, because this wording is pre-existing, not something this PR introduced: line 23 already said "In the Reconciliation section, select Card statements", and the FAQ heading "Why Don't I See Card Statements Under Reconciliation?" does too. Correcting only my new step would make the article contradict itself, and correcting all three goes beyond this PR's scope. Reply @MelvinBot fix the section name if you want all three updated to Accounting here, otherwise it's worth a separate docs issue.

What I verified against the code

Everything else in the diff checks out
Doc claim Code
Label is exactly Reconciliation - All Expenses CONST/index.ts:2045, en.ts:11052
Visible only to workspace admin or card admin of a workspace with company cards or the Expensify Card enabled PolicyUtils.ts:825 (isAdminOfCardEnabledPolicy)
Template added to the default group only when that rule passes Search.ts:2008 (includeReconciliationAllExpenses), useSearchBulkActions.ts:638 (hasCardEnabledAdminPolicy)
Role labels Workspace admin / Card admin en.ts:4843-4849
Menu item is labelled Card statements en.ts:9401

Per the test-selection matrix, a markdown-only content change under docs/articles triggers no required-local AI tests — no app code, shell scripts, translations, styles, patches, or docs routing/config files changed. CI spellcheck, verify, validate, and check all pass.

Web test steps verification results: ❌ fail

I also tried to walk the documented steps in the app on web, but couldn't: the test account has no workspace, no expenses, and no reports, so every documented flow is blocked at its first UI action. Reports > Expenses shows "No expenses yet", Reports > Reports shows "No reports yet", and the Spend sidebar has only an Expense reports group — no Accounting or Reconciliation entries at all, which is consistent with the code gating those on a workspace and a card feed.

Spend sidebar showing only Expense reports (Expenses, Reports) - no Reconciliation section

Step Status
Reports > Expenses — select an expense checkbox, click Selected, confirm Export option in menuPage shows "No expenses yet — Create an expense or take a test drive of Expensify to learn more." No expense rows exist, so there is no checkbox to select and no "Selected" button ever appears.
Spend > Expenses page with 'No expenses yet' empty state, no rows to select
Open the Export submenu on the Expenses page and list the template namesUnreachable — no expenses exist to select, so the "Selected" button and its Export submenu never render. Could not confirm or deny the presence of Reconciliation - All Expenses in the live menu.
Spend > Expenses page with 'No expenses yet' empty state, no rows to select
Reports > Reports — select a report, click Selected, then Export, and list the template namesPage shows "No reports yet — Create a report or take a test drive of Expensify to learn more." No report rows exist, so no Selected/Export path is reachable.
Spend > Reports page with 'No reports yet' empty state
Spend tab — confirm the Card statements option and the Selected > Export pathThe Spend sidebar contains a single group, "Expense reports", with only "Expenses" and "Reports". No "Card statements" option is present. The Workspaces tab shows "No workspaces yet", so this account is not a workspace or card admin and has no company card feed — exactly the condition under which the code hides that section.
Spend sidebar showing only Expense reports (Expenses, Reports) - no Reconciliation section

No console errors were observed. Verifying the export template list end-to-end needs an account with an admin workspace, at least one expense and report, and a connected company card feed.

@dukenv0307

Copy link
Copy Markdown
Contributor

@MelvinBot let's open the PR

@MelvinBot
MelvinBot marked this pull request as ready for review September 9, 2026 02:18
@melvin-bot

melvin-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown

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 @brianlee-expensify

@melvin-bot
melvin-bot Bot requested review from brianlee-expensify and removed request for a team September 9, 2026 02:18
@melvin-bot

melvin-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown

@brianlee-expensify 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]

@MelvinBot

Copy link
Copy Markdown
Contributor Author

🤖 Done — this PR is out of draft and ready for review.

PullerBear picked up the ready-for-review event and assigned stephanieelliott as the engineering reviewer. dukenv0307 remains the assignee.

Checks: CLA, spellcheck, validate, verify, verifySignedCommits, check, and Request reviewers for new Onyx.connectWithoutView calls all pass. review is running. Check independent approval is red and stays red until a reviewer approves — that's expected on a freshly opened PR.

One thing still open for the reviewer

I flagged this before opening and it hasn't been resolved, so repeating it here so it isn't missed in review. Two steps in the article tell members to look in a Reconciliation section, but the code puts Card statements under Accounting:

  • Statement-Matching-and-Reconciliation.md:23 (pre-existing) and :48 (added by this PR) both say "In the Reconciliation section, select Card statements." The FAQ heading "Why Don't I See Card Statements Under Reconciliation?" says the same.
  • SearchUIUtils.ts:5107 sets that section's header to search.tabs.accounting (Accounting), and :5142 pushes Card statements into it. createTypeMenuSections builds only Expense reports, Accounting, and Insights — there is no Reconciliation section.

I left it alone because the wording predates this PR and fixing only the new line would make the article contradict itself. Reply @MelvinBot fix the section name and I'll update all three references to Accounting on this branch, or it can ship as-is and get its own docs issue.

- **Basic export** - Essential fields including date, amount, merchant, category, and receipt URL.
- **All Data - expense level** - One row per expense with all available data fields.
- **Canadian Multiple Tax Export** - One row per expense with a separate column for each tax (such as GST and PST). This template only appears when the workspace currency is set to CAD.
- **Reconciliation - All Expenses** - One row per expense with the fields used to reconcile card spend, such as posted date, card name, custom card name, bank, MCC, and expense status. This template only appears if you're a **Workspace admin** or **Card admin** of a workspace that has company cards or the Expensify Card enabled.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Terminology casing inconsistency: Use Title Case role names — **Workspace Admin** and **Card Admin** — to match the exact role labels used elsewhere in this article (e.g. "Workspace Admin" on the very next bullet). Per HELPSITE_NAMING_CONVENTIONS.md, match capitalization exactly and stay consistent.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not changing this — Title Case would break the convention this comment cites.

HELPSITE_NAMING_CONVENTIONS.md:21-22 says "Use the exact text shown in the product UI. Match capitalization exactly", and :37-39 says "Use Sentence case (match the UI exactly). Do not alter capitalization." The UI is the source of truth here, not the surrounding prose — the same file adds "If the UI changes, this document must be updated."

The product renders these role labels in sentence case. src/languages/en.ts:4838-4859roleName() returns 'Workspace admin' and 'Card admin', and the whole family follows suit ('People admin', 'Payments admin', 'Auditor', 'Editor', 'Member').

So **Workspace admin** / **Card admin** on line 73 is correct. The "your Workspace Admin" on line 74 is pre-existing text that predates the current UI casing — it's the stale one, and it's outside this PR's diff. Worth a separate sweep rather than churning it here.


view run

- **All Data - expense level** - One row per expense on the report with all available data fields.
- **All Data - report level** - One row per report with all available data fields.
- **Canadian Multiple Tax Export** - One row per expense with a separate column for each tax (such as GST and PST). This template only appears when the workspace's output currency is set to CAD.
- **Reconciliation - All Expenses** - One row per expense with the fields used to reconcile card spend, such as posted date, card name, custom card name, bank, MCC, and expense status. This template only appears if you're a **Workspace admin** or **Card admin** of a workspace that has company cards or the Expensify Card enabled.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Terminology casing inconsistency: Use Title Case role names — **Workspace Admin** and **Card Admin** — to match "Workspace Admin" used on the following bullet and throughout the article. Per HELPSITE_NAMING_CONVENTIONS.md, match capitalization exactly and stay consistent.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not changing this — Title Case would break the convention this comment cites.

HELPSITE_NAMING_CONVENTIONS.md:21-22 says "Use the exact text shown in the product UI. Match capitalization exactly", and :37-39 says "Use Sentence case (match the UI exactly). Do not alter capitalization."

The product renders these role labels in sentence case: src/languages/en.ts:4838-4859roleName() returns 'Workspace admin' and 'Card admin'.

So **Workspace admin** / **Card admin** on line 59 is correct. The "your Workspace Admin" on line 60 is pre-existing text that predates the current UI casing, and it's outside this PR's diff.


view run

3. Select **Export**.
4. Choose an export template to download the results as a CSV file.

Workspace Admins and Card admins of a workspace with the Expensify Card enabled also see the **Reconciliation - All Expenses** template in this menu. It returns one row per expense with the fields used to reconcile card spend, such as posted date, card name, custom card name, bank, MCC, and expense status.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Terminology casing inconsistency: This article uses "Workspace Admins" (Title Case) elsewhere, but here "Card admins" is lowercase. Use consistent Title Case role names (e.g. "Card Admins"). Per HELPSITE_NAMING_CONVENTIONS.md, match capitalization exactly.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Half right — there is a real inconsistency on this line, but the fix goes the other way.

Line 55 reads "Workspace Admins and Card admins", which mixes both casings inside one sentence. That's mine and it shouldn't ship. But the correct resolution is sentence case for both, not Title Case for both.

HELPSITE_NAMING_CONVENTIONS.md:21-22 says "Use the exact text shown in the product UI. Match capitalization exactly", and :37-39 says "Use Sentence case (match the UI exactly)." The product renders these labels in sentence case — src/languages/en.ts:4838-4859, where roleName() returns 'Workspace admin' and 'Card admin'.

The catch: this article uses "Workspace Admins" in four other places (lines 4, 5, 16, 96), all pre-existing and all outside this PR's diff. Fixing only line 55 makes it match the UI but diverge from the rest of the article; fixing the whole article is a bigger change than this PR's scope.

dukenv0307 — do you want line 55 changed to "Workspace admins and Card admins" here, or should the whole-article casing sweep go in a separate docs PR?


view run

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@MelvinBot Yes make it Workspace admins and Card admins

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done — pushed as 26e7882.

Line 55 now reads "Workspace admins and Card admins of a workspace with the Expensify Card enabled…" — View-and-Reconcile-Expensify-Card-Expenses.md:55.

I applied the same one-word fix to Statement-Matching-and-Reconciliation.md:5, the internalScope front matter I asked about in the other thread. It had the identical defect — "Workspace Admins and Card admins" mixing both casings in one sentence — and this PR introduced it too, so leaving it would have shipped the same problem you just told me to fix. Say the word if you'd rather I revert that half.

The diff is two words. Nothing else changed:

-Workspace Admins and Card admins of a workspace with the Expensify Card enabled also see…
+Workspace admins and Card admins of a workspace with the Expensify Card enabled also see…

-internalScope: Audience is Workspace Admins and Card admins reconciling third-party…
+internalScope: Audience is Workspace admins and Card admins reconciling third-party…
Still open, and not touched here

Pre-existing Title Case, outside this PR's diff. View-and-Reconcile-Expensify-Card-Expenses.md still says "Workspace Admins" on lines 4, 5, 16, and 96, and Statement-Matching-and-Reconciliation.md on line 16. Those now differ from the two lines I just fixed. That is the whole-article sweep I flagged — still best as its own docs PR.

The Codex reviewer's P2 on line 49 has no reply yet. It argues the select-all step can't reach the template, because the Card statements query is grouped by card and useSearchBulkActions.ts suppresses template exports for grouped selections, leaving only Export current view. I have not verified that claim. If it holds, step 3 of the new export section needs rewording. Reply @MelvinBot check the Codex comment and I'll trace it.

Local checks. npm run spell-changed couldn't run in this environment — the script died at git merge-base failed against a shallow origin/main, unrelated to the change. CI spellcheck runs on the push and is the authoritative gate. Per the test-selection matrix, a markdown-only content change under docs/articles triggers no other required-local tests.


The Card statements option appears only when your workspace has at least one company card feed connected. If you don’t see it, confirm that a company card feed is set up and active.

## Why Don't I See the Reconciliation - All Expenses Export Template?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Terminology casing inconsistency: **Workspace admin** and **Card admin** are lowercase here, but the rest of this article uses "Workspace Admins" (Title Case). Use consistent Title Case role labels (e.g. **Workspace Admin**, **Card Admin**). Per HELPSITE_NAMING_CONVENTIONS.md, match capitalization exactly.

@MelvinBot MelvinBot Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not changing the flagged text — Title Case would break the convention this comment cites.

The role labels in this section are on line 78, and they read **Workspace admin** / **Card admin**, which is correct. HELPSITE_NAMING_CONVENTIONS.md:21-22 says "Use the exact text shown in the product UI. Match capitalization exactly", and :37-39 says "Use Sentence case (match the UI exactly)." The product renders them in sentence case: src/languages/en.ts:4838-4859, where roleName() returns 'Workspace admin' and 'Card admin'.

One thing the comment missed: the internalScope front matter on line 5, which this PR did change, reads "Workspace Admins and Card admins" — that genuinely does mix both casings in one sentence. It's internal metadata rather than customer-facing copy, so it isn't urgent, but I can make it sentence case if you'd like it consistent.

The "Workspace Admins" on line 16 is pre-existing and outside this PR's diff.


view run · view recording

@dukenv0307

Copy link
Copy Markdown
Contributor

@MelvinBot Check the reviewer comments

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

Copy link
Copy Markdown

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

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


1. Click the navigation tabs (on the left on web, on the bottom on mobile) and go to **Spend**.
2. In the **Reconciliation** section, select **Card statements**.
3. Select the checkbox next to each transaction you want to export, or use the top checkbox to select all.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove the unusable select-all instruction

When the top checkbox selects the loaded Card statements results, this workflow cannot reach the template named in step 6. The Card statements query is always grouped by card (SearchUIUtils.ts), toggleAll marks those transactions as selected via their groups (SearchWriteActionsProvider.tsx), and useSearchBulkActions.ts suppresses all template exports whenever a grouped selection is present, leaving only Export current view. Document selecting individual transaction rows instead, or explain how to leave grouping/select all matching so that Reconciliation - All Expenses remains available.

Useful? React with 👍 / 👎.

@MelvinBot

Copy link
Copy Markdown
Contributor Author

🤖 Checked all four reviewer comments — I'm rejecting the casing change they ask for

All four are from the AI reviewer and make the same argument: change **Workspace admin** / **Card admin** to Title Case so they match "Workspace Admin" used elsewhere in each article. That would break the convention the comments cite. I replied in each thread; no code changes pushed.

HELPSITE_NAMING_CONVENTIONS.md:21-22 says "Use the exact text shown in the product UI. Match capitalization exactly." :37-39 says "Use Sentence case (match the UI exactly). Do not alter capitalization." The UI is the source of truth, not the surrounding prose — the same file adds "If the UI changes, this document must be updated."

The product renders these labels in sentence case. src/languages/en.ts:4838-4859roleName() returns 'Workspace admin' and 'Card admin', and the whole family follows: 'People admin', 'Payments admin', 'Auditor', 'Editor', 'Member', 'Owner'. The Title Case "Workspace Admin(s)" scattered through these articles is the stale text, and all of it sits outside this PR's diff.

Two lines I do want your call on

The reviewer was half right in two places — not about Title Case, but because I mixed both casings inside a single sentence:

Line Current text Introduced by
View-and-Reconcile-Expensify-Card-Expenses.md:55 "Workspace Admins and Card admins of a workspace…" this PR
Statement-Matching-and-Reconciliation.md:5 (internalScope) "Audience is Workspace Admins and Card admins…" this PR

I left both alone because fixing them cleanly is a trade-off, not a one-liner. Sentence case matches the UI but leaves each line out of step with four other pre-existing "Workspace Admins" usages in the same article; Title Case matches the article but contradicts the product. Either way one axis breaks, so I didn't want to pick for you.

Reply @MelvinBot use sentence case and I'll fix those two lines here. Otherwise they're best folded into a separate docs sweep.

Recommended follow-up

These articles have drifted from the current UI in two ways, both pre-existing and both bigger than this PR:

  1. Role labels are Title Case throughout but the product now uses sentence case.
  2. The Reconciliation section name — Statement-Matching-and-Reconciliation.md:23 and the "Why Don't I See Card Statements Under Reconciliation?" heading still say Reconciliation, but SearchUIUtils.ts:5107 puts Card statements under Accounting. This is the same point I raised earlier in the thread.

Say the word and I'll open an issue for a single sweep covering both.

I did not run the app for this one — the question was which string the product renders, and roleName() answers it directly.

@dukenv0307

Copy link
Copy Markdown
Contributor

@stephanieelliott All yours!

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

HelpDot Documentation Review

OVERALL ASSESSMENT
This PR documents the new Reconciliation - All Expenses export template across four existing articles. The changes are cohesive, add genuinely useful content, and most edits fit their existing article scope well. The largest new addition is a full task-based export workflow plus a troubleshooting question in Statement-Matching-and-Reconciliation.md. Overall quality is good, with the main issue being inconsistent role terminology.

SCORES SUMMARY

  • Readability: 9/10 - Steps are sequential, action-oriented, and clear. Template descriptions are concise and consistent across files. The new export procedure reads cleanly.
  • AI Readiness: 9/10 - internalScope and keywords were thoughtfully updated (including adding the exact template name and Card admin audience). The new heading 'How to Export Company Card Transactions for Reconciliation' is a strong full-feature-name How-to heading. Headings use only H1/H2 and are task/question-based.
  • Style Compliance: 7/10 - UI labels are bolded and match the product. Navigation uses the approved unified web/mobile sentence. Main deduction: inconsistent role capitalization.

KEY FINDINGS

  • Inconsistent role terminology across the PR: 'Workspace Admin' / 'Card admins' (capitalized) in View-and-Reconcile-Expensify-Card-Expenses.md vs. 'Workspace admin' / 'Card admin' (lowercase) in the three reports-and-expenses files. Pick one exact UI casing and apply it uniformly per the Core UI Referencing Rules.
  • The Reconciliation - All Expenses template description is repeated near-verbatim in four files. Acceptable for retrieval, and wording is currently consistent (good); keep it identical to avoid drift.
  • Positive: the new Statement-Matching section adds proper navigation, sequential steps, exact bolded UI labels (Spend, Card statements, Selected, Export), and a clear Concierge/Inbox delivery note.
  • Positive: the added troubleshooting heading ('Why Don't I See...') is question-based and searchable, matching the exact template name.

RECOMMENDATIONS

  • Standardize the role names to a single exact casing across all four files.
  • Confirm 'Workspace admin' / 'Card admin' match the exact product UI casing; update whichever spelling does not.
  • Optional: consider a screenshot placeholder for the Selected > Export menu showing the template, since that menu location is a likely point of confusion.

FILES REVIEWED

  • docs/articles/new-expensify/expensify-card/View-and-Reconcile-Expensify-Card-Expenses.md - Good; added Export step and template callout. Uses capitalized 'Card admins'.
  • docs/articles/new-expensify/reports-and-expenses/How-to-Export-Expenses.md - Good; template added to list with correct visibility note.
  • docs/articles/new-expensify/reports-and-expenses/How-to-Export-Reports.md - Good; mirrors Export-Expenses addition.
  • docs/articles/new-expensify/reports-and-expenses/Statement-Matching-and-Reconciliation.md - Strongest addition; full workflow and troubleshooting heading. Uses lowercase 'admin'.

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

Line 55 of View-and-Reconcile-Expensify-Card-Expenses.md and the internalScope front matter of Statement-Matching-and-Reconciliation.md each mixed Title Case and sentence case in one sentence ("Workspace Admins and Card admins"). Both lines were added by this PR. Sentence case matches the product, where roleName() in src/languages/en.ts returns 'Workspace admin' and 'Card admin', and matches docs/HELPSITE_NAMING_CONVENTIONS.md, which says to match the UI capitalization exactly.

Co-authored-by: Nguyen Van Duc <dukenv0307@users.noreply.github.com>
@github-actions github-actions Bot changed the title Docs updates for E/A#99309 Document Reconciliation - All Expenses export template [No QA] Docs updates for E/A#99309 Document Reconciliation - All Expenses export template Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

HelpDot Apply this label if the issue relates to ExpensifyHelp

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants