Selected work / Local browser demo

Portfolio demo

Invoice validation demo

Choose a fictional invoice to see preset fields checked against rules. This demo does not read uploaded files or run OCR.

Portfolio demoRule checksException routing

The scenario

What this demo explores.

Invoice data needs checks for missing fields and inconsistent totals before it can be used in an accounting system.

Choose a fictional invoice to see preset values checked against rules, with review flags and a JSON preview. The demo does not read files, extract text, or connect to an accounting system.

The fields here come from built-in examples. A real document workflow would need an extraction method and a way for people to review uncertain values.

Interactive demonstration

Try the workflow.

This demo runs in your browser with fictional data and scripted results. It does not send messages or connect to external services.

Interactive portfolio demo

Check a fictional invoice

Uses preset invoice data in your browser. No upload, OCR, AI extraction, or export takes place.

1. Select a sample document

Loads preset fields, checks totals and the purchase order, then shows a sample destination.

1Sample invoice selected
2Preset fields loaded
3Record preview prepared
4Totals and PO checked
5Demo destination shown

Sample invoice

Source preview

Northstar Supply Co.Accounts receivable
Invoice no.INV-10482
DescriptionQty.Amount
Controller modules4$840.00
Calibration kit1$340.00
Subtotal
$1,180.00
Tax
$94.40
Total
$1,274.40

Structured data

Sample record

Run the demo to see the preset fields and check results.

Technical case study

Checking invoice totals in two ways

The same TypeScript validator drives the demo and its tests. It checks line items against the final total and checks the stated subtotal plus tax separately.

Invoice B’s $1,410 subtotal plus $112.80 tax matches its stated $1,522.80 total. Its line items total $1,280, making the amount with tax $1,392.80. The separate line-item check catches the $130 mismatch.

The interface announces the final status and reason, and clears the previous result when another sample is selected.

AI assistance was used for this revision and review. The example uses fictional data; uploads, OCR and accounting connections would need separate implementation.

What was tested and what remains

: 16 invoice-validator tests passed. Local browser checks covered all three outcomes, sample reset, the JSON toggle and workflow layout at seven viewport widths from 320 to 1440 pixels. Lint, TypeScript checking and the production build also passed.

Screen-reader speech and Linux browser rendering were not tested. The live-region structure was checked in headless Chrome on macOS; this is not a full accessibility audit.

Demo workflow

How the example works.

WorkflowThe invoice validation example

The demo checks the purchase-order field and invoice arithmetic, then shows a review status and JSON preview.

  1. 01DocumentInvoice or form
  2. 02InputBuilt-in sample
  3. 03FieldsExample values
  4. 04ValidationPO + totals
  5. 05RouteReview or preview

Design considerations

The logic behind the example.

The demo shows inputs, rule checks, and result states. The notes below distinguish the local example from requirements for a real integration.

01

Preset invoice input

The demo selects one of three built-in invoice examples. It does not accept uploaded files.

02

Structured sample fields

The fictional invoice values are represented as typed fields. They are not extracted from a document.

03

Consistent field structure

The examples use the same field structure for dates, currency, vendor details, and purchase-order references.

04

Purchase-order check

The demo checks whether the preset invoice includes a purchase-order number.

05

Arithmetic checks

The demo compares line items plus tax with the total, and checks the stated subtotal plus tax separately.

06

Exception routing

The result displays a review status and reasons when the sample fails a check. It does not create a real review task.

Reliability considerations

What happens when something goes wrong?

01

Separate extraction from approval

In a real workflow, extracted values would need rule checks and review before use.

02

Preserve an audit trail

A real implementation would retain the source file, extracted record, validation outcome, and any overrides.

03

Show a missing purchase order

The missing-PO sample produces a review flag and explains which field needs attention.

04

Protect data handling

Storage, access control, retention, and encryption should be chosen around the sensitivity of the documents involved.

Beyond the demo

What a live integration would need.

A live integration would require provider-specific development, account access, secure data handling, and tests for failure and recovery. These requirements are not implemented by the browser demo.

  • Secure file storage, access controls, and retention rules suited to the document type
  • Provider-appropriate extraction or OCR services with confidence thresholds
  • A review queue with approvals, corrections, and complete audit history
  • Exports or API connections to the accounting, database, or reporting destination
Concepts demonstrated
  • Purchase-order check
  • Arithmetic checks
  • Review status
  • JSON preview

Interested in the code or a website project?

Get in touch to discuss a website or a hiring opportunity.

Contact me