Inspiration
At a previous customer service job, every request that came in with attachments change of address, a name change after marriage, meant manually opening each file just to understand what it even was before anything could be done with it.
Multiply that by every ticket, every day, and it's a huge amount of time spent just figuring out what am I even looking at, before the actual work starts.
This project removes that step.
What it does
TaxDesk AI simulates a tax-office support inbox. A support agent picks from a set of sample customer requests, each with a message and 1-3 attached documents (an ID, a utility bill, a signed form, a W-2).
The system:
- Classifies each attachment and extracts the relevant fields with a confidence score, using the Nutrient DWS Data Extraction API
- Matches the request to a category (change of address, add dependent, document upload, etc.)
- Produces a one-line summary of what the customer wants and what's attached
- Auto-approves clear-cut cases and routes anything low-confidence to a human review screen instead of guessing
- On approval, updates a mock customer record and logs every step to an audit trail
The result: a human only has to look closely at the cases that actually need judgment, instead of opening every attachment on every ticket.
How we built it
- Confidence-threshold logic to split auto-approve vs. flag-for-review
- Simple audit log recording every classification, extraction, and human decision with timestamps
Challenges we ran into
Accomplishments that we're proud of
- A working end-to-end pipeline: document in, classified + extracted with real confidence scores, routed correctly, action taken, and logged built from a real pain point rather than an invented one
What we learned
What's next for TaxDesk AI
- Real inbox/email integration instead of the simulated persona picker
- Support for more document and request types
- Using DWS Viewer more fully for in-line annotation during human review
- Configurable confidence thresholds per document type, since a missed address update and a missed SSN mismatch don't carry the same risk
Built With
- claude-code
- express.js
- node.js
- nutrient-dws-api
- react
Log in or sign up for Devpost to join the conversation.