Typing 40 rows of broker positions by hand is the single most common reason users give up during onboarding. AI Stock Monitor accepts a raw screenshot of your broker's positions page — drag, drop, done. This article covers what the upload accepts, what it does with the image, and where the data lands.

What the Upload Accepts

Any PNG, JPG, or cropped screenshot of a broker positions table works. The parser was tuned against Interactive Brokers, Schwab, Fidelity, Robinhood, and Tiger Brokers layouts, but any table showing at minimum ticker + quantity + average cost will parse cleanly.

Works well
Full-page screenshots of the broker positions table. Readable text (not a low-resolution phone photo from an angle). Stocks, ETFs, options positions with standard OCC symbols.
Works with review
Partial screenshots that cut off the right-hand columns (market value, P&L). Parser will extract ticker + quantity but ask you to confirm missing fields before saving.
Does not work
Photos taken at an angle, heavy glare, handwritten tables, CSV dumps (use the CSV import path instead). Broker apps in dark mode with very low text contrast.

The 3-Step Upload Flow

1
Drop the image onto the upload zone on the Positions page. The parser runs on the server (not your browser) and usually finishes in under 8 seconds.
2
Review the extracted rows in the preview table. Anything the parser was unsure about is highlighted in amber — typically symbols that collide (e.g. GOOG vs GOOGL) or options chains where the broker's formatting differs.
3
Confirm and save. Positions land in your portfolio immediately and start populating the Risk Signals dashboard on the next scan cycle (usually within a minute).
Upload rejects your image? It is almost always contrast, not content. Take the screenshot in the broker's light theme, not dark mode — the parser reads dark text on light backgrounds significantly more reliably.

What the Server Does With the Image

The image is sent to a vision model for OCR extraction, then discarded. The parsed rows (ticker, quantity, average cost) are what gets stored — the raw screenshot is not retained after parsing. If the parse fails, you will see the error but the image is still deleted within the same request.

Screenshot in = parsed positions out
PNG / JPG · broker layouts auto-detected · ~8 seconds
Raw image discarded after parse — only extracted rows are stored

Upload your positions screenshot →