# Using the Seabright Mechanical estimator as an AI agent

This file is for software agents that operate a browser for a person. It is not linked from any page a customer sees. People should simply use https://seabrightmechanical.com/quote.html.

The estimator is a single page that runs entirely in the browser. There is no pricing API and no endpoint to post a file to for a price: open the page in a real browser (Playwright, Puppeteer, Chrome DevTools Protocol or a browser-use agent), give it the files, and read the result. Pricing happens locally. Nothing is uploaded until **Send for engineering review** is pressed.

## Ground rules

1. **Act only for a real person and a real job.** Do not run the estimator for load testing, price scraping, or to build a price list. The output is an estimate for specific geometry, not a rate card.
2. **Never send on your own initiative.** `#btnSend` delivers the job, the contact details and the CAD files to the shop's engineers. Press it only after the person you act for has seen the estimate and explicitly asked you to send it, with their own name, email and address. Never invent or reuse contact details.
3. **The estimate is not the final price.** An engineer reviews every job and may adjust price, material or lead time. Production starts only after the customer approves the final quote and payment clears. Say so when you report the number.
4. **Do not work around a block.** If a part is too big or the page refuses to quote, report what the page says.
5. Report the estimate and the turnaround as the page shows them, in US dollars, and say which material, quantity, infill and turnaround they are for.

## 1. Open the page

`https://seabrightmechanical.com/quote.html`

A browser profile that has used the page in the last twelve hours may restore its previous parts. Use a fresh profile, or remove old rows (`[aria-label^="Remove "]`) before adding new files.

## 2. Add the parts

Set files on the hidden file input `#fileInput` (multiple files allowed). Do not click the drop zone; that opens a native file picker.

- Accepted: `.step`, `.stp`, `.stl`, `.obj`, `.3mf`. A `.zip` estimate this page produced earlier restores that whole estimate.
- STEP files load a CAD engine (about 7.6 MB) the first time, then are tessellated in a worker. Large STEP files can take tens of seconds.
- Progress: `#loadBar` is visible while files load and `#loadText` names the step. Loading is done when `#loadBar` is hidden; `#status` then reads, for example, "2 parts loaded ✓", or carries the error.

In page script, `parts.length` is the number of parts loaded.

## 3. Set each part

Each part has a row. Its controls are labelled with the part's file name:

| Control | Selector | Values |
|---|---|---|
| Units | `select[aria-label="Units of NAME"]` | `mm` (default), `cm`, `in` |
| Material | `select[aria-label="Material of NAME"]` | `PETG`, `PETG ESD`, `PETG CF`, `PLA`, `ABS`, `Nylon (PA)`, `Nylon CF (PA-CF)`, `PPA-CF`, `PPS-CF`, `PC`, `ASA`, `TPU` |
| Quantity | `input[aria-label="Quantity of NAME"]` | whole number, 1 or more |
| Infill | `select[aria-label="Infill of NAME"]` | `100` down to `0` in steps of 5 (percent) |
| Remove | `button[aria-label="Remove NAME"]` | |
| Duplicate | `button[aria-label="Duplicate NAME"]` | |

STL and OBJ carry no units. If the dimensions the row shows are 25.4 times too small or too large, the file was drawn in the other unit: set Units rather than scaling the file.

Changing material on a part that has colors set resets it to one color, and the page asks first.

## 4. Turnaround, delivery and discount

- Turnaround: the radio `input[name="tier"]` with value

| value | name | shortest |
|---|---|---|
| `ultra` | Ultra Fast | from 2 days |
| `expedite` | Expedite | from 3 days |
| `standard` | Standard | from 4 days |
| `eco` | Eco | from 5 days |

  The page works out the days from the job's own print time, so a large job takes longer than the shortest figure.
- Local pickup in San Jose, California: check `#cPickup`, then choose where to meet. Shipping is otherwise $15.99, free over $150.
- Discount code: type it into `#promoCode` and press `#promoApply`. Use only a code the person gave you.

## 5. Read the estimate

The itemized table is `table.qt`. What the parts cost at each turnaround, before shipping and tax, is in `#total-ultra`, `#total-expedite`, `#total-standard` and `#total-eco`.

In page script, `lastQuote` holds the selected estimate:

- `lastQuote.lines[]`, per part: `name`, `material`, `infill`, `qty`, `unit`, `dimsMm`, `volCm3`, `grams`, `unitPrice`, `amount`, `fits`, `tooBig`, `split`
- `lastQuote.total` (the whole estimate, with shipping and sales tax), `subtotal`, `tax`, `shipping`, `pickup`, `days`, `tierName`, `minApplied`

`lastQuote` is a page variable, not `window.lastQuote`: read it with an evaluate call. Estimates are valid for 15 days. The minimum order is $30.

A part with `tooBig: true` is larger than 350 × 320 × 320 mm and cannot be quoted as one piece: the send and download buttons stay disabled.

## 6. Hand it back, or send it

- **Download PDF quote**, `#btnPdfRef`: a PDF of the estimate for the person to keep. It does not carry the CAD files.
- **Download estimate + files**, `#btnPdf`: a ZIP with the estimate and the exact files priced. Dropping that ZIP back on the page restores the estimate.
- **Send for engineering review**, `#btnSend`: see the ground rules. It needs Name (`#cName`), Email (`#cEmail`) and Project title (`#cProject`), and a shipping address (`#cAddr1`, `#cCity`, `#cState`, `#cZip`) unless local pickup is chosen. Company (`#cCompany`), phone, NDA reference (`#cNda`) and PO number (`#cPo`) are optional. Put tolerances, critical dimensions, finish, color and deadlines in `#cNotes`. Specification documents (drawings, PDFs) go on `#docInput`. When it succeeds the page shows "Request received", and the shop replies by email, usually within one business day.

## Colors, logos, emboss and deboss

These are set in the advanced configuration (the Configure button on a part row), which opens the 3D viewer over the page. It is built for a person working with a pointer. If the person has asked for colors or a logo, describe what they want in `#cNotes` and attach any artwork on `#docInput`; an engineer will set it up.

## Contact

3dp@seabrightmechanical.com. Questions about a job, an NDA or anything this page cannot do go there.
