create new skill: navan-expense — submit work expenses via Okta/Navan using Chrome
This commit is contained in:
parent
2a3b0931fc
commit
d4bd73629a
4 changed files with 86 additions and 0 deletions
|
|
@ -24,6 +24,7 @@ description: Master index of all skills in your robot assistant system. Your ass
|
||||||
| "add a task," "create a task," "what's on my plate," "show today's tasks," "mark that done," "delete that task," "what's due," "upcoming tasks" | **vikunja-tasks** |
|
| "add a task," "create a task," "what's on my plate," "show today's tasks," "mark that done," "delete that task," "what's due," "upcoming tasks" | **vikunja-tasks** |
|
||||||
| "run system diagnostic," "audit my skills," "check system health," "skill audit," "health check" | **system-diagnostic** |
|
| "run system diagnostic," "audit my skills," "check system health," "skill audit," "health check" | **system-diagnostic** |
|
||||||
| "write a POV doc," "create a proof of value document," "POV criteria," "proof of concept criteria," "generate a POC document" | **pov-doc** |
|
| "write a POV doc," "create a proof of value document," "POV criteria," "proof of concept criteria," "generate a POC document" | **pov-doc** |
|
||||||
|
| "submit an expense," "navan expense," "file an expense," "upload receipt" | **navan-expense** |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -101,6 +102,12 @@ description: Master index of all skills in your robot assistant system. Your ass
|
||||||
**File:** `skills/system-diagnostic/SKILL.md`
|
**File:** `skills/system-diagnostic/SKILL.md`
|
||||||
**Dependencies:** None
|
**Dependencies:** None
|
||||||
|
|
||||||
|
### Navan Expense
|
||||||
|
**Purpose:** Submit work expenses through Navan via Okta SSO using Chrome browser control. Uploads receipts to Navan's AI expense chat, reviews OCR-parsed data, corrects the expense category if needed, and submits for approval.
|
||||||
|
**Triggers:** "submit an expense," "navan expense," "file an expense," "upload receipt"
|
||||||
|
**File:** `skills/navan-expense/SKILL.md`
|
||||||
|
**Dependencies:** Chrome browser with active Okta session (verkada.okta.com)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Adding New Skills
|
## Adding New Skills
|
||||||
|
|
|
||||||
2
navan-expense/.env.example
Normal file
2
navan-expense/.env.example
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Navan Expense Skill Configuration
|
||||||
|
# No credentials required - uses Okta SSO via browser session.
|
||||||
1
navan-expense/.gitignore
vendored
Normal file
1
navan-expense/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
.env
|
||||||
76
navan-expense/SKILL.md
Normal file
76
navan-expense/SKILL.md
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
---
|
||||||
|
name: navan-expense
|
||||||
|
description: |
|
||||||
|
Submit work expenses through Navan via Okta SSO using Chrome browser control.
|
||||||
|
|
||||||
|
Triggers when user mentions:
|
||||||
|
- "submit an expense"
|
||||||
|
- "navan expense"
|
||||||
|
- "file an expense"
|
||||||
|
- "upload receipt"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Navan Expense Submission
|
||||||
|
|
||||||
|
Submits work expenses through Navan (Verkada's expense system) by navigating Okta SSO and using Navan's AI expense chat to upload receipts and fill out expense forms.
|
||||||
|
|
||||||
|
## Quick Usage (Already Configured)
|
||||||
|
|
||||||
|
### Submit an expense with a receipt
|
||||||
|
|
||||||
|
The user will provide:
|
||||||
|
1. A receipt image file (full local path)
|
||||||
|
2. The expense category (e.g., "Traveling: other", "Traveling: meals for myself")
|
||||||
|
|
||||||
|
### Flow
|
||||||
|
|
||||||
|
1. **Navigate to Okta** - Go to `https://verkada.okta.com` and wait for the dashboard to load
|
||||||
|
2. **Open Navan** - Click the "Navan" app link. It opens in a new tab. Switch to that tab via `list_pages` and `select_page`.
|
||||||
|
3. **Go to Expense page** - The travel home page loads first. Navigate directly to `https://app.navan.com/app/liquid/user/home`
|
||||||
|
4. **Click "New transaction"** - This opens a menu with options. Click "Add receipts" (uid will vary).
|
||||||
|
5. **Use AI chat** - A beta AI expense chat dialog appears. Click "Generate with AI" to open the chat interface.
|
||||||
|
6. **Upload receipt** - Click the "Attach file" button inside the iframe, then use `upload_file` to upload the receipt image.
|
||||||
|
7. **Send receipt** - Click the Send button to process the receipt via OCR.
|
||||||
|
8. **Wait for processing** - Wait for text like "receipt processed successfully" to appear (can take up to 30s).
|
||||||
|
9. **Review parsed data** - The AI will show: merchant, amount, date, location, expense type, GL code, etc.
|
||||||
|
10. **Correct expense type** - If the AI picks the wrong category, type a correction in the chat: e.g., "Change the expense type to Traveling: other" and send it. Wait for confirmation.
|
||||||
|
11. **Check with user** - Show the parsed expense details and confirm before submitting.
|
||||||
|
12. **Submit** - When approved, click the "Submit this expense" button. Wait for "Success!" heading.
|
||||||
|
|
||||||
|
## Key URLs
|
||||||
|
|
||||||
|
| Page | URL |
|
||||||
|
|------|-----|
|
||||||
|
| Okta Dashboard | `https://verkada.okta.com` |
|
||||||
|
| Navan Travel Home | `https://app.navan.com/app/user2/home?tripType=corporate` |
|
||||||
|
| Navan Expense | `https://app.navan.com/app/liquid/user/home` |
|
||||||
|
|
||||||
|
## Common Gotchas
|
||||||
|
|
||||||
|
- **Okta verification delay**: Okta may show a "Verifying your identity" page for a few seconds. Use `wait_for` with a generous timeout.
|
||||||
|
- **Navan opens in new tab**: Clicking the Navan app from Okta opens it in a new browser tab. Always check `list_pages` and use `select_page` to switch.
|
||||||
|
- **Travel home loads first**: The direct Navan SSO link lands on the travel booking page, not expenses. Navigate directly to the expense URL.
|
||||||
|
- **"New transaction" menu is a dropdown**: Clicking it reveals options like "Add receipts", "Type in details", etc. Don't assume it navigates directly.
|
||||||
|
- **AI chat lives in an iframe**: The expense chat is inside an iframe. Snapshots need to traverse into it. The iframe's RootWebArea is accessible in the a11y tree.
|
||||||
|
- **OCR can take 10-30 seconds**: After uploading and sending a receipt, the AI needs time to process. Use a 30s timeout on `wait_for`.
|
||||||
|
- **Expense type may be wrong**: The AI categorizes automatically but can miss. Always ask the user to confirm and correct via chat.
|
||||||
|
- **Date parsing**: The AI reads the receipt date. The screenshot filename date (e.g., 20260402) may differ from the transaction date on the receipt itself. Trust the OCR, not the filename.
|
||||||
|
- **No credentials needed**: Everything goes through the existing browser Okta session. No API keys or env vars required.
|
||||||
|
|
||||||
|
## Input Requirements
|
||||||
|
|
||||||
|
From the user you need:
|
||||||
|
1. **File path** to the receipt image (e.g., `/Users/connor.rhodes/Downloads/Screenshot_20260402-101332.png`)
|
||||||
|
2. **Expense category** (e.g., "Traveling: other")
|
||||||
|
3. **Any corrections** to the AI-parsed data before submission
|
||||||
|
|
||||||
|
## Expense Categories (Verkada/Navan)
|
||||||
|
|
||||||
|
Common categories seen in the system:
|
||||||
|
- Traveling: other
|
||||||
|
- Traveling: meals for myself
|
||||||
|
- Traveling: taxi & rideshare
|
||||||
|
- Airfare & fees
|
||||||
|
- Lodging
|
||||||
|
- Distance Driven
|
||||||
|
- Personal Professional Development
|
||||||
Loading…
Add table
Add a link
Reference in a new issue