The thirty-second version
Open your broker app after market close — Zerodha, Groww, Upstox, Angel One, it doesn't matter which — go to the orders screen and take a screenshot. Take two or three if the day ran long. Upload them. The AI reads every executed order off the images, lays out what it found in a review table, and waits. You scan the table, fix anything it flagged, hit commit — and your fills are paired into round-trip trades in your journal. On a normal trading day, the whole loop takes about thirty seconds.
That's the pitch. The rest of this post is the part that actually matters: what the AI reads, what it refuses to guess, and why you — not the model — get the final say on every number that lands in your journal.
What the AI actually reads
For each executed fill on the screen, the extraction pulls five fields:
- Symbol, in full. Not “NIFTY CE” but NIFTY 24 JUL 25200 CE — underlying, expiry, strike, option type. Half the value of an F&O journal is knowing exactly which contract you traded, so the symbol is never abbreviated away.
- Side. Buy or sell, as executed.
- Quantity. 75, not “1 lot” — the journal stores actual quantity so partial fills and mixed lot sizes add up correctly later.
- Average traded price. The price you actually got, not the limit price you asked for. This is the number your P&L is built from.
- Execution time. 9:23 AM IST matters, because time-of-day patterns are where most discipline problems show up.
A concrete example: an expiry-Thursday order book with 14 rows — 11 executed, 2 cancelled, 1 rejected for margin. The import returns exactly 11 fills, each one a line like SENSEX 25 JUL 81400 PE · BUY · 40 · avg ₹186.55 · 9:47. The other three rows are skipped, and that's deliberate.
Three rules the import never breaks
- It never invents a number it cannot see. If the average price is cropped, blurred, or hidden behind a notification banner, the AI does not estimate it from where NIFTY was trading that day. The field comes back low-confidence and flagged. An extraction model's job is to read, not to remember or predict.
- Rejected, cancelled and open orders are skipped. They have no traded price, because nothing traded. Your cancelled buy at ₹95 that never filled is not a trade, and putting it in a journal would corrupt every statistic downstream. Only executed fills carry real numbers, so only executed fills come through.
- Nothing is saved without your review. The AI proposes; you decide. Every import lands in a review table first, and not one fill touches your journal until you've confirmed it. There is no silent auto-save path.
“But what if it misreads something?”
Fair question, and the honest answer is: on clean broker screenshots the extraction is very good, and it is not perfect. A compressed image can make an 8 look like a 6; a strike can sit half-under a scroll shadow. The design assumption is not the AI is always right — it's the AI is right often enough that your job shrinks from typing twelve rows to checking two fields.
That's what the confidence highlights are for. Every extracted field carries a confidence score, and anything the model wasn't sure about is visibly highlighted in the review table. You glance at the screenshot sitting right beside it, tap the cell, correct ₹186.55, and move on. Compare that with the spreadsheet failure mode: a mistyped price in Excel raises no flag at all, and you discover it weeks later when a trade's P&L looks impossible. A system that says “I'm not sure about this one” is more trustworthy than one that can't say it — including you at 6 PM after a losing day.
Commit: where fills become trades
Confirming the table isn't the end — it's the handoff. On commit, your fills are paired first-in-first-out into round-trip trades: buy 75, then sell 40, then sell 35 is one trade with an average entry, an average exit, and a holding time — not three unrelated rows. Partial exits, re-entries and scale-ins all resolve the same way. If you've ever wondered why your broker's P&L and your journal disagree, FIFO pairing is usually the answer. The point is that win rate, average loss and time-of-day stats only mean anything on round trips — and the import delivers round trips, not a pile of raw fills.
The real feature is that you'll actually do it
Every journaling method dies in the same place: data entry. Twelve fills after a losing day is roughly twenty-five minutes of careful typing into a spreadsheet, done while annoyed — so it gets skipped, then only the good days get logged, then the journal is dead. A thirty-second import isn't a convenience feature; it's the survival condition for the entire habit. That's why screenshot import is the front door of PnL Book, not an add-on — with broker CSV and manual entry as fallbacks when a screenshot isn't the right tool.
The AI reads, flags what it's unsure of, and skips what never traded. You review, correct, and commit. Thirty seconds a day, and the losing days — the ones the journal exists for — finally get logged too.