RENZZY / Menu
Back to all work

Browser automation / Demo project

PortalPilot

A browser robot transfers CSV orders to a supplier portal and verifies whether submissions succeeded after a browser failure.

  • Python
  • Playwright
  • FastAPI
  • PostgreSQL
  • Jinja2
  • Docker Compose
PortalPilot dashboard showing a batch of 25 confirmed orders.

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.

Component description

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

The next step

Something in mind? Let’s make it work.

Get in touchBack to all work