Browser automation / Demo project
PortalPilot
A browser robot transfers CSV orders to a supplier portal and verifies whether submissions succeeded after a browser failure.

The challenge
An operator transfers orders from a spreadsheet to a web portal. If the submit response disappears, the request may already be saved. Clicking again could create a duplicate.
The solution
PortalPilot validates the CSV, queues orders and fills forms with Playwright. After a failure, it looks up the request by reference in the external portal and checks six fields. Ambiguous outcomes and form changes go to manual review.
How it works


The outcome
Across two demo batches, 49 requests were confirmed and one row was held for manual review. An independent database check verified the demo portal’s request numbers and fields. The container acceptance run passed 69 tests. A different supplier portal requires a dedicated adapter and duplicate-submission checks.
My contribution
I connected the operator dashboard, PostgreSQL and a browser worker. Submission intent is recorded before the form is sent, and only the current job token permits the worker to save its result. Parallel runs, stops and delayed responses were tested.
Architecture
The dashboard, queue and external portal are separate so recovery can be verified independently.
Operator dashboard
The operator validates a CSV and starts a batch.
Component connections
- Operator dashboard: The operator validates a CSV and starts a batch.
- PostgreSQL queue: The database records order states and which worker can complete a task.
- Browser adapter: Playwright fills the form and verifies the stored request by reference.
- Operator dashboard → PostgreSQL queue
- PostgreSQL queue → Browser adapter
- Browser adapter → PostgreSQL queue