[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-expense-entry":3,"mdc--yu5vil-key":36,"related-org-microsoft-expense-entry":3023,"related-repo-microsoft-expense-entry":3220},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":34,"mdContent":35},"expense-entry","process receipts and log business expenses","Processes expense receipts and creates expense report entries following company policies with approval thresholds and validation rules. Use when user says \"log this expense\", \"process this receipt\", \"create expense entry\", \"submit expense\", \"add to expense report\", uploads a receipt image, or provides purchase documentation to expense.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22,23],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Finance","finance",{"name":20,"slug":21,"type":15},"Accounting","accounting",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},"Dataverse","dataverse",41,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills","2026-04-06T18:36:20.675642",null,9,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":29},[],"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fexpense-report-entry","---\nname: expense-entry\ndescription: Processes expense receipts and creates expense report entries following company policies with approval thresholds and validation rules. Use when user says \"log this expense\", \"process this receipt\", \"create expense entry\", \"submit expense\", \"add to expense report\", uploads a receipt image, or provides purchase documentation to expense.\nmetadata:\n  author: Dataverse\n  version: 1.0.0\n  category: finance\n---\n\n# Expense Entry Business Skill\n\nThis skill defines the business process for creating expense report entries from receipt information. It enforces company expense policies, proper categorization, and validation rules.\n\n## Prerequisites\n\nThis skill requires an **Expense Report** table to be created in your Dataverse environment. Use the schema below to create the table, or adapt the skill to work with your existing expense management table.\n\n### Required Table Schema: Expense Report\n\nCreate a custom table named `Expense Report` (logical name will be `cr###_expensereport` where ### is your publisher prefix) with these columns:\n\n| Display Name | Logical Name | Type | Description |\n|-------------|--------------|------|-------------|\n| Report ID | cr###_reportid | Text (100) | Unique ID (e.g., ER-2025-1120-001) |\n| Report Name | cr###_reportname | Text (200) | Descriptive name |\n| Report Status | cr###_reportstatus | Choice | Draft, Submitted, Pending Approval, Approved, Rejected, Paid |\n| Total Amount | cr###_totalamount | Currency | Pre-tax expense amount |\n| Tax Amount | cr###_taxamount | Currency | Sum of tax amounts |\n| Corporate Card Amount | cr###_corporatecardamount | Currency | Amount on corporate card |\n| Personal Card Amount | cr###_personalcardamount | Currency | Amount requiring reimbursement |\n| Approval Tier | cr###_approvaltier | Choice | None, Manager, Controller, CFO |\n| Days Since Expense | cr###_dayssinceexpense | Whole Number | Days between expense and submission |\n| Late Submission | cr###_latesubmission | Yes\u002FNo | True if > 90 days |\n| Billable Amount | cr###_billableamount | Currency | Client-billable portion |\n| Internal Amount | cr###_internalamount | Currency | Internal expense portion |\n| Project Code | cr###_projectcode | Text (50) | Project code if billable |\n| Expense Categories | cr###_expensecategories | Text (500) | Categories (Hotel, Meals, Travel, etc.) |\n| Duplicate Status | cr###_duplicatestatus | Choice | No Duplicates, Duplicates Found, Not Checked |\n| Policy Violations | cr###_policyviolations | Text (1000) | Any policy violations |\n| Merchant Name | cr###_merchantname | Text (200) | Vendor\u002Fmerchant name |\n| Transaction Date | cr###_transactiondate | Date Only | Receipt\u002Ftransaction date |\n| Submission Date | cr###_submissiondate | Date Only | Date submitted |\n| Employee | cr###_employee | Lookup (Contact) | Employee who submitted |\n| Approved By | cr###_approvedby | Lookup (User) | Approving manager |\n| Approved Date | cr###_approveddate | Date Only | Approval date |\n\n> **Note:** Replace `cr###_` with your actual publisher prefix (e.g., `contoso_`, `new_`, etc.)\n\n### Alternative: Dynamics 365 Finance Integration\nIf your organization uses Dynamics 365 Finance, this skill can be adapted to work with the `msdyn_expense` table from the Expense Management module.\n\n## Instructions\n\n### When to Use This Skill\n\nUse this skill when:\n- Processing expense receipts (images, PDFs, or text)\n- Creating expense report entries from purchase documentation\n- Categorizing and validating business expenses\n- Ensuring compliance with company expense policies\n\n**DO NOT** attempt to create expense entries without this skill - proper categorization and validation are required.\n\n### Dataset Table Reference\n\nAll expense data is stored in your **Expense Report** table (see Prerequisites for schema). The skill references these fields using placeholder notation:\n- `[reportid]`: Unique identifier (e.g., ER-2025-1120-001)\n- `[reportstatus]`: Draft, Submitted, Pending Approval, Approved, Rejected, Paid\n- `[totalamount]`: Total expense amount before tax\n- `[taxamount]`: Sum of all tax amounts\n- `[corporatecardamount]`: Amount paid with corporate card\n- `[personalcardamount]`: Amount paid with personal card (requires reimbursement)\n- `[approvaltier]`: None, Manager, Controller, CFO (based on amount)\n- `[dayssinceexpense]`: Days between expense and submission\n- `[latesubmission]`: Yes\u002FNo (if > 90 days)\n- `[billableamount]`: Amount billable to clients\n- `[internalamount]`: Amount for internal expenses\n- `[projectcode]`: Project code if billable\n- `[expensecategories]`: Categories included (e.g., \"Hotel, Meals, Travel\")\n- `[duplicatestatus]`: No Duplicates, Duplicates Found, Not Checked\n- `[policyviolations]`: Any policy violations detected\n\n### Workflow Overview\n\n### Step 1: Extract Receipt Information\n\nFrom the receipt, extract:\n- **Merchant name** and merchant category (airlines, hotels, restaurants, retailers, etc.)\n- **Transaction date** (receipt date, not submission date)\n- **Total amount** (pre-tax amount)\n- **Tax amount** (separately itemized)\n- **Currency** (default to USD if not specified)\n- **Payment method** (Corporate Card vs Personal Card - critical for reimbursement)\n- **Itemized details** (line items if available for multi-item receipts)\n- **Receipt description\u002Fpurpose** (business justification)\n\n### Step 2: Categorize the Expense (CRITICAL)\n\nBased on merchant category and itemized details, assign the correct **expense category** for the `expense_categories` field:\n\n#### Hotel\u002FLodging\n- Room rates, resort fees, hotel parking\n- Hotel wifi charges (when part of hotel bill)\n- **Merchant Categories**: Hotels, Lodges, Resorts\n- **EXCLUDE**: AirBnB or short-term rentals (use \"Travel\")\n\n#### Meals\n- Business dinners with clients\u002Fpartners\n- Individual employee meals during travel\n- **Merchant Categories**: Restaurants, Cafes, Catering\n- **Validation**: If > $75 per person, require attendee list in description\n\n#### Office Supplies\n- Pens, paper, folders, toner, staplers\n- USB drives, cables (under $50)\n- Printer supplies, desk accessories\n- **Merchant Categories**: Office Supply Stores, Stationery Stores\n\n#### Travel\n- Airline tickets, baggage fees, seat upgrades\n- Taxi, Uber, Lyft, rental cars\n- Parking fees, tolls, train tickets\n- **Merchant Categories**: Airlines, Travel Agencies, Transportation Services\n\n#### Software & Subscriptions\n- SaaS subscriptions, software licenses\n- Cloud services, API usage fees\n- **Merchant Categories**: Software Vendors, Online Services\n\n#### Equipment & Hardware\n- Laptops, monitors, keyboards (over $100)\n- Mobile devices, tablets\n- **Merchant Categories**: Electronics Stores\n- **Validation**: Items over $500 require asset tag assignment\n\n#### Conference & Training\n- Conference registrations, seminar fees\n- Training course fees, certification exams\n- **REQUIRES**: Event name and dates in description\n\n### Step 3: Apply Business Rules & Validation\n\n#### Approval Threshold Rules (Sets `approval_tier` field)\n- **Under $500**: approval_tier = \"None\" (auto-approved)\n- **$500 - $2,000**: [approvaltier] = \"Manager\"\n- **$2,000 - $5,000**: [approvaltier] = \"Controller\"\n- **Over $5,000**: [approvaltier] = \"CFO\" (requires business case documentation)\n\n#### Payment Method Tracking (Sets `[corporatecardamount]` and `[personalcardamount]`)\n- If **Corporate Card**: Set `[corporatecardamount]` = total amount, `[personalcardamount]` = 0\n- If **Personal Card**: Set `[personalcardamount]` = total amount, `[corporatecardamount]` = 0\n- Corporate Card = no reimbursement needed\n- Personal Card = requires reimbursement workflow\n\n#### Project & Billability Rules (Sets `[billableamount]`, `[internalamount]`, `[projectcode]`)\n- If **client name** mentioned (not \"Internal\"):\n  - Set `[billableamount]` = total amount, `[internalamount]` = 0\n  - Extract and populate `[projectcode]` (search for active projects for that client)\n  - If no project code found, flag for assignment\n\n- If **internal expense**:\n  - Set `[internalamount]` = total amount, `[billableamount]` = 0\n  - Set `[projectcode]` = empty\n  - Use department cost center code\n\n#### Duplicate Detection (Sets `[duplicatestatus]` field)\n- Search for existing expense entries with:\n  - Same merchant name\n  - Same transaction date\n  - Same amount (within $1 tolerance)\n  - Same employee\n- If found: Set `[duplicatestatus]` = \"Duplicates Found\" and **DO NOT CREATE**\n- If no duplicates: Set `[duplicatestatus]` = \"No Duplicates\"\n\n#### 90-Day Policy Validation (Sets `[dayssinceexpense]` and `[latesubmission]`)\n- Calculate `[dayssinceexpense]` = submission date - transaction date\n- If `[dayssinceexpense]` > 90: Set `[latesubmission]` = \"Yes\"\n- If `[dayssinceexpense]` \u003C= 90: Set `[latesubmission]` = \"No\"\n\n### Step 4: Create Expense Report Record\n\nCreate record in your **Expense Report** table with:\n\n**Required Fields**:\n- `[reportid]`: Generate unique ID (format: ER-YYYY-MMDD-XXX)\n- `[reportname]`: \"[Month Year] [Category] - [Employee Name]\"\n- `[submissiondate]`: Today's date (YYYY-MM-DD format)\n- `[employee]`: Lookup to Contact record for employee\n- `[reportstatus]`: \"Submitted\" (or \"Draft\" if saving for later)\n- `[totalamount]`: Expense amount before tax (numeric)\n- `[taxamount]`: Tax amount (numeric)\n\n**Payment Method Fields**:\n- `[corporatecardamount]`: Amount paid with corporate card\n- `[personalcardamount]`: Amount paid with personal card\n\n**Approval Fields**:\n- `[approvaltier]`: Based on amount thresholds from Step 3\n- `[approvedby]`: Empty (will be filled after approval)\n- `[approveddate]`: Empty (will be filled after approval)\n\n**Validation Fields**:\n- `[dayssinceexpense]`: Calculated in Step 3\n- `[latesubmission]`: \"Yes\" or \"No\" based on 90-day policy\n- `[duplicatestatus]`: Result from duplicate detection\n- `[policyviolations]`: Any violations detected (empty if none)\n\n**Billability Fields**:\n- `[billableamount]`: Amount billable to clients\n- `[internalamount]`: Amount for internal expenses\n- `[projectcode]`: Project code if billable\n\n**Category Field**:\n- `[expensecategories]`: Categories from Step 2 (e.g., \"Hotel, Meals, Travel\")\n\n### Step 5: Create Supporting Records\n\n#### If Approval Required (approval_tier not \"None\"):\n- Create `task` record for approver\n- Link to expense report\n- Subject: \"Approve Expense: [Category] - $[Amount] - [Merchant]\"\n- Assigned to: Based on `approval_tier` (Manager\u002FController\u002FCFO)\n- Due date: 3 business days from submission\n\n#### If Billable to Client:\n- Create `note` linked to Project\n- Content: \"Expense incurred: [Category] - $[Amount] - [Date] - [Description]\"\n- Link to both Project and Expense Report for audit trail\n\n### Step 6: Update Report Status\n\nSet `[reportstatus]` based on approval requirements:\n- If `[approvaltier]` = \"None\": Set `[reportstatus]` = \"Approved\"\n- If `[approvaltier]` = \"Manager\", \"Controller\", or \"CFO\": Set `[reportstatus]` = \"Pending Approval\"\n\n## Validation & Quality Checks\n\nBefore finalizing expense entry:\n\n1. **Amount Reasonableness**:\n   - Hotel: $100-$500\u002Fnight typical (flag if outside range)\n   - Meals: $15-$75 per person typical\n   - Travel: $10-$150 typical for ground transport\n   - Office supplies: Usually under $100\n\n2. **Date Validation**:\n   - Transaction date not in future\n   - Calculate `[dayssinceexpense]` accurately\n   - Set `[latesubmission]` = \"Yes\" if > 90 days\n\n3. **Policy Compliance**:\n   - Meals over $75\u002Fperson: Verify attendee list in description\n   - Hotel: Not from home city (unless business reason documented)\n   - Expenses over $25: Receipt required\n\n4. **Duplicate Detection**:\n   - Always search before creating\n   - Set `[duplicatestatus]` appropriately\n\n## Error Handling\n\nIf validation fails:\n- **DO NOT CREATE** incomplete\u002Finvalid expense entry\n- Return specific error message:\n  - \"Missing required field: [field name]\"\n  - \"Invalid category: [attempted category]\"\n  - \"Duplicate expense detected: [details]\"\n  - \"Policy violation: [specific rule]\"\n  - \"Amount exceeds threshold: Requires [approval level]\"\n\n## Examples\n\n### Example 1: Standard Office Supplies Expense\n\n**User says:** \"I bought office supplies for the team yesterday. Create an expense for this receipt: Office Depot, $247.50 total ($227.89 + $19.61 tax), paid Dec 2, 2025 with corporate card. Items: toner cartridge, copy paper, folders.\"\n\n**Actions:**\n1. Extract receipt data: Merchant = \"Office Depot\", Amount = $227.89, Tax = $19.61, Date = 2025-12-02, Payment = Corporate Card\n2. Categorize: Merchant category = Office Supply Stores → expense_categories = \"Office Supplies\"\n3. Apply rules: $247.50 \u003C $500 → approval_tier = \"None\" (auto-approved)\n4. Validate: No duplicates found, 1 day since expense → late_submission_flag = \"No\"\n5. Create expense_reports record with all fields populated\n\n**Result:**\n```\nExpense Report Created: ER-2025-1203-015\nStatus: Approved (auto-approved)\nAmount: $247.50 (Corporate Card)\nCategory: Office Supplies\nNo reimbursement needed\nNo manager approval required\n```\n\n### Example 2: Client Dinner Requiring Approval\n\n**User says:** \"Log this dinner receipt: The Capital Grille, $425 total ($390 + $35 tax), personal card, client dinner with Contoso team on Dec 5. Attendees: John Smith, Sarah Chen, myself.\"\n\n**Actions:**\n1. Extract: Merchant = \"The Capital Grille\", Amount = $390, Tax = $35, Date = 2025-12-05, Payment = Personal Card\n2. Categorize: Restaurant → [expensecategories] = \"Meals\"\n3. Validate: $425\u002F3 people = $141.67\u002Fperson > $75 threshold → attendee list required (provided)\n4. Apply rules: $425 ≥ $500 threshold → [approvaltier] = \"Manager\"\n5. Set [billableamount] = $425 (client expense), find Contoso project code\n6. Create record with [reportstatus] = \"Pending Approval\"\n7. Create approval task for manager\n\n**Result:**\n```\nExpense Report Created: ER-2025-1206-022\nStatus: Pending Approval (Manager)\nAmount: $425.00 (Personal Card - Reimbursement Required)\nCategory: Meals\nBillable to: Contoso (Project: PROJ-CONTOSO-2025)\nApproval task created for: [Manager Name]\n```\n\n### Example 3: Late Travel Expense with Warning\n\n**User says:** \"Need to expense this flight from September: Delta Airlines $650, Sept 15, corporate card, NYC to Chicago for internal training.\"\n\n**Actions:**\n1. Extract: Merchant = \"Delta Airlines\", Amount = $650, Date = 2025-09-15, Payment = Corporate Card\n2. Categorize: Airlines → expense_categories = \"Travel\"\n3. Calculate: Days since expense = 82 days (approaching 90-day limit)\n4. Apply rules: $650 ≥ $500 → approval_tier = \"Manager\"\n5. Set internal_amount = $650, billable_amount = $0\n6. Create record with late_submission_flag = \"No\" (still under 90 days)\n7. Create approval task\n\n**Result:**\n```\nExpense Report Created: ER-2025-1206-023\nStatus: Pending Approval (Manager)\nAmount: $650.00 (Corporate Card)\nCategory: Travel\n⚠️ Warning: 82 days since expense (90-day limit approaching)\nApproval task created for: [Manager Name]\n```\n\n## Troubleshooting\n\n### Error: Duplicate expense detected\n**Cause:** Expense with same merchant, date, and amount already exists\n**Solution:**\n- Do NOT create duplicate record\n- Return: \"Duplicate expense detected: [ER-ID] created on [date] for $[amount] at [merchant]\"\n- Ask user to verify if this is a different expense\n\n### Error: Missing required field\n**Cause:** Receipt information incomplete (no amount, date, or merchant)\n**Solution:**\n- Do NOT create incomplete record\n- Return: \"Missing required field: [field name]\"\n- Request user provide missing information\n\n### Error: Policy violation - Late submission\n**Cause:** Expense older than 90 days\n**Solution:**\n- Set `[latesubmission]` = \"Yes\"\n- Set `[policyviolations]` = \"Late submission: [X] days past 90-day limit\"\n- Create record but flag for additional approval\n- Note: Requires Controller approval regardless of amount\n\n### Error: Meals expense over threshold without attendees\n**Cause:** Meal expense > $75\u002Fperson but no attendee list provided\n**Solution:**\n- Do NOT create record\n- Return: \"Meals over $75\u002Fperson require attendee list. Please provide names of attendees.\"\n- Wait for user to provide attendee information\n\nAn expense entry is complete and valid when:\n- ✓ Category correctly assigned in `[expensecategories]`\n- ✓ Approval tier determined based on amount thresholds\n- ✓ Payment method properly tracked in `[corporatecardamount]` or `[personalcardamount]`\n- ✓ Duplicate check performed and `[duplicatestatus]` set\n- ✓ 90-day policy validated with `[dayssinceexpense]` and `[latesubmission]`\n- ✓ Billability correctly determined in `[billableamount]` and `[internalamount]`\n- ✓ Record created in **Expense Report** table with all required fields\n- ✓ Approval task created if `[approvaltier]` requires it\n- ✓ `[reportstatus]` set appropriately based on approval requirements",{"data":37,"body":40},{"name":4,"description":6,"metadata":38},{"author":24,"version":39,"category":18},"1.0.0",{"type":41,"children":42},"root",[43,52,58,65,78,85,106,640,678,684,697,703,709,714,739,749,755,766,934,940,946,951,1033,1039,1059,1066,1099,1105,1137,1143,1170,1176,1203,1209,1231,1237,1268,1274,1297,1303,1317,1378,1398,1459,1483,1580,1592,1652,1670,1721,1727,1738,1747,1844,1853,1875,1884,1918,1927,1970,1979,2009,2018,2031,2037,2043,2104,2110,2156,2162,2173,2212,2218,2223,2353,2359,2364,2439,2445,2451,2461,2469,2497,2505,2517,2523,2532,2539,2601,2608,2617,2623,2632,2639,2677,2684,2693,2699,2705,2720,2765,2771,2784,2807,2813,2826,2867,2873,2886,2904,2909],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"expense-entry-business-skill",[49],{"type":50,"value":51},"text","Expense Entry Business Skill",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56],{"type":50,"value":57},"This skill defines the business process for creating expense report entries from receipt information. It enforces company expense policies, proper categorization, and validation rules.",{"type":44,"tag":59,"props":60,"children":62},"h2",{"id":61},"prerequisites",[63],{"type":50,"value":64},"Prerequisites",{"type":44,"tag":53,"props":66,"children":67},{},[68,70,76],{"type":50,"value":69},"This skill requires an ",{"type":44,"tag":71,"props":72,"children":73},"strong",{},[74],{"type":50,"value":75},"Expense Report",{"type":50,"value":77}," table to be created in your Dataverse environment. Use the schema below to create the table, or adapt the skill to work with your existing expense management table.",{"type":44,"tag":79,"props":80,"children":82},"h3",{"id":81},"required-table-schema-expense-report",[83],{"type":50,"value":84},"Required Table Schema: Expense Report",{"type":44,"tag":53,"props":86,"children":87},{},[88,90,96,98,104],{"type":50,"value":89},"Create a custom table named ",{"type":44,"tag":91,"props":92,"children":94},"code",{"className":93},[],[95],{"type":50,"value":75},{"type":50,"value":97}," (logical name will be ",{"type":44,"tag":91,"props":99,"children":101},{"className":100},[],[102],{"type":50,"value":103},"cr###_expensereport",{"type":50,"value":105}," where ### is your publisher prefix) with these columns:",{"type":44,"tag":107,"props":108,"children":109},"table",{},[110,139],{"type":44,"tag":111,"props":112,"children":113},"thead",{},[114],{"type":44,"tag":115,"props":116,"children":117},"tr",{},[118,124,129,134],{"type":44,"tag":119,"props":120,"children":121},"th",{},[122],{"type":50,"value":123},"Display Name",{"type":44,"tag":119,"props":125,"children":126},{},[127],{"type":50,"value":128},"Logical Name",{"type":44,"tag":119,"props":130,"children":131},{},[132],{"type":50,"value":133},"Type",{"type":44,"tag":119,"props":135,"children":136},{},[137],{"type":50,"value":138},"Description",{"type":44,"tag":140,"props":141,"children":142},"tbody",{},[143,167,190,213,236,258,280,302,324,347,370,392,414,437,460,482,505,527,550,572,595,618],{"type":44,"tag":115,"props":144,"children":145},{},[146,152,157,162],{"type":44,"tag":147,"props":148,"children":149},"td",{},[150],{"type":50,"value":151},"Report ID",{"type":44,"tag":147,"props":153,"children":154},{},[155],{"type":50,"value":156},"cr###_reportid",{"type":44,"tag":147,"props":158,"children":159},{},[160],{"type":50,"value":161},"Text (100)",{"type":44,"tag":147,"props":163,"children":164},{},[165],{"type":50,"value":166},"Unique ID (e.g., ER-2025-1120-001)",{"type":44,"tag":115,"props":168,"children":169},{},[170,175,180,185],{"type":44,"tag":147,"props":171,"children":172},{},[173],{"type":50,"value":174},"Report Name",{"type":44,"tag":147,"props":176,"children":177},{},[178],{"type":50,"value":179},"cr###_reportname",{"type":44,"tag":147,"props":181,"children":182},{},[183],{"type":50,"value":184},"Text (200)",{"type":44,"tag":147,"props":186,"children":187},{},[188],{"type":50,"value":189},"Descriptive name",{"type":44,"tag":115,"props":191,"children":192},{},[193,198,203,208],{"type":44,"tag":147,"props":194,"children":195},{},[196],{"type":50,"value":197},"Report Status",{"type":44,"tag":147,"props":199,"children":200},{},[201],{"type":50,"value":202},"cr###_reportstatus",{"type":44,"tag":147,"props":204,"children":205},{},[206],{"type":50,"value":207},"Choice",{"type":44,"tag":147,"props":209,"children":210},{},[211],{"type":50,"value":212},"Draft, Submitted, Pending Approval, Approved, Rejected, Paid",{"type":44,"tag":115,"props":214,"children":215},{},[216,221,226,231],{"type":44,"tag":147,"props":217,"children":218},{},[219],{"type":50,"value":220},"Total Amount",{"type":44,"tag":147,"props":222,"children":223},{},[224],{"type":50,"value":225},"cr###_totalamount",{"type":44,"tag":147,"props":227,"children":228},{},[229],{"type":50,"value":230},"Currency",{"type":44,"tag":147,"props":232,"children":233},{},[234],{"type":50,"value":235},"Pre-tax expense amount",{"type":44,"tag":115,"props":237,"children":238},{},[239,244,249,253],{"type":44,"tag":147,"props":240,"children":241},{},[242],{"type":50,"value":243},"Tax Amount",{"type":44,"tag":147,"props":245,"children":246},{},[247],{"type":50,"value":248},"cr###_taxamount",{"type":44,"tag":147,"props":250,"children":251},{},[252],{"type":50,"value":230},{"type":44,"tag":147,"props":254,"children":255},{},[256],{"type":50,"value":257},"Sum of tax amounts",{"type":44,"tag":115,"props":259,"children":260},{},[261,266,271,275],{"type":44,"tag":147,"props":262,"children":263},{},[264],{"type":50,"value":265},"Corporate Card Amount",{"type":44,"tag":147,"props":267,"children":268},{},[269],{"type":50,"value":270},"cr###_corporatecardamount",{"type":44,"tag":147,"props":272,"children":273},{},[274],{"type":50,"value":230},{"type":44,"tag":147,"props":276,"children":277},{},[278],{"type":50,"value":279},"Amount on corporate card",{"type":44,"tag":115,"props":281,"children":282},{},[283,288,293,297],{"type":44,"tag":147,"props":284,"children":285},{},[286],{"type":50,"value":287},"Personal Card Amount",{"type":44,"tag":147,"props":289,"children":290},{},[291],{"type":50,"value":292},"cr###_personalcardamount",{"type":44,"tag":147,"props":294,"children":295},{},[296],{"type":50,"value":230},{"type":44,"tag":147,"props":298,"children":299},{},[300],{"type":50,"value":301},"Amount requiring reimbursement",{"type":44,"tag":115,"props":303,"children":304},{},[305,310,315,319],{"type":44,"tag":147,"props":306,"children":307},{},[308],{"type":50,"value":309},"Approval Tier",{"type":44,"tag":147,"props":311,"children":312},{},[313],{"type":50,"value":314},"cr###_approvaltier",{"type":44,"tag":147,"props":316,"children":317},{},[318],{"type":50,"value":207},{"type":44,"tag":147,"props":320,"children":321},{},[322],{"type":50,"value":323},"None, Manager, Controller, CFO",{"type":44,"tag":115,"props":325,"children":326},{},[327,332,337,342],{"type":44,"tag":147,"props":328,"children":329},{},[330],{"type":50,"value":331},"Days Since Expense",{"type":44,"tag":147,"props":333,"children":334},{},[335],{"type":50,"value":336},"cr###_dayssinceexpense",{"type":44,"tag":147,"props":338,"children":339},{},[340],{"type":50,"value":341},"Whole Number",{"type":44,"tag":147,"props":343,"children":344},{},[345],{"type":50,"value":346},"Days between expense and submission",{"type":44,"tag":115,"props":348,"children":349},{},[350,355,360,365],{"type":44,"tag":147,"props":351,"children":352},{},[353],{"type":50,"value":354},"Late Submission",{"type":44,"tag":147,"props":356,"children":357},{},[358],{"type":50,"value":359},"cr###_latesubmission",{"type":44,"tag":147,"props":361,"children":362},{},[363],{"type":50,"value":364},"Yes\u002FNo",{"type":44,"tag":147,"props":366,"children":367},{},[368],{"type":50,"value":369},"True if > 90 days",{"type":44,"tag":115,"props":371,"children":372},{},[373,378,383,387],{"type":44,"tag":147,"props":374,"children":375},{},[376],{"type":50,"value":377},"Billable Amount",{"type":44,"tag":147,"props":379,"children":380},{},[381],{"type":50,"value":382},"cr###_billableamount",{"type":44,"tag":147,"props":384,"children":385},{},[386],{"type":50,"value":230},{"type":44,"tag":147,"props":388,"children":389},{},[390],{"type":50,"value":391},"Client-billable portion",{"type":44,"tag":115,"props":393,"children":394},{},[395,400,405,409],{"type":44,"tag":147,"props":396,"children":397},{},[398],{"type":50,"value":399},"Internal Amount",{"type":44,"tag":147,"props":401,"children":402},{},[403],{"type":50,"value":404},"cr###_internalamount",{"type":44,"tag":147,"props":406,"children":407},{},[408],{"type":50,"value":230},{"type":44,"tag":147,"props":410,"children":411},{},[412],{"type":50,"value":413},"Internal expense portion",{"type":44,"tag":115,"props":415,"children":416},{},[417,422,427,432],{"type":44,"tag":147,"props":418,"children":419},{},[420],{"type":50,"value":421},"Project Code",{"type":44,"tag":147,"props":423,"children":424},{},[425],{"type":50,"value":426},"cr###_projectcode",{"type":44,"tag":147,"props":428,"children":429},{},[430],{"type":50,"value":431},"Text (50)",{"type":44,"tag":147,"props":433,"children":434},{},[435],{"type":50,"value":436},"Project code if billable",{"type":44,"tag":115,"props":438,"children":439},{},[440,445,450,455],{"type":44,"tag":147,"props":441,"children":442},{},[443],{"type":50,"value":444},"Expense Categories",{"type":44,"tag":147,"props":446,"children":447},{},[448],{"type":50,"value":449},"cr###_expensecategories",{"type":44,"tag":147,"props":451,"children":452},{},[453],{"type":50,"value":454},"Text (500)",{"type":44,"tag":147,"props":456,"children":457},{},[458],{"type":50,"value":459},"Categories (Hotel, Meals, Travel, etc.)",{"type":44,"tag":115,"props":461,"children":462},{},[463,468,473,477],{"type":44,"tag":147,"props":464,"children":465},{},[466],{"type":50,"value":467},"Duplicate Status",{"type":44,"tag":147,"props":469,"children":470},{},[471],{"type":50,"value":472},"cr###_duplicatestatus",{"type":44,"tag":147,"props":474,"children":475},{},[476],{"type":50,"value":207},{"type":44,"tag":147,"props":478,"children":479},{},[480],{"type":50,"value":481},"No Duplicates, Duplicates Found, Not Checked",{"type":44,"tag":115,"props":483,"children":484},{},[485,490,495,500],{"type":44,"tag":147,"props":486,"children":487},{},[488],{"type":50,"value":489},"Policy Violations",{"type":44,"tag":147,"props":491,"children":492},{},[493],{"type":50,"value":494},"cr###_policyviolations",{"type":44,"tag":147,"props":496,"children":497},{},[498],{"type":50,"value":499},"Text (1000)",{"type":44,"tag":147,"props":501,"children":502},{},[503],{"type":50,"value":504},"Any policy violations",{"type":44,"tag":115,"props":506,"children":507},{},[508,513,518,522],{"type":44,"tag":147,"props":509,"children":510},{},[511],{"type":50,"value":512},"Merchant Name",{"type":44,"tag":147,"props":514,"children":515},{},[516],{"type":50,"value":517},"cr###_merchantname",{"type":44,"tag":147,"props":519,"children":520},{},[521],{"type":50,"value":184},{"type":44,"tag":147,"props":523,"children":524},{},[525],{"type":50,"value":526},"Vendor\u002Fmerchant name",{"type":44,"tag":115,"props":528,"children":529},{},[530,535,540,545],{"type":44,"tag":147,"props":531,"children":532},{},[533],{"type":50,"value":534},"Transaction Date",{"type":44,"tag":147,"props":536,"children":537},{},[538],{"type":50,"value":539},"cr###_transactiondate",{"type":44,"tag":147,"props":541,"children":542},{},[543],{"type":50,"value":544},"Date Only",{"type":44,"tag":147,"props":546,"children":547},{},[548],{"type":50,"value":549},"Receipt\u002Ftransaction date",{"type":44,"tag":115,"props":551,"children":552},{},[553,558,563,567],{"type":44,"tag":147,"props":554,"children":555},{},[556],{"type":50,"value":557},"Submission Date",{"type":44,"tag":147,"props":559,"children":560},{},[561],{"type":50,"value":562},"cr###_submissiondate",{"type":44,"tag":147,"props":564,"children":565},{},[566],{"type":50,"value":544},{"type":44,"tag":147,"props":568,"children":569},{},[570],{"type":50,"value":571},"Date submitted",{"type":44,"tag":115,"props":573,"children":574},{},[575,580,585,590],{"type":44,"tag":147,"props":576,"children":577},{},[578],{"type":50,"value":579},"Employee",{"type":44,"tag":147,"props":581,"children":582},{},[583],{"type":50,"value":584},"cr###_employee",{"type":44,"tag":147,"props":586,"children":587},{},[588],{"type":50,"value":589},"Lookup (Contact)",{"type":44,"tag":147,"props":591,"children":592},{},[593],{"type":50,"value":594},"Employee who submitted",{"type":44,"tag":115,"props":596,"children":597},{},[598,603,608,613],{"type":44,"tag":147,"props":599,"children":600},{},[601],{"type":50,"value":602},"Approved By",{"type":44,"tag":147,"props":604,"children":605},{},[606],{"type":50,"value":607},"cr###_approvedby",{"type":44,"tag":147,"props":609,"children":610},{},[611],{"type":50,"value":612},"Lookup (User)",{"type":44,"tag":147,"props":614,"children":615},{},[616],{"type":50,"value":617},"Approving manager",{"type":44,"tag":115,"props":619,"children":620},{},[621,626,631,635],{"type":44,"tag":147,"props":622,"children":623},{},[624],{"type":50,"value":625},"Approved Date",{"type":44,"tag":147,"props":627,"children":628},{},[629],{"type":50,"value":630},"cr###_approveddate",{"type":44,"tag":147,"props":632,"children":633},{},[634],{"type":50,"value":544},{"type":44,"tag":147,"props":636,"children":637},{},[638],{"type":50,"value":639},"Approval date",{"type":44,"tag":641,"props":642,"children":643},"blockquote",{},[644],{"type":44,"tag":53,"props":645,"children":646},{},[647,652,654,660,662,668,670,676],{"type":44,"tag":71,"props":648,"children":649},{},[650],{"type":50,"value":651},"Note:",{"type":50,"value":653}," Replace ",{"type":44,"tag":91,"props":655,"children":657},{"className":656},[],[658],{"type":50,"value":659},"cr###_",{"type":50,"value":661}," with your actual publisher prefix (e.g., ",{"type":44,"tag":91,"props":663,"children":665},{"className":664},[],[666],{"type":50,"value":667},"contoso_",{"type":50,"value":669},", ",{"type":44,"tag":91,"props":671,"children":673},{"className":672},[],[674],{"type":50,"value":675},"new_",{"type":50,"value":677},", etc.)",{"type":44,"tag":79,"props":679,"children":681},{"id":680},"alternative-dynamics-365-finance-integration",[682],{"type":50,"value":683},"Alternative: Dynamics 365 Finance Integration",{"type":44,"tag":53,"props":685,"children":686},{},[687,689,695],{"type":50,"value":688},"If your organization uses Dynamics 365 Finance, this skill can be adapted to work with the ",{"type":44,"tag":91,"props":690,"children":692},{"className":691},[],[693],{"type":50,"value":694},"msdyn_expense",{"type":50,"value":696}," table from the Expense Management module.",{"type":44,"tag":59,"props":698,"children":700},{"id":699},"instructions",[701],{"type":50,"value":702},"Instructions",{"type":44,"tag":79,"props":704,"children":706},{"id":705},"when-to-use-this-skill",[707],{"type":50,"value":708},"When to Use This Skill",{"type":44,"tag":53,"props":710,"children":711},{},[712],{"type":50,"value":713},"Use this skill when:",{"type":44,"tag":715,"props":716,"children":717},"ul",{},[718,724,729,734],{"type":44,"tag":719,"props":720,"children":721},"li",{},[722],{"type":50,"value":723},"Processing expense receipts (images, PDFs, or text)",{"type":44,"tag":719,"props":725,"children":726},{},[727],{"type":50,"value":728},"Creating expense report entries from purchase documentation",{"type":44,"tag":719,"props":730,"children":731},{},[732],{"type":50,"value":733},"Categorizing and validating business expenses",{"type":44,"tag":719,"props":735,"children":736},{},[737],{"type":50,"value":738},"Ensuring compliance with company expense policies",{"type":44,"tag":53,"props":740,"children":741},{},[742,747],{"type":44,"tag":71,"props":743,"children":744},{},[745],{"type":50,"value":746},"DO NOT",{"type":50,"value":748}," attempt to create expense entries without this skill - proper categorization and validation are required.",{"type":44,"tag":79,"props":750,"children":752},{"id":751},"dataset-table-reference",[753],{"type":50,"value":754},"Dataset Table Reference",{"type":44,"tag":53,"props":756,"children":757},{},[758,760,764],{"type":50,"value":759},"All expense data is stored in your ",{"type":44,"tag":71,"props":761,"children":762},{},[763],{"type":50,"value":75},{"type":50,"value":765}," table (see Prerequisites for schema). The skill references these fields using placeholder notation:",{"type":44,"tag":715,"props":767,"children":768},{},[769,780,791,802,813,824,835,846,857,868,879,890,901,912,923],{"type":44,"tag":719,"props":770,"children":771},{},[772,778],{"type":44,"tag":91,"props":773,"children":775},{"className":774},[],[776],{"type":50,"value":777},"[reportid]",{"type":50,"value":779},": Unique identifier (e.g., ER-2025-1120-001)",{"type":44,"tag":719,"props":781,"children":782},{},[783,789],{"type":44,"tag":91,"props":784,"children":786},{"className":785},[],[787],{"type":50,"value":788},"[reportstatus]",{"type":50,"value":790},": Draft, Submitted, Pending Approval, Approved, Rejected, Paid",{"type":44,"tag":719,"props":792,"children":793},{},[794,800],{"type":44,"tag":91,"props":795,"children":797},{"className":796},[],[798],{"type":50,"value":799},"[totalamount]",{"type":50,"value":801},": Total expense amount before tax",{"type":44,"tag":719,"props":803,"children":804},{},[805,811],{"type":44,"tag":91,"props":806,"children":808},{"className":807},[],[809],{"type":50,"value":810},"[taxamount]",{"type":50,"value":812},": Sum of all tax amounts",{"type":44,"tag":719,"props":814,"children":815},{},[816,822],{"type":44,"tag":91,"props":817,"children":819},{"className":818},[],[820],{"type":50,"value":821},"[corporatecardamount]",{"type":50,"value":823},": Amount paid with corporate card",{"type":44,"tag":719,"props":825,"children":826},{},[827,833],{"type":44,"tag":91,"props":828,"children":830},{"className":829},[],[831],{"type":50,"value":832},"[personalcardamount]",{"type":50,"value":834},": Amount paid with personal card (requires reimbursement)",{"type":44,"tag":719,"props":836,"children":837},{},[838,844],{"type":44,"tag":91,"props":839,"children":841},{"className":840},[],[842],{"type":50,"value":843},"[approvaltier]",{"type":50,"value":845},": None, Manager, Controller, CFO (based on amount)",{"type":44,"tag":719,"props":847,"children":848},{},[849,855],{"type":44,"tag":91,"props":850,"children":852},{"className":851},[],[853],{"type":50,"value":854},"[dayssinceexpense]",{"type":50,"value":856},": Days between expense and submission",{"type":44,"tag":719,"props":858,"children":859},{},[860,866],{"type":44,"tag":91,"props":861,"children":863},{"className":862},[],[864],{"type":50,"value":865},"[latesubmission]",{"type":50,"value":867},": Yes\u002FNo (if > 90 days)",{"type":44,"tag":719,"props":869,"children":870},{},[871,877],{"type":44,"tag":91,"props":872,"children":874},{"className":873},[],[875],{"type":50,"value":876},"[billableamount]",{"type":50,"value":878},": Amount billable to clients",{"type":44,"tag":719,"props":880,"children":881},{},[882,888],{"type":44,"tag":91,"props":883,"children":885},{"className":884},[],[886],{"type":50,"value":887},"[internalamount]",{"type":50,"value":889},": Amount for internal expenses",{"type":44,"tag":719,"props":891,"children":892},{},[893,899],{"type":44,"tag":91,"props":894,"children":896},{"className":895},[],[897],{"type":50,"value":898},"[projectcode]",{"type":50,"value":900},": Project code if billable",{"type":44,"tag":719,"props":902,"children":903},{},[904,910],{"type":44,"tag":91,"props":905,"children":907},{"className":906},[],[908],{"type":50,"value":909},"[expensecategories]",{"type":50,"value":911},": Categories included (e.g., \"Hotel, Meals, Travel\")",{"type":44,"tag":719,"props":913,"children":914},{},[915,921],{"type":44,"tag":91,"props":916,"children":918},{"className":917},[],[919],{"type":50,"value":920},"[duplicatestatus]",{"type":50,"value":922},": No Duplicates, Duplicates Found, Not Checked",{"type":44,"tag":719,"props":924,"children":925},{},[926,932],{"type":44,"tag":91,"props":927,"children":929},{"className":928},[],[930],{"type":50,"value":931},"[policyviolations]",{"type":50,"value":933},": Any policy violations detected",{"type":44,"tag":79,"props":935,"children":937},{"id":936},"workflow-overview",[938],{"type":50,"value":939},"Workflow Overview",{"type":44,"tag":79,"props":941,"children":943},{"id":942},"step-1-extract-receipt-information",[944],{"type":50,"value":945},"Step 1: Extract Receipt Information",{"type":44,"tag":53,"props":947,"children":948},{},[949],{"type":50,"value":950},"From the receipt, extract:",{"type":44,"tag":715,"props":952,"children":953},{},[954,964,974,984,994,1003,1013,1023],{"type":44,"tag":719,"props":955,"children":956},{},[957,962],{"type":44,"tag":71,"props":958,"children":959},{},[960],{"type":50,"value":961},"Merchant name",{"type":50,"value":963}," and merchant category (airlines, hotels, restaurants, retailers, etc.)",{"type":44,"tag":719,"props":965,"children":966},{},[967,972],{"type":44,"tag":71,"props":968,"children":969},{},[970],{"type":50,"value":971},"Transaction date",{"type":50,"value":973}," (receipt date, not submission date)",{"type":44,"tag":719,"props":975,"children":976},{},[977,982],{"type":44,"tag":71,"props":978,"children":979},{},[980],{"type":50,"value":981},"Total amount",{"type":50,"value":983}," (pre-tax amount)",{"type":44,"tag":719,"props":985,"children":986},{},[987,992],{"type":44,"tag":71,"props":988,"children":989},{},[990],{"type":50,"value":991},"Tax amount",{"type":50,"value":993}," (separately itemized)",{"type":44,"tag":719,"props":995,"children":996},{},[997,1001],{"type":44,"tag":71,"props":998,"children":999},{},[1000],{"type":50,"value":230},{"type":50,"value":1002}," (default to USD if not specified)",{"type":44,"tag":719,"props":1004,"children":1005},{},[1006,1011],{"type":44,"tag":71,"props":1007,"children":1008},{},[1009],{"type":50,"value":1010},"Payment method",{"type":50,"value":1012}," (Corporate Card vs Personal Card - critical for reimbursement)",{"type":44,"tag":719,"props":1014,"children":1015},{},[1016,1021],{"type":44,"tag":71,"props":1017,"children":1018},{},[1019],{"type":50,"value":1020},"Itemized details",{"type":50,"value":1022}," (line items if available for multi-item receipts)",{"type":44,"tag":719,"props":1024,"children":1025},{},[1026,1031],{"type":44,"tag":71,"props":1027,"children":1028},{},[1029],{"type":50,"value":1030},"Receipt description\u002Fpurpose",{"type":50,"value":1032}," (business justification)",{"type":44,"tag":79,"props":1034,"children":1036},{"id":1035},"step-2-categorize-the-expense-critical",[1037],{"type":50,"value":1038},"Step 2: Categorize the Expense (CRITICAL)",{"type":44,"tag":53,"props":1040,"children":1041},{},[1042,1044,1049,1051,1057],{"type":50,"value":1043},"Based on merchant category and itemized details, assign the correct ",{"type":44,"tag":71,"props":1045,"children":1046},{},[1047],{"type":50,"value":1048},"expense category",{"type":50,"value":1050}," for the ",{"type":44,"tag":91,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":50,"value":1056},"expense_categories",{"type":50,"value":1058}," field:",{"type":44,"tag":1060,"props":1061,"children":1063},"h4",{"id":1062},"hotellodging",[1064],{"type":50,"value":1065},"Hotel\u002FLodging",{"type":44,"tag":715,"props":1067,"children":1068},{},[1069,1074,1079,1089],{"type":44,"tag":719,"props":1070,"children":1071},{},[1072],{"type":50,"value":1073},"Room rates, resort fees, hotel parking",{"type":44,"tag":719,"props":1075,"children":1076},{},[1077],{"type":50,"value":1078},"Hotel wifi charges (when part of hotel bill)",{"type":44,"tag":719,"props":1080,"children":1081},{},[1082,1087],{"type":44,"tag":71,"props":1083,"children":1084},{},[1085],{"type":50,"value":1086},"Merchant Categories",{"type":50,"value":1088},": Hotels, Lodges, Resorts",{"type":44,"tag":719,"props":1090,"children":1091},{},[1092,1097],{"type":44,"tag":71,"props":1093,"children":1094},{},[1095],{"type":50,"value":1096},"EXCLUDE",{"type":50,"value":1098},": AirBnB or short-term rentals (use \"Travel\")",{"type":44,"tag":1060,"props":1100,"children":1102},{"id":1101},"meals",[1103],{"type":50,"value":1104},"Meals",{"type":44,"tag":715,"props":1106,"children":1107},{},[1108,1113,1118,1127],{"type":44,"tag":719,"props":1109,"children":1110},{},[1111],{"type":50,"value":1112},"Business dinners with clients\u002Fpartners",{"type":44,"tag":719,"props":1114,"children":1115},{},[1116],{"type":50,"value":1117},"Individual employee meals during travel",{"type":44,"tag":719,"props":1119,"children":1120},{},[1121,1125],{"type":44,"tag":71,"props":1122,"children":1123},{},[1124],{"type":50,"value":1086},{"type":50,"value":1126},": Restaurants, Cafes, Catering",{"type":44,"tag":719,"props":1128,"children":1129},{},[1130,1135],{"type":44,"tag":71,"props":1131,"children":1132},{},[1133],{"type":50,"value":1134},"Validation",{"type":50,"value":1136},": If > $75 per person, require attendee list in description",{"type":44,"tag":1060,"props":1138,"children":1140},{"id":1139},"office-supplies",[1141],{"type":50,"value":1142},"Office Supplies",{"type":44,"tag":715,"props":1144,"children":1145},{},[1146,1151,1156,1161],{"type":44,"tag":719,"props":1147,"children":1148},{},[1149],{"type":50,"value":1150},"Pens, paper, folders, toner, staplers",{"type":44,"tag":719,"props":1152,"children":1153},{},[1154],{"type":50,"value":1155},"USB drives, cables (under $50)",{"type":44,"tag":719,"props":1157,"children":1158},{},[1159],{"type":50,"value":1160},"Printer supplies, desk accessories",{"type":44,"tag":719,"props":1162,"children":1163},{},[1164,1168],{"type":44,"tag":71,"props":1165,"children":1166},{},[1167],{"type":50,"value":1086},{"type":50,"value":1169},": Office Supply Stores, Stationery Stores",{"type":44,"tag":1060,"props":1171,"children":1173},{"id":1172},"travel",[1174],{"type":50,"value":1175},"Travel",{"type":44,"tag":715,"props":1177,"children":1178},{},[1179,1184,1189,1194],{"type":44,"tag":719,"props":1180,"children":1181},{},[1182],{"type":50,"value":1183},"Airline tickets, baggage fees, seat upgrades",{"type":44,"tag":719,"props":1185,"children":1186},{},[1187],{"type":50,"value":1188},"Taxi, Uber, Lyft, rental cars",{"type":44,"tag":719,"props":1190,"children":1191},{},[1192],{"type":50,"value":1193},"Parking fees, tolls, train tickets",{"type":44,"tag":719,"props":1195,"children":1196},{},[1197,1201],{"type":44,"tag":71,"props":1198,"children":1199},{},[1200],{"type":50,"value":1086},{"type":50,"value":1202},": Airlines, Travel Agencies, Transportation Services",{"type":44,"tag":1060,"props":1204,"children":1206},{"id":1205},"software-subscriptions",[1207],{"type":50,"value":1208},"Software & Subscriptions",{"type":44,"tag":715,"props":1210,"children":1211},{},[1212,1217,1222],{"type":44,"tag":719,"props":1213,"children":1214},{},[1215],{"type":50,"value":1216},"SaaS subscriptions, software licenses",{"type":44,"tag":719,"props":1218,"children":1219},{},[1220],{"type":50,"value":1221},"Cloud services, API usage fees",{"type":44,"tag":719,"props":1223,"children":1224},{},[1225,1229],{"type":44,"tag":71,"props":1226,"children":1227},{},[1228],{"type":50,"value":1086},{"type":50,"value":1230},": Software Vendors, Online Services",{"type":44,"tag":1060,"props":1232,"children":1234},{"id":1233},"equipment-hardware",[1235],{"type":50,"value":1236},"Equipment & Hardware",{"type":44,"tag":715,"props":1238,"children":1239},{},[1240,1245,1250,1259],{"type":44,"tag":719,"props":1241,"children":1242},{},[1243],{"type":50,"value":1244},"Laptops, monitors, keyboards (over $100)",{"type":44,"tag":719,"props":1246,"children":1247},{},[1248],{"type":50,"value":1249},"Mobile devices, tablets",{"type":44,"tag":719,"props":1251,"children":1252},{},[1253,1257],{"type":44,"tag":71,"props":1254,"children":1255},{},[1256],{"type":50,"value":1086},{"type":50,"value":1258},": Electronics Stores",{"type":44,"tag":719,"props":1260,"children":1261},{},[1262,1266],{"type":44,"tag":71,"props":1263,"children":1264},{},[1265],{"type":50,"value":1134},{"type":50,"value":1267},": Items over $500 require asset tag assignment",{"type":44,"tag":1060,"props":1269,"children":1271},{"id":1270},"conference-training",[1272],{"type":50,"value":1273},"Conference & Training",{"type":44,"tag":715,"props":1275,"children":1276},{},[1277,1282,1287],{"type":44,"tag":719,"props":1278,"children":1279},{},[1280],{"type":50,"value":1281},"Conference registrations, seminar fees",{"type":44,"tag":719,"props":1283,"children":1284},{},[1285],{"type":50,"value":1286},"Training course fees, certification exams",{"type":44,"tag":719,"props":1288,"children":1289},{},[1290,1295],{"type":44,"tag":71,"props":1291,"children":1292},{},[1293],{"type":50,"value":1294},"REQUIRES",{"type":50,"value":1296},": Event name and dates in description",{"type":44,"tag":79,"props":1298,"children":1300},{"id":1299},"step-3-apply-business-rules-validation",[1301],{"type":50,"value":1302},"Step 3: Apply Business Rules & Validation",{"type":44,"tag":1060,"props":1304,"children":1306},{"id":1305},"approval-threshold-rules-sets-approval_tier-field",[1307,1309,1315],{"type":50,"value":1308},"Approval Threshold Rules (Sets ",{"type":44,"tag":91,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":50,"value":1314},"approval_tier",{"type":50,"value":1316}," field)",{"type":44,"tag":715,"props":1318,"children":1319},{},[1320,1330,1348,1363],{"type":44,"tag":719,"props":1321,"children":1322},{},[1323,1328],{"type":44,"tag":71,"props":1324,"children":1325},{},[1326],{"type":50,"value":1327},"Under $500",{"type":50,"value":1329},": approval_tier = \"None\" (auto-approved)",{"type":44,"tag":719,"props":1331,"children":1332},{},[1333,1338,1340,1346],{"type":44,"tag":71,"props":1334,"children":1335},{},[1336],{"type":50,"value":1337},"$500 - $2,000",{"type":50,"value":1339},": ",{"type":44,"tag":1341,"props":1342,"children":1343},"span",{},[1344],{"type":50,"value":1345},"approvaltier",{"type":50,"value":1347}," = \"Manager\"",{"type":44,"tag":719,"props":1349,"children":1350},{},[1351,1356,1357,1361],{"type":44,"tag":71,"props":1352,"children":1353},{},[1354],{"type":50,"value":1355},"$2,000 - $5,000",{"type":50,"value":1339},{"type":44,"tag":1341,"props":1358,"children":1359},{},[1360],{"type":50,"value":1345},{"type":50,"value":1362}," = \"Controller\"",{"type":44,"tag":719,"props":1364,"children":1365},{},[1366,1371,1372,1376],{"type":44,"tag":71,"props":1367,"children":1368},{},[1369],{"type":50,"value":1370},"Over $5,000",{"type":50,"value":1339},{"type":44,"tag":1341,"props":1373,"children":1374},{},[1375],{"type":50,"value":1345},{"type":50,"value":1377}," = \"CFO\" (requires business case documentation)",{"type":44,"tag":1060,"props":1379,"children":1381},{"id":1380},"payment-method-tracking-sets-corporatecardamount-and-personalcardamount",[1382,1384,1389,1391,1396],{"type":50,"value":1383},"Payment Method Tracking (Sets ",{"type":44,"tag":91,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":50,"value":821},{"type":50,"value":1390}," and ",{"type":44,"tag":91,"props":1392,"children":1394},{"className":1393},[],[1395],{"type":50,"value":832},{"type":50,"value":1397},")",{"type":44,"tag":715,"props":1399,"children":1400},{},[1401,1427,1449,1454],{"type":44,"tag":719,"props":1402,"children":1403},{},[1404,1406,1411,1413,1418,1420,1425],{"type":50,"value":1405},"If ",{"type":44,"tag":71,"props":1407,"children":1408},{},[1409],{"type":50,"value":1410},"Corporate Card",{"type":50,"value":1412},": Set ",{"type":44,"tag":91,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":50,"value":821},{"type":50,"value":1419}," = total amount, ",{"type":44,"tag":91,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":50,"value":832},{"type":50,"value":1426}," = 0",{"type":44,"tag":719,"props":1428,"children":1429},{},[1430,1431,1436,1437,1442,1443,1448],{"type":50,"value":1405},{"type":44,"tag":71,"props":1432,"children":1433},{},[1434],{"type":50,"value":1435},"Personal Card",{"type":50,"value":1412},{"type":44,"tag":91,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":50,"value":832},{"type":50,"value":1419},{"type":44,"tag":91,"props":1444,"children":1446},{"className":1445},[],[1447],{"type":50,"value":821},{"type":50,"value":1426},{"type":44,"tag":719,"props":1450,"children":1451},{},[1452],{"type":50,"value":1453},"Corporate Card = no reimbursement needed",{"type":44,"tag":719,"props":1455,"children":1456},{},[1457],{"type":50,"value":1458},"Personal Card = requires reimbursement workflow",{"type":44,"tag":1060,"props":1460,"children":1462},{"id":1461},"project-billability-rules-sets-billableamount-internalamount-projectcode",[1463,1465,1470,1471,1476,1477,1482],{"type":50,"value":1464},"Project & Billability Rules (Sets ",{"type":44,"tag":91,"props":1466,"children":1468},{"className":1467},[],[1469],{"type":50,"value":876},{"type":50,"value":669},{"type":44,"tag":91,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":50,"value":887},{"type":50,"value":669},{"type":44,"tag":91,"props":1478,"children":1480},{"className":1479},[],[1481],{"type":50,"value":898},{"type":50,"value":1397},{"type":44,"tag":715,"props":1484,"children":1485},{},[1486,1534],{"type":44,"tag":719,"props":1487,"children":1488},{},[1489,1490,1495,1497],{"type":50,"value":1405},{"type":44,"tag":71,"props":1491,"children":1492},{},[1493],{"type":50,"value":1494},"client name",{"type":50,"value":1496}," mentioned (not \"Internal\"):",{"type":44,"tag":715,"props":1498,"children":1499},{},[1500,1517,1529],{"type":44,"tag":719,"props":1501,"children":1502},{},[1503,1505,1510,1511,1516],{"type":50,"value":1504},"Set ",{"type":44,"tag":91,"props":1506,"children":1508},{"className":1507},[],[1509],{"type":50,"value":876},{"type":50,"value":1419},{"type":44,"tag":91,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":50,"value":887},{"type":50,"value":1426},{"type":44,"tag":719,"props":1518,"children":1519},{},[1520,1522,1527],{"type":50,"value":1521},"Extract and populate ",{"type":44,"tag":91,"props":1523,"children":1525},{"className":1524},[],[1526],{"type":50,"value":898},{"type":50,"value":1528}," (search for active projects for that client)",{"type":44,"tag":719,"props":1530,"children":1531},{},[1532],{"type":50,"value":1533},"If no project code found, flag for assignment",{"type":44,"tag":719,"props":1535,"children":1536},{},[1537,1538,1543,1545],{"type":50,"value":1405},{"type":44,"tag":71,"props":1539,"children":1540},{},[1541],{"type":50,"value":1542},"internal expense",{"type":50,"value":1544},":",{"type":44,"tag":715,"props":1546,"children":1547},{},[1548,1564,1575],{"type":44,"tag":719,"props":1549,"children":1550},{},[1551,1552,1557,1558,1563],{"type":50,"value":1504},{"type":44,"tag":91,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":50,"value":887},{"type":50,"value":1419},{"type":44,"tag":91,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":50,"value":876},{"type":50,"value":1426},{"type":44,"tag":719,"props":1565,"children":1566},{},[1567,1568,1573],{"type":50,"value":1504},{"type":44,"tag":91,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":50,"value":898},{"type":50,"value":1574}," = empty",{"type":44,"tag":719,"props":1576,"children":1577},{},[1578],{"type":50,"value":1579},"Use department cost center code",{"type":44,"tag":1060,"props":1581,"children":1583},{"id":1582},"duplicate-detection-sets-duplicatestatus-field",[1584,1586,1591],{"type":50,"value":1585},"Duplicate Detection (Sets ",{"type":44,"tag":91,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":50,"value":920},{"type":50,"value":1316},{"type":44,"tag":715,"props":1593,"children":1594},{},[1595,1623,1640],{"type":44,"tag":719,"props":1596,"children":1597},{},[1598,1600],{"type":50,"value":1599},"Search for existing expense entries with:\n",{"type":44,"tag":715,"props":1601,"children":1602},{},[1603,1608,1613,1618],{"type":44,"tag":719,"props":1604,"children":1605},{},[1606],{"type":50,"value":1607},"Same merchant name",{"type":44,"tag":719,"props":1609,"children":1610},{},[1611],{"type":50,"value":1612},"Same transaction date",{"type":44,"tag":719,"props":1614,"children":1615},{},[1616],{"type":50,"value":1617},"Same amount (within $1 tolerance)",{"type":44,"tag":719,"props":1619,"children":1620},{},[1621],{"type":50,"value":1622},"Same employee",{"type":44,"tag":719,"props":1624,"children":1625},{},[1626,1628,1633,1635],{"type":50,"value":1627},"If found: Set ",{"type":44,"tag":91,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":50,"value":920},{"type":50,"value":1634}," = \"Duplicates Found\" and ",{"type":44,"tag":71,"props":1636,"children":1637},{},[1638],{"type":50,"value":1639},"DO NOT CREATE",{"type":44,"tag":719,"props":1641,"children":1642},{},[1643,1645,1650],{"type":50,"value":1644},"If no duplicates: Set ",{"type":44,"tag":91,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":50,"value":920},{"type":50,"value":1651}," = \"No Duplicates\"",{"type":44,"tag":1060,"props":1653,"children":1655},{"id":1654},"_90-day-policy-validation-sets-dayssinceexpense-and-latesubmission",[1656,1658,1663,1664,1669],{"type":50,"value":1657},"90-Day Policy Validation (Sets ",{"type":44,"tag":91,"props":1659,"children":1661},{"className":1660},[],[1662],{"type":50,"value":854},{"type":50,"value":1390},{"type":44,"tag":91,"props":1665,"children":1667},{"className":1666},[],[1668],{"type":50,"value":865},{"type":50,"value":1397},{"type":44,"tag":715,"props":1671,"children":1672},{},[1673,1685,1703],{"type":44,"tag":719,"props":1674,"children":1675},{},[1676,1678,1683],{"type":50,"value":1677},"Calculate ",{"type":44,"tag":91,"props":1679,"children":1681},{"className":1680},[],[1682],{"type":50,"value":854},{"type":50,"value":1684}," = submission date - transaction date",{"type":44,"tag":719,"props":1686,"children":1687},{},[1688,1689,1694,1696,1701],{"type":50,"value":1405},{"type":44,"tag":91,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":50,"value":854},{"type":50,"value":1695}," > 90: Set ",{"type":44,"tag":91,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":50,"value":865},{"type":50,"value":1702}," = \"Yes\"",{"type":44,"tag":719,"props":1704,"children":1705},{},[1706,1707,1712,1714,1719],{"type":50,"value":1405},{"type":44,"tag":91,"props":1708,"children":1710},{"className":1709},[],[1711],{"type":50,"value":854},{"type":50,"value":1713}," \u003C= 90: Set ",{"type":44,"tag":91,"props":1715,"children":1717},{"className":1716},[],[1718],{"type":50,"value":865},{"type":50,"value":1720}," = \"No\"",{"type":44,"tag":79,"props":1722,"children":1724},{"id":1723},"step-4-create-expense-report-record",[1725],{"type":50,"value":1726},"Step 4: Create Expense Report Record",{"type":44,"tag":53,"props":1728,"children":1729},{},[1730,1732,1736],{"type":50,"value":1731},"Create record in your ",{"type":44,"tag":71,"props":1733,"children":1734},{},[1735],{"type":50,"value":75},{"type":50,"value":1737}," table with:",{"type":44,"tag":53,"props":1739,"children":1740},{},[1741,1746],{"type":44,"tag":71,"props":1742,"children":1743},{},[1744],{"type":50,"value":1745},"Required Fields",{"type":50,"value":1544},{"type":44,"tag":715,"props":1748,"children":1749},{},[1750,1760,1792,1803,1814,1824,1834],{"type":44,"tag":719,"props":1751,"children":1752},{},[1753,1758],{"type":44,"tag":91,"props":1754,"children":1756},{"className":1755},[],[1757],{"type":50,"value":777},{"type":50,"value":1759},": Generate unique ID (format: ER-YYYY-MMDD-XXX)",{"type":44,"tag":719,"props":1761,"children":1762},{},[1763,1769,1771,1776,1778,1783,1785,1790],{"type":44,"tag":91,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":50,"value":1768},"[reportname]",{"type":50,"value":1770},": \"",{"type":44,"tag":1341,"props":1772,"children":1773},{},[1774],{"type":50,"value":1775},"Month Year",{"type":50,"value":1777}," ",{"type":44,"tag":1341,"props":1779,"children":1780},{},[1781],{"type":50,"value":1782},"Category",{"type":50,"value":1784}," - ",{"type":44,"tag":1341,"props":1786,"children":1787},{},[1788],{"type":50,"value":1789},"Employee Name",{"type":50,"value":1791},"\"",{"type":44,"tag":719,"props":1793,"children":1794},{},[1795,1801],{"type":44,"tag":91,"props":1796,"children":1798},{"className":1797},[],[1799],{"type":50,"value":1800},"[submissiondate]",{"type":50,"value":1802},": Today's date (YYYY-MM-DD format)",{"type":44,"tag":719,"props":1804,"children":1805},{},[1806,1812],{"type":44,"tag":91,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":50,"value":1811},"[employee]",{"type":50,"value":1813},": Lookup to Contact record for employee",{"type":44,"tag":719,"props":1815,"children":1816},{},[1817,1822],{"type":44,"tag":91,"props":1818,"children":1820},{"className":1819},[],[1821],{"type":50,"value":788},{"type":50,"value":1823},": \"Submitted\" (or \"Draft\" if saving for later)",{"type":44,"tag":719,"props":1825,"children":1826},{},[1827,1832],{"type":44,"tag":91,"props":1828,"children":1830},{"className":1829},[],[1831],{"type":50,"value":799},{"type":50,"value":1833},": Expense amount before tax (numeric)",{"type":44,"tag":719,"props":1835,"children":1836},{},[1837,1842],{"type":44,"tag":91,"props":1838,"children":1840},{"className":1839},[],[1841],{"type":50,"value":810},{"type":50,"value":1843},": Tax amount (numeric)",{"type":44,"tag":53,"props":1845,"children":1846},{},[1847,1852],{"type":44,"tag":71,"props":1848,"children":1849},{},[1850],{"type":50,"value":1851},"Payment Method Fields",{"type":50,"value":1544},{"type":44,"tag":715,"props":1854,"children":1855},{},[1856,1865],{"type":44,"tag":719,"props":1857,"children":1858},{},[1859,1864],{"type":44,"tag":91,"props":1860,"children":1862},{"className":1861},[],[1863],{"type":50,"value":821},{"type":50,"value":823},{"type":44,"tag":719,"props":1866,"children":1867},{},[1868,1873],{"type":44,"tag":91,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":50,"value":832},{"type":50,"value":1874},": Amount paid with personal card",{"type":44,"tag":53,"props":1876,"children":1877},{},[1878,1883],{"type":44,"tag":71,"props":1879,"children":1880},{},[1881],{"type":50,"value":1882},"Approval Fields",{"type":50,"value":1544},{"type":44,"tag":715,"props":1885,"children":1886},{},[1887,1897,1908],{"type":44,"tag":719,"props":1888,"children":1889},{},[1890,1895],{"type":44,"tag":91,"props":1891,"children":1893},{"className":1892},[],[1894],{"type":50,"value":843},{"type":50,"value":1896},": Based on amount thresholds from Step 3",{"type":44,"tag":719,"props":1898,"children":1899},{},[1900,1906],{"type":44,"tag":91,"props":1901,"children":1903},{"className":1902},[],[1904],{"type":50,"value":1905},"[approvedby]",{"type":50,"value":1907},": Empty (will be filled after approval)",{"type":44,"tag":719,"props":1909,"children":1910},{},[1911,1917],{"type":44,"tag":91,"props":1912,"children":1914},{"className":1913},[],[1915],{"type":50,"value":1916},"[approveddate]",{"type":50,"value":1907},{"type":44,"tag":53,"props":1919,"children":1920},{},[1921,1926],{"type":44,"tag":71,"props":1922,"children":1923},{},[1924],{"type":50,"value":1925},"Validation Fields",{"type":50,"value":1544},{"type":44,"tag":715,"props":1928,"children":1929},{},[1930,1940,1950,1960],{"type":44,"tag":719,"props":1931,"children":1932},{},[1933,1938],{"type":44,"tag":91,"props":1934,"children":1936},{"className":1935},[],[1937],{"type":50,"value":854},{"type":50,"value":1939},": Calculated in Step 3",{"type":44,"tag":719,"props":1941,"children":1942},{},[1943,1948],{"type":44,"tag":91,"props":1944,"children":1946},{"className":1945},[],[1947],{"type":50,"value":865},{"type":50,"value":1949},": \"Yes\" or \"No\" based on 90-day policy",{"type":44,"tag":719,"props":1951,"children":1952},{},[1953,1958],{"type":44,"tag":91,"props":1954,"children":1956},{"className":1955},[],[1957],{"type":50,"value":920},{"type":50,"value":1959},": Result from duplicate detection",{"type":44,"tag":719,"props":1961,"children":1962},{},[1963,1968],{"type":44,"tag":91,"props":1964,"children":1966},{"className":1965},[],[1967],{"type":50,"value":931},{"type":50,"value":1969},": Any violations detected (empty if none)",{"type":44,"tag":53,"props":1971,"children":1972},{},[1973,1978],{"type":44,"tag":71,"props":1974,"children":1975},{},[1976],{"type":50,"value":1977},"Billability Fields",{"type":50,"value":1544},{"type":44,"tag":715,"props":1980,"children":1981},{},[1982,1991,2000],{"type":44,"tag":719,"props":1983,"children":1984},{},[1985,1990],{"type":44,"tag":91,"props":1986,"children":1988},{"className":1987},[],[1989],{"type":50,"value":876},{"type":50,"value":878},{"type":44,"tag":719,"props":1992,"children":1993},{},[1994,1999],{"type":44,"tag":91,"props":1995,"children":1997},{"className":1996},[],[1998],{"type":50,"value":887},{"type":50,"value":889},{"type":44,"tag":719,"props":2001,"children":2002},{},[2003,2008],{"type":44,"tag":91,"props":2004,"children":2006},{"className":2005},[],[2007],{"type":50,"value":898},{"type":50,"value":900},{"type":44,"tag":53,"props":2010,"children":2011},{},[2012,2017],{"type":44,"tag":71,"props":2013,"children":2014},{},[2015],{"type":50,"value":2016},"Category Field",{"type":50,"value":1544},{"type":44,"tag":715,"props":2019,"children":2020},{},[2021],{"type":44,"tag":719,"props":2022,"children":2023},{},[2024,2029],{"type":44,"tag":91,"props":2025,"children":2027},{"className":2026},[],[2028],{"type":50,"value":909},{"type":50,"value":2030},": Categories from Step 2 (e.g., \"Hotel, Meals, Travel\")",{"type":44,"tag":79,"props":2032,"children":2034},{"id":2033},"step-5-create-supporting-records",[2035],{"type":50,"value":2036},"Step 5: Create Supporting Records",{"type":44,"tag":1060,"props":2038,"children":2040},{"id":2039},"if-approval-required-approval_tier-not-none",[2041],{"type":50,"value":2042},"If Approval Required (approval_tier not \"None\"):",{"type":44,"tag":715,"props":2044,"children":2045},{},[2046,2059,2064,2087,2099],{"type":44,"tag":719,"props":2047,"children":2048},{},[2049,2051,2057],{"type":50,"value":2050},"Create ",{"type":44,"tag":91,"props":2052,"children":2054},{"className":2053},[],[2055],{"type":50,"value":2056},"task",{"type":50,"value":2058}," record for approver",{"type":44,"tag":719,"props":2060,"children":2061},{},[2062],{"type":50,"value":2063},"Link to expense report",{"type":44,"tag":719,"props":2065,"children":2066},{},[2067,2069,2073,2075,2080,2081,2086],{"type":50,"value":2068},"Subject: \"Approve Expense: ",{"type":44,"tag":1341,"props":2070,"children":2071},{},[2072],{"type":50,"value":1782},{"type":50,"value":2074}," - $",{"type":44,"tag":1341,"props":2076,"children":2077},{},[2078],{"type":50,"value":2079},"Amount",{"type":50,"value":1784},{"type":44,"tag":1341,"props":2082,"children":2083},{},[2084],{"type":50,"value":2085},"Merchant",{"type":50,"value":1791},{"type":44,"tag":719,"props":2088,"children":2089},{},[2090,2092,2097],{"type":50,"value":2091},"Assigned to: Based on ",{"type":44,"tag":91,"props":2093,"children":2095},{"className":2094},[],[2096],{"type":50,"value":1314},{"type":50,"value":2098}," (Manager\u002FController\u002FCFO)",{"type":44,"tag":719,"props":2100,"children":2101},{},[2102],{"type":50,"value":2103},"Due date: 3 business days from submission",{"type":44,"tag":1060,"props":2105,"children":2107},{"id":2106},"if-billable-to-client",[2108],{"type":50,"value":2109},"If Billable to Client:",{"type":44,"tag":715,"props":2111,"children":2112},{},[2113,2125,2151],{"type":44,"tag":719,"props":2114,"children":2115},{},[2116,2117,2123],{"type":50,"value":2050},{"type":44,"tag":91,"props":2118,"children":2120},{"className":2119},[],[2121],{"type":50,"value":2122},"note",{"type":50,"value":2124}," linked to Project",{"type":44,"tag":719,"props":2126,"children":2127},{},[2128,2130,2134,2135,2139,2140,2145,2146,2150],{"type":50,"value":2129},"Content: \"Expense incurred: ",{"type":44,"tag":1341,"props":2131,"children":2132},{},[2133],{"type":50,"value":1782},{"type":50,"value":2074},{"type":44,"tag":1341,"props":2136,"children":2137},{},[2138],{"type":50,"value":2079},{"type":50,"value":1784},{"type":44,"tag":1341,"props":2141,"children":2142},{},[2143],{"type":50,"value":2144},"Date",{"type":50,"value":1784},{"type":44,"tag":1341,"props":2147,"children":2148},{},[2149],{"type":50,"value":138},{"type":50,"value":1791},{"type":44,"tag":719,"props":2152,"children":2153},{},[2154],{"type":50,"value":2155},"Link to both Project and Expense Report for audit trail",{"type":44,"tag":79,"props":2157,"children":2159},{"id":2158},"step-6-update-report-status",[2160],{"type":50,"value":2161},"Step 6: Update Report Status",{"type":44,"tag":53,"props":2163,"children":2164},{},[2165,2166,2171],{"type":50,"value":1504},{"type":44,"tag":91,"props":2167,"children":2169},{"className":2168},[],[2170],{"type":50,"value":788},{"type":50,"value":2172}," based on approval requirements:",{"type":44,"tag":715,"props":2174,"children":2175},{},[2176,2194],{"type":44,"tag":719,"props":2177,"children":2178},{},[2179,2180,2185,2187,2192],{"type":50,"value":1405},{"type":44,"tag":91,"props":2181,"children":2183},{"className":2182},[],[2184],{"type":50,"value":843},{"type":50,"value":2186}," = \"None\": Set ",{"type":44,"tag":91,"props":2188,"children":2190},{"className":2189},[],[2191],{"type":50,"value":788},{"type":50,"value":2193}," = \"Approved\"",{"type":44,"tag":719,"props":2195,"children":2196},{},[2197,2198,2203,2205,2210],{"type":50,"value":1405},{"type":44,"tag":91,"props":2199,"children":2201},{"className":2200},[],[2202],{"type":50,"value":843},{"type":50,"value":2204}," = \"Manager\", \"Controller\", or \"CFO\": Set ",{"type":44,"tag":91,"props":2206,"children":2208},{"className":2207},[],[2209],{"type":50,"value":788},{"type":50,"value":2211}," = \"Pending Approval\"",{"type":44,"tag":59,"props":2213,"children":2215},{"id":2214},"validation-quality-checks",[2216],{"type":50,"value":2217},"Validation & Quality Checks",{"type":44,"tag":53,"props":2219,"children":2220},{},[2221],{"type":50,"value":2222},"Before finalizing expense entry:",{"type":44,"tag":2224,"props":2225,"children":2226},"ol",{},[2227,2259,2298,2325],{"type":44,"tag":719,"props":2228,"children":2229},{},[2230,2235,2236],{"type":44,"tag":71,"props":2231,"children":2232},{},[2233],{"type":50,"value":2234},"Amount Reasonableness",{"type":50,"value":1544},{"type":44,"tag":715,"props":2237,"children":2238},{},[2239,2244,2249,2254],{"type":44,"tag":719,"props":2240,"children":2241},{},[2242],{"type":50,"value":2243},"Hotel: $100-$500\u002Fnight typical (flag if outside range)",{"type":44,"tag":719,"props":2245,"children":2246},{},[2247],{"type":50,"value":2248},"Meals: $15-$75 per person typical",{"type":44,"tag":719,"props":2250,"children":2251},{},[2252],{"type":50,"value":2253},"Travel: $10-$150 typical for ground transport",{"type":44,"tag":719,"props":2255,"children":2256},{},[2257],{"type":50,"value":2258},"Office supplies: Usually under $100",{"type":44,"tag":719,"props":2260,"children":2261},{},[2262,2267,2268],{"type":44,"tag":71,"props":2263,"children":2264},{},[2265],{"type":50,"value":2266},"Date Validation",{"type":50,"value":1544},{"type":44,"tag":715,"props":2269,"children":2270},{},[2271,2276,2287],{"type":44,"tag":719,"props":2272,"children":2273},{},[2274],{"type":50,"value":2275},"Transaction date not in future",{"type":44,"tag":719,"props":2277,"children":2278},{},[2279,2280,2285],{"type":50,"value":1677},{"type":44,"tag":91,"props":2281,"children":2283},{"className":2282},[],[2284],{"type":50,"value":854},{"type":50,"value":2286}," accurately",{"type":44,"tag":719,"props":2288,"children":2289},{},[2290,2291,2296],{"type":50,"value":1504},{"type":44,"tag":91,"props":2292,"children":2294},{"className":2293},[],[2295],{"type":50,"value":865},{"type":50,"value":2297}," = \"Yes\" if > 90 days",{"type":44,"tag":719,"props":2299,"children":2300},{},[2301,2306,2307],{"type":44,"tag":71,"props":2302,"children":2303},{},[2304],{"type":50,"value":2305},"Policy Compliance",{"type":50,"value":1544},{"type":44,"tag":715,"props":2308,"children":2309},{},[2310,2315,2320],{"type":44,"tag":719,"props":2311,"children":2312},{},[2313],{"type":50,"value":2314},"Meals over $75\u002Fperson: Verify attendee list in description",{"type":44,"tag":719,"props":2316,"children":2317},{},[2318],{"type":50,"value":2319},"Hotel: Not from home city (unless business reason documented)",{"type":44,"tag":719,"props":2321,"children":2322},{},[2323],{"type":50,"value":2324},"Expenses over $25: Receipt required",{"type":44,"tag":719,"props":2326,"children":2327},{},[2328,2333,2334],{"type":44,"tag":71,"props":2329,"children":2330},{},[2331],{"type":50,"value":2332},"Duplicate Detection",{"type":50,"value":1544},{"type":44,"tag":715,"props":2335,"children":2336},{},[2337,2342],{"type":44,"tag":719,"props":2338,"children":2339},{},[2340],{"type":50,"value":2341},"Always search before creating",{"type":44,"tag":719,"props":2343,"children":2344},{},[2345,2346,2351],{"type":50,"value":1504},{"type":44,"tag":91,"props":2347,"children":2349},{"className":2348},[],[2350],{"type":50,"value":920},{"type":50,"value":2352}," appropriately",{"type":44,"tag":59,"props":2354,"children":2356},{"id":2355},"error-handling",[2357],{"type":50,"value":2358},"Error Handling",{"type":44,"tag":53,"props":2360,"children":2361},{},[2362],{"type":50,"value":2363},"If validation fails:",{"type":44,"tag":715,"props":2365,"children":2366},{},[2367,2376],{"type":44,"tag":719,"props":2368,"children":2369},{},[2370,2374],{"type":44,"tag":71,"props":2371,"children":2372},{},[2373],{"type":50,"value":1639},{"type":50,"value":2375}," incomplete\u002Finvalid expense entry",{"type":44,"tag":719,"props":2377,"children":2378},{},[2379,2381],{"type":50,"value":2380},"Return specific error message:\n",{"type":44,"tag":715,"props":2382,"children":2383},{},[2384,2395,2406,2417,2428],{"type":44,"tag":719,"props":2385,"children":2386},{},[2387,2389,2394],{"type":50,"value":2388},"\"Missing required field: ",{"type":44,"tag":1341,"props":2390,"children":2391},{},[2392],{"type":50,"value":2393},"field name",{"type":50,"value":1791},{"type":44,"tag":719,"props":2396,"children":2397},{},[2398,2400,2405],{"type":50,"value":2399},"\"Invalid category: ",{"type":44,"tag":1341,"props":2401,"children":2402},{},[2403],{"type":50,"value":2404},"attempted category",{"type":50,"value":1791},{"type":44,"tag":719,"props":2407,"children":2408},{},[2409,2411,2416],{"type":50,"value":2410},"\"Duplicate expense detected: ",{"type":44,"tag":1341,"props":2412,"children":2413},{},[2414],{"type":50,"value":2415},"details",{"type":50,"value":1791},{"type":44,"tag":719,"props":2418,"children":2419},{},[2420,2422,2427],{"type":50,"value":2421},"\"Policy violation: ",{"type":44,"tag":1341,"props":2423,"children":2424},{},[2425],{"type":50,"value":2426},"specific rule",{"type":50,"value":1791},{"type":44,"tag":719,"props":2429,"children":2430},{},[2431,2433,2438],{"type":50,"value":2432},"\"Amount exceeds threshold: Requires ",{"type":44,"tag":1341,"props":2434,"children":2435},{},[2436],{"type":50,"value":2437},"approval level",{"type":50,"value":1791},{"type":44,"tag":59,"props":2440,"children":2442},{"id":2441},"examples",[2443],{"type":50,"value":2444},"Examples",{"type":44,"tag":79,"props":2446,"children":2448},{"id":2447},"example-1-standard-office-supplies-expense",[2449],{"type":50,"value":2450},"Example 1: Standard Office Supplies Expense",{"type":44,"tag":53,"props":2452,"children":2453},{},[2454,2459],{"type":44,"tag":71,"props":2455,"children":2456},{},[2457],{"type":50,"value":2458},"User says:",{"type":50,"value":2460}," \"I bought office supplies for the team yesterday. Create an expense for this receipt: Office Depot, $247.50 total ($227.89 + $19.61 tax), paid Dec 2, 2025 with corporate card. Items: toner cartridge, copy paper, folders.\"",{"type":44,"tag":53,"props":2462,"children":2463},{},[2464],{"type":44,"tag":71,"props":2465,"children":2466},{},[2467],{"type":50,"value":2468},"Actions:",{"type":44,"tag":2224,"props":2470,"children":2471},{},[2472,2477,2482,2487,2492],{"type":44,"tag":719,"props":2473,"children":2474},{},[2475],{"type":50,"value":2476},"Extract receipt data: Merchant = \"Office Depot\", Amount = $227.89, Tax = $19.61, Date = 2025-12-02, Payment = Corporate Card",{"type":44,"tag":719,"props":2478,"children":2479},{},[2480],{"type":50,"value":2481},"Categorize: Merchant category = Office Supply Stores → expense_categories = \"Office Supplies\"",{"type":44,"tag":719,"props":2483,"children":2484},{},[2485],{"type":50,"value":2486},"Apply rules: $247.50 \u003C $500 → approval_tier = \"None\" (auto-approved)",{"type":44,"tag":719,"props":2488,"children":2489},{},[2490],{"type":50,"value":2491},"Validate: No duplicates found, 1 day since expense → late_submission_flag = \"No\"",{"type":44,"tag":719,"props":2493,"children":2494},{},[2495],{"type":50,"value":2496},"Create expense_reports record with all fields populated",{"type":44,"tag":53,"props":2498,"children":2499},{},[2500],{"type":44,"tag":71,"props":2501,"children":2502},{},[2503],{"type":50,"value":2504},"Result:",{"type":44,"tag":2506,"props":2507,"children":2511},"pre",{"className":2508,"code":2510,"language":50},[2509],"language-text","Expense Report Created: ER-2025-1203-015\nStatus: Approved (auto-approved)\nAmount: $247.50 (Corporate Card)\nCategory: Office Supplies\nNo reimbursement needed\nNo manager approval required\n",[2512],{"type":44,"tag":91,"props":2513,"children":2515},{"__ignoreMap":2514},"",[2516],{"type":50,"value":2510},{"type":44,"tag":79,"props":2518,"children":2520},{"id":2519},"example-2-client-dinner-requiring-approval",[2521],{"type":50,"value":2522},"Example 2: Client Dinner Requiring Approval",{"type":44,"tag":53,"props":2524,"children":2525},{},[2526,2530],{"type":44,"tag":71,"props":2527,"children":2528},{},[2529],{"type":50,"value":2458},{"type":50,"value":2531}," \"Log this dinner receipt: The Capital Grille, $425 total ($390 + $35 tax), personal card, client dinner with Contoso team on Dec 5. Attendees: John Smith, Sarah Chen, myself.\"",{"type":44,"tag":53,"props":2533,"children":2534},{},[2535],{"type":44,"tag":71,"props":2536,"children":2537},{},[2538],{"type":50,"value":2468},{"type":44,"tag":2224,"props":2540,"children":2541},{},[2542,2547,2559,2564,2574,2585,2596],{"type":44,"tag":719,"props":2543,"children":2544},{},[2545],{"type":50,"value":2546},"Extract: Merchant = \"The Capital Grille\", Amount = $390, Tax = $35, Date = 2025-12-05, Payment = Personal Card",{"type":44,"tag":719,"props":2548,"children":2549},{},[2550,2552,2557],{"type":50,"value":2551},"Categorize: Restaurant → ",{"type":44,"tag":1341,"props":2553,"children":2554},{},[2555],{"type":50,"value":2556},"expensecategories",{"type":50,"value":2558}," = \"Meals\"",{"type":44,"tag":719,"props":2560,"children":2561},{},[2562],{"type":50,"value":2563},"Validate: $425\u002F3 people = $141.67\u002Fperson > $75 threshold → attendee list required (provided)",{"type":44,"tag":719,"props":2565,"children":2566},{},[2567,2569,2573],{"type":50,"value":2568},"Apply rules: $425 ≥ $500 threshold → ",{"type":44,"tag":1341,"props":2570,"children":2571},{},[2572],{"type":50,"value":1345},{"type":50,"value":1347},{"type":44,"tag":719,"props":2575,"children":2576},{},[2577,2578,2583],{"type":50,"value":1504},{"type":44,"tag":1341,"props":2579,"children":2580},{},[2581],{"type":50,"value":2582},"billableamount",{"type":50,"value":2584}," = $425 (client expense), find Contoso project code",{"type":44,"tag":719,"props":2586,"children":2587},{},[2588,2590,2595],{"type":50,"value":2589},"Create record with ",{"type":44,"tag":1341,"props":2591,"children":2592},{},[2593],{"type":50,"value":2594},"reportstatus",{"type":50,"value":2211},{"type":44,"tag":719,"props":2597,"children":2598},{},[2599],{"type":50,"value":2600},"Create approval task for manager",{"type":44,"tag":53,"props":2602,"children":2603},{},[2604],{"type":44,"tag":71,"props":2605,"children":2606},{},[2607],{"type":50,"value":2504},{"type":44,"tag":2506,"props":2609,"children":2612},{"className":2610,"code":2611,"language":50},[2509],"Expense Report Created: ER-2025-1206-022\nStatus: Pending Approval (Manager)\nAmount: $425.00 (Personal Card - Reimbursement Required)\nCategory: Meals\nBillable to: Contoso (Project: PROJ-CONTOSO-2025)\nApproval task created for: [Manager Name]\n",[2613],{"type":44,"tag":91,"props":2614,"children":2615},{"__ignoreMap":2514},[2616],{"type":50,"value":2611},{"type":44,"tag":79,"props":2618,"children":2620},{"id":2619},"example-3-late-travel-expense-with-warning",[2621],{"type":50,"value":2622},"Example 3: Late Travel Expense with Warning",{"type":44,"tag":53,"props":2624,"children":2625},{},[2626,2630],{"type":44,"tag":71,"props":2627,"children":2628},{},[2629],{"type":50,"value":2458},{"type":50,"value":2631}," \"Need to expense this flight from September: Delta Airlines $650, Sept 15, corporate card, NYC to Chicago for internal training.\"",{"type":44,"tag":53,"props":2633,"children":2634},{},[2635],{"type":44,"tag":71,"props":2636,"children":2637},{},[2638],{"type":50,"value":2468},{"type":44,"tag":2224,"props":2640,"children":2641},{},[2642,2647,2652,2657,2662,2667,2672],{"type":44,"tag":719,"props":2643,"children":2644},{},[2645],{"type":50,"value":2646},"Extract: Merchant = \"Delta Airlines\", Amount = $650, Date = 2025-09-15, Payment = Corporate Card",{"type":44,"tag":719,"props":2648,"children":2649},{},[2650],{"type":50,"value":2651},"Categorize: Airlines → expense_categories = \"Travel\"",{"type":44,"tag":719,"props":2653,"children":2654},{},[2655],{"type":50,"value":2656},"Calculate: Days since expense = 82 days (approaching 90-day limit)",{"type":44,"tag":719,"props":2658,"children":2659},{},[2660],{"type":50,"value":2661},"Apply rules: $650 ≥ $500 → approval_tier = \"Manager\"",{"type":44,"tag":719,"props":2663,"children":2664},{},[2665],{"type":50,"value":2666},"Set internal_amount = $650, billable_amount = $0",{"type":44,"tag":719,"props":2668,"children":2669},{},[2670],{"type":50,"value":2671},"Create record with late_submission_flag = \"No\" (still under 90 days)",{"type":44,"tag":719,"props":2673,"children":2674},{},[2675],{"type":50,"value":2676},"Create approval task",{"type":44,"tag":53,"props":2678,"children":2679},{},[2680],{"type":44,"tag":71,"props":2681,"children":2682},{},[2683],{"type":50,"value":2504},{"type":44,"tag":2506,"props":2685,"children":2688},{"className":2686,"code":2687,"language":50},[2509],"Expense Report Created: ER-2025-1206-023\nStatus: Pending Approval (Manager)\nAmount: $650.00 (Corporate Card)\nCategory: Travel\n⚠️ Warning: 82 days since expense (90-day limit approaching)\nApproval task created for: [Manager Name]\n",[2689],{"type":44,"tag":91,"props":2690,"children":2691},{"__ignoreMap":2514},[2692],{"type":50,"value":2687},{"type":44,"tag":59,"props":2694,"children":2696},{"id":2695},"troubleshooting",[2697],{"type":50,"value":2698},"Troubleshooting",{"type":44,"tag":79,"props":2700,"children":2702},{"id":2701},"error-duplicate-expense-detected",[2703],{"type":50,"value":2704},"Error: Duplicate expense detected",{"type":44,"tag":53,"props":2706,"children":2707},{},[2708,2713,2715],{"type":44,"tag":71,"props":2709,"children":2710},{},[2711],{"type":50,"value":2712},"Cause:",{"type":50,"value":2714}," Expense with same merchant, date, and amount already exists\n",{"type":44,"tag":71,"props":2716,"children":2717},{},[2718],{"type":50,"value":2719},"Solution:",{"type":44,"tag":715,"props":2721,"children":2722},{},[2723,2728,2760],{"type":44,"tag":719,"props":2724,"children":2725},{},[2726],{"type":50,"value":2727},"Do NOT create duplicate record",{"type":44,"tag":719,"props":2729,"children":2730},{},[2731,2733,2738,2740,2745,2747,2752,2754,2759],{"type":50,"value":2732},"Return: \"Duplicate expense detected: ",{"type":44,"tag":1341,"props":2734,"children":2735},{},[2736],{"type":50,"value":2737},"ER-ID",{"type":50,"value":2739}," created on ",{"type":44,"tag":1341,"props":2741,"children":2742},{},[2743],{"type":50,"value":2744},"date",{"type":50,"value":2746}," for $",{"type":44,"tag":1341,"props":2748,"children":2749},{},[2750],{"type":50,"value":2751},"amount",{"type":50,"value":2753}," at ",{"type":44,"tag":1341,"props":2755,"children":2756},{},[2757],{"type":50,"value":2758},"merchant",{"type":50,"value":1791},{"type":44,"tag":719,"props":2761,"children":2762},{},[2763],{"type":50,"value":2764},"Ask user to verify if this is a different expense",{"type":44,"tag":79,"props":2766,"children":2768},{"id":2767},"error-missing-required-field",[2769],{"type":50,"value":2770},"Error: Missing required field",{"type":44,"tag":53,"props":2772,"children":2773},{},[2774,2778,2780],{"type":44,"tag":71,"props":2775,"children":2776},{},[2777],{"type":50,"value":2712},{"type":50,"value":2779}," Receipt information incomplete (no amount, date, or merchant)\n",{"type":44,"tag":71,"props":2781,"children":2782},{},[2783],{"type":50,"value":2719},{"type":44,"tag":715,"props":2785,"children":2786},{},[2787,2792,2802],{"type":44,"tag":719,"props":2788,"children":2789},{},[2790],{"type":50,"value":2791},"Do NOT create incomplete record",{"type":44,"tag":719,"props":2793,"children":2794},{},[2795,2797,2801],{"type":50,"value":2796},"Return: \"Missing required field: ",{"type":44,"tag":1341,"props":2798,"children":2799},{},[2800],{"type":50,"value":2393},{"type":50,"value":1791},{"type":44,"tag":719,"props":2803,"children":2804},{},[2805],{"type":50,"value":2806},"Request user provide missing information",{"type":44,"tag":79,"props":2808,"children":2810},{"id":2809},"error-policy-violation-late-submission",[2811],{"type":50,"value":2812},"Error: Policy violation - Late submission",{"type":44,"tag":53,"props":2814,"children":2815},{},[2816,2820,2822],{"type":44,"tag":71,"props":2817,"children":2818},{},[2819],{"type":50,"value":2712},{"type":50,"value":2821}," Expense older than 90 days\n",{"type":44,"tag":71,"props":2823,"children":2824},{},[2825],{"type":50,"value":2719},{"type":44,"tag":715,"props":2827,"children":2828},{},[2829,2839,2857,2862],{"type":44,"tag":719,"props":2830,"children":2831},{},[2832,2833,2838],{"type":50,"value":1504},{"type":44,"tag":91,"props":2834,"children":2836},{"className":2835},[],[2837],{"type":50,"value":865},{"type":50,"value":1702},{"type":44,"tag":719,"props":2840,"children":2841},{},[2842,2843,2848,2850,2855],{"type":50,"value":1504},{"type":44,"tag":91,"props":2844,"children":2846},{"className":2845},[],[2847],{"type":50,"value":931},{"type":50,"value":2849}," = \"Late submission: ",{"type":44,"tag":1341,"props":2851,"children":2852},{},[2853],{"type":50,"value":2854},"X",{"type":50,"value":2856}," days past 90-day limit\"",{"type":44,"tag":719,"props":2858,"children":2859},{},[2860],{"type":50,"value":2861},"Create record but flag for additional approval",{"type":44,"tag":719,"props":2863,"children":2864},{},[2865],{"type":50,"value":2866},"Note: Requires Controller approval regardless of amount",{"type":44,"tag":79,"props":2868,"children":2870},{"id":2869},"error-meals-expense-over-threshold-without-attendees",[2871],{"type":50,"value":2872},"Error: Meals expense over threshold without attendees",{"type":44,"tag":53,"props":2874,"children":2875},{},[2876,2880,2882],{"type":44,"tag":71,"props":2877,"children":2878},{},[2879],{"type":50,"value":2712},{"type":50,"value":2881}," Meal expense > $75\u002Fperson but no attendee list provided\n",{"type":44,"tag":71,"props":2883,"children":2884},{},[2885],{"type":50,"value":2719},{"type":44,"tag":715,"props":2887,"children":2888},{},[2889,2894,2899],{"type":44,"tag":719,"props":2890,"children":2891},{},[2892],{"type":50,"value":2893},"Do NOT create record",{"type":44,"tag":719,"props":2895,"children":2896},{},[2897],{"type":50,"value":2898},"Return: \"Meals over $75\u002Fperson require attendee list. Please provide names of attendees.\"",{"type":44,"tag":719,"props":2900,"children":2901},{},[2902],{"type":50,"value":2903},"Wait for user to provide attendee information",{"type":44,"tag":53,"props":2905,"children":2906},{},[2907],{"type":50,"value":2908},"An expense entry is complete and valid when:",{"type":44,"tag":715,"props":2910,"children":2911},{},[2912,2922,2927,2944,2956,2972,2988,2999,3011],{"type":44,"tag":719,"props":2913,"children":2914},{},[2915,2917],{"type":50,"value":2916},"✓ Category correctly assigned in ",{"type":44,"tag":91,"props":2918,"children":2920},{"className":2919},[],[2921],{"type":50,"value":909},{"type":44,"tag":719,"props":2923,"children":2924},{},[2925],{"type":50,"value":2926},"✓ Approval tier determined based on amount thresholds",{"type":44,"tag":719,"props":2928,"children":2929},{},[2930,2932,2937,2939],{"type":50,"value":2931},"✓ Payment method properly tracked in ",{"type":44,"tag":91,"props":2933,"children":2935},{"className":2934},[],[2936],{"type":50,"value":821},{"type":50,"value":2938}," or ",{"type":44,"tag":91,"props":2940,"children":2942},{"className":2941},[],[2943],{"type":50,"value":832},{"type":44,"tag":719,"props":2945,"children":2946},{},[2947,2949,2954],{"type":50,"value":2948},"✓ Duplicate check performed and ",{"type":44,"tag":91,"props":2950,"children":2952},{"className":2951},[],[2953],{"type":50,"value":920},{"type":50,"value":2955}," set",{"type":44,"tag":719,"props":2957,"children":2958},{},[2959,2961,2966,2967],{"type":50,"value":2960},"✓ 90-day policy validated with ",{"type":44,"tag":91,"props":2962,"children":2964},{"className":2963},[],[2965],{"type":50,"value":854},{"type":50,"value":1390},{"type":44,"tag":91,"props":2968,"children":2970},{"className":2969},[],[2971],{"type":50,"value":865},{"type":44,"tag":719,"props":2973,"children":2974},{},[2975,2977,2982,2983],{"type":50,"value":2976},"✓ Billability correctly determined in ",{"type":44,"tag":91,"props":2978,"children":2980},{"className":2979},[],[2981],{"type":50,"value":876},{"type":50,"value":1390},{"type":44,"tag":91,"props":2984,"children":2986},{"className":2985},[],[2987],{"type":50,"value":887},{"type":44,"tag":719,"props":2989,"children":2990},{},[2991,2993,2997],{"type":50,"value":2992},"✓ Record created in ",{"type":44,"tag":71,"props":2994,"children":2995},{},[2996],{"type":50,"value":75},{"type":50,"value":2998}," table with all required fields",{"type":44,"tag":719,"props":3000,"children":3001},{},[3002,3004,3009],{"type":50,"value":3003},"✓ Approval task created if ",{"type":44,"tag":91,"props":3005,"children":3007},{"className":3006},[],[3008],{"type":50,"value":843},{"type":50,"value":3010}," requires it",{"type":44,"tag":719,"props":3012,"children":3013},{},[3014,3016,3021],{"type":50,"value":3015},"✓ ",{"type":44,"tag":91,"props":3017,"children":3019},{"className":3018},[],[3020],{"type":50,"value":788},{"type":50,"value":3022}," set appropriately based on approval requirements",{"items":3024,"total":3219},[3025,3047,3068,3089,3104,3121,3132,3145,3160,3175,3194,3207],{"slug":3026,"name":3026,"fn":3027,"description":3028,"org":3029,"tags":3030,"stars":3044,"repoUrl":3045,"updatedAt":3046},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3031,3034,3037,3038,3041],{"name":3032,"slug":3033,"type":15},"Engineering","engineering",{"name":3035,"slug":3036,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":3039,"slug":3040,"type":15},"Project Management","project-management",{"name":3042,"slug":3043,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":3048,"name":3048,"fn":3049,"description":3050,"org":3051,"tags":3052,"stars":3065,"repoUrl":3066,"updatedAt":3067},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3053,3056,3059,3062],{"name":3054,"slug":3055,"type":15},".NET","net",{"name":3057,"slug":3058,"type":15},"Agents","agents",{"name":3060,"slug":3061,"type":15},"Azure","azure",{"name":3063,"slug":3064,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":3069,"name":3069,"fn":3070,"description":3071,"org":3072,"tags":3073,"stars":3065,"repoUrl":3066,"updatedAt":3088},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3074,3077,3078,3081,3084,3085],{"name":3075,"slug":3076,"type":15},"Analytics","analytics",{"name":3060,"slug":3061,"type":15},{"name":3079,"slug":3080,"type":15},"Data Analysis","data-analysis",{"name":3082,"slug":3083,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":3086,"slug":3087,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":3090,"name":3090,"fn":3091,"description":3092,"org":3093,"tags":3094,"stars":3065,"repoUrl":3066,"updatedAt":3103},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3095,3098,3099,3100],{"name":3096,"slug":3097,"type":15},"AI Infrastructure","ai-infrastructure",{"name":3060,"slug":3061,"type":15},{"name":3082,"slug":3083,"type":15},{"name":3101,"slug":3102,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":3105,"name":3105,"fn":3106,"description":3107,"org":3108,"tags":3109,"stars":3065,"repoUrl":3066,"updatedAt":3120},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3110,3111,3114,3115,3116,3119],{"name":3060,"slug":3061,"type":15},{"name":3112,"slug":3113,"type":15},"Compliance","compliance",{"name":3063,"slug":3064,"type":15},{"name":9,"slug":8,"type":15},{"name":3117,"slug":3118,"type":15},"Python","python",{"name":3101,"slug":3102,"type":15},"2026-07-18T05:14:23.017504",{"slug":3122,"name":3122,"fn":3123,"description":3124,"org":3125,"tags":3126,"stars":3065,"repoUrl":3066,"updatedAt":3131},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3127,3128,3129,3130],{"name":3075,"slug":3076,"type":15},{"name":3060,"slug":3061,"type":15},{"name":3063,"slug":3064,"type":15},{"name":3117,"slug":3118,"type":15},"2026-07-31T05:54:29.068751",{"slug":3133,"name":3133,"fn":3134,"description":3135,"org":3136,"tags":3137,"stars":3065,"repoUrl":3066,"updatedAt":3144},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3138,3141,3142,3143],{"name":3139,"slug":3140,"type":15},"API Development","api-development",{"name":3060,"slug":3061,"type":15},{"name":9,"slug":8,"type":15},{"name":3117,"slug":3118,"type":15},"2026-07-18T05:14:16.988376",{"slug":3146,"name":3146,"fn":3147,"description":3148,"org":3149,"tags":3150,"stars":3065,"repoUrl":3066,"updatedAt":3159},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3151,3152,3155,3158],{"name":3060,"slug":3061,"type":15},{"name":3153,"slug":3154,"type":15},"Computer Vision","computer-vision",{"name":3156,"slug":3157,"type":15},"Images","images",{"name":3117,"slug":3118,"type":15},"2026-07-18T05:14:18.007737",{"slug":3161,"name":3161,"fn":3162,"description":3163,"org":3164,"tags":3165,"stars":3065,"repoUrl":3066,"updatedAt":3174},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3166,3167,3170,3173],{"name":3060,"slug":3061,"type":15},{"name":3168,"slug":3169,"type":15},"Configuration","configuration",{"name":3171,"slug":3172,"type":15},"Feature Flags","feature-flags",{"name":3082,"slug":3083,"type":15},"2026-07-03T16:32:01.278468",{"slug":3176,"name":3176,"fn":3177,"description":3178,"org":3179,"tags":3180,"stars":3065,"repoUrl":3066,"updatedAt":3193},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3181,3184,3187,3190],{"name":3182,"slug":3183,"type":15},"Cosmos DB","cosmos-db",{"name":3185,"slug":3186,"type":15},"Database","database",{"name":3188,"slug":3189,"type":15},"NoSQL","nosql",{"name":3191,"slug":3192,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":3195,"name":3195,"fn":3177,"description":3196,"org":3197,"tags":3198,"stars":3065,"repoUrl":3066,"updatedAt":3206},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3199,3200,3201,3202,3203],{"name":3182,"slug":3183,"type":15},{"name":3185,"slug":3186,"type":15},{"name":9,"slug":8,"type":15},{"name":3188,"slug":3189,"type":15},{"name":3204,"slug":3205,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":3208,"name":3208,"fn":3209,"description":3210,"org":3211,"tags":3212,"stars":3065,"repoUrl":3066,"updatedAt":3218},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3213,3214,3215,3216,3217],{"name":3060,"slug":3061,"type":15},{"name":3182,"slug":3183,"type":15},{"name":3185,"slug":3186,"type":15},{"name":3082,"slug":3083,"type":15},{"name":3188,"slug":3189,"type":15},"2026-05-13T06:14:17.582229",267,{"items":3221,"total":3327},[3222,3243,3257,3270,3286,3298,3310],{"slug":3223,"name":3223,"fn":3224,"description":3225,"org":3226,"tags":3227,"stars":26,"repoUrl":27,"updatedAt":3242},"account-briefing-generator","generate account briefings for sales meetings","Generates meeting briefings by aggregating account info, contacts, opportunities, cases, and activity history into structured prep documents with talking points and discovery questions. Use when user says \"prep me for my call\", \"brief me on this account\", \"meeting prep\", \"I have a meeting with [company]\", \"account briefing\", \"customer briefing\", or \"prepare for customer meeting\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3228,3231,3232,3235,3236,3239],{"name":3229,"slug":3230,"type":15},"CRM","crm",{"name":24,"slug":25,"type":15},{"name":3233,"slug":3234,"type":15},"Meetings","meetings",{"name":9,"slug":8,"type":15},{"name":3237,"slug":3238,"type":15},"Sales","sales",{"name":3240,"slug":3241,"type":15},"Summarization","summarization","2026-04-06T18:36:32.277939",{"slug":3244,"name":3244,"fn":3245,"description":3246,"org":3247,"tags":3248,"stars":26,"repoUrl":27,"updatedAt":3256},"account-risk-early-warning","identify account churn risks from engagement signals","Identifies accounts showing warning signs of churn by analyzing activity trends, support cases, and engagement signals. Scores risk and prioritizes intervention targets. Use when user asks \"which accounts are at risk\", \"churn risk analysis\", \"find accounts that might leave\", \"customer health check\", \"at-risk customers\", \"retention warning signs\", or \"account health score\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3249,3250,3251,3252,3255],{"name":3229,"slug":3230,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3253,"slug":3254,"type":15},"Risk Assessment","risk-assessment",{"name":3237,"slug":3238,"type":15},"2026-04-06T18:36:28.462732",{"slug":3258,"name":3258,"fn":3259,"description":3260,"org":3261,"tags":3262,"stars":26,"repoUrl":27,"updatedAt":3269},"competitive-intelligence","generate competitive intelligence from sales data","Analyzes opportunity data and activity notes to generate competitive intelligence including win\u002Floss rates by competitor, patterns, and rep-ready battlecard talking points. Use when user asks \"how are we doing against [competitor]\", \"competitive analysis\", \"competitor win rate\", \"battlecard for [competitor]\", \"competitive landscape\", \"why are we losing to [competitor]\", or \"competitor intelligence\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3263,3265,3266,3267,3268],{"name":3264,"slug":3258,"type":15},"Competitive Intelligence",{"name":3229,"slug":3230,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3237,"slug":3238,"type":15},"2026-04-06T18:36:23.280253",{"slug":3271,"name":3271,"fn":3272,"description":3273,"org":3274,"tags":3275,"stars":26,"repoUrl":27,"updatedAt":3285},"create-an-asset","generate customized sales assets from Dataverse","Generates customized sales assets including one-pagers, proposals, executive summaries, ROI summaries, and mutual action plans from Dataverse context. Use when user says \"create a one-pager\", \"draft a proposal\", \"generate executive summary\", \"build ROI summary\", \"create mutual action plan\", \"sales asset for [account]\", \"proposal outline\", or \"customer-facing document\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3276,3279,3280,3283,3284],{"name":3277,"slug":3278,"type":15},"Content Creation","content-creation",{"name":24,"slug":25,"type":15},{"name":3281,"slug":3282,"type":15},"Marketing","marketing",{"name":9,"slug":8,"type":15},{"name":3237,"slug":3238,"type":15},"2026-04-06T18:36:24.562421",{"slug":3287,"name":3287,"fn":3288,"description":3289,"org":3290,"tags":3291,"stars":26,"repoUrl":27,"updatedAt":3297},"cross-sell-target-identifier","identify cross-sell targets from customer patterns","Analyzes successful product customers to identify patterns, then finds similar accounts that are good cross-sell candidates with fit scores and reasoning. Use when user asks \"who should I pitch this product to\", \"find cross-sell opportunities\", \"which customers should buy Product X\", \"identify upsell targets\", \"product expansion candidates\", or \"who else would buy this\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3292,3293,3294,3295,3296],{"name":3075,"slug":3076,"type":15},{"name":3229,"slug":3230,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3237,"slug":3238,"type":15},"2026-04-06T18:36:37.380929",{"slug":3299,"name":3299,"fn":3300,"description":3301,"org":3302,"tags":3303,"stars":26,"repoUrl":27,"updatedAt":3309},"daily-briefing","prepare daily business briefings from Dataverse","Delivers a prioritized morning summary covering today's meetings, overdue tasks, pipeline alerts, and recommended actions from Dataverse. Use when user says \"what's on my plate today\", \"daily briefing\", \"morning summary\", \"what do I need to focus on today\", \"start my day\", \"daily digest\", \"today's priorities\", or \"what's happening today\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3304,3305,3306,3307,3308],{"name":3229,"slug":3230,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3237,"slug":3238,"type":15},{"name":3240,"slug":3241,"type":15},"2026-04-06T18:36:31.028078",{"slug":3311,"name":3311,"fn":3312,"description":3313,"org":3314,"tags":3315,"stars":26,"repoUrl":27,"updatedAt":3326},"draft-outreach","draft personalized sales outreach from Dataverse","Generates personalized outreach messages by pulling context from Dataverse records. Creates tailored emails for new prospects, re-engagement, follow-ups, or cross-sell. Use when user says \"draft an email to [contact]\", \"write outreach for\", \"help me reach out to\", \"compose email\", \"re-engage this contact\", \"follow-up email\", \"prospecting email\", or \"outreach message for\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3316,3317,3318,3321,3322,3325],{"name":3229,"slug":3230,"type":15},{"name":24,"slug":25,"type":15},{"name":3319,"slug":3320,"type":15},"Email","email",{"name":9,"slug":8,"type":15},{"name":3323,"slug":3324,"type":15},"Outreach","outreach",{"name":3237,"slug":3238,"type":15},"2026-04-06T18:36:36.103544",16]