Back to work

Confluence Journal · Web app · AI features

Built a trading journal that records the why

I'm learning to trade forex, and most journals I tried only tracked numbers: entry, exit, profit or loss. They couldn't tell me why a trade worked, or whether I was trading the way I'd been taught. So I designed and built Confluence Journal, a journal where the reasoning comes first and the numbers follow.

Role
Product designer & builder
Team
Solo, built with Claude Code
Timeline
Self-initiated, first version built and live in five days
Status
Solo build · Live
The Confluence Journal overview page, 'How you're doing, and what to work on': a prompt to explain 9 trades, backtest profit, win rate, average per trade and profit factor cards, trade stats and a practice streak grid.
All screens show sample data.

Problem

Trading journals record what happened, not why. Notes get rewritten after the result is known, so you can't tell good decisions from lucky ones.

What I did

Designed and built a rationale-first journal: reasoning is locked before the trade plays out, AI tags the confluences used, and every checklist and rule comes from my own words.

Result

Live and still in testing in my own backtesting and forward testing. I'm tracking what to measure and will report results once I have 100 trades of data.

Context

I practise trading with a top-down approach: decide the bias on a higher timeframe, find where price is, wait for a trigger on a lower timeframe, and check the timing. Each of those signals is a confluence, and the idea is that the more of them line up, the better the trade.

I backtest on FX Replay and kept notes alongside. The problem was that my notes and my results lived in separate places, and I wrote most of my reasoning after I already knew how the trade ended. A winner always looked well planned in hindsight. A loser always had an obvious mistake.

The problem

Hindsight rewrites the story

Reasoning written after the outcome is shaped by the outcome. Without a record from before, there's nothing honest to learn from.

Numbers without reasons

Spreadsheets and platform exports show win rate and R, but not which setup or habit produced them.

Study and practice were disconnected

My course notes lived in one place and my trades in another, so I couldn't check whether I was applying what I'd been taught.

Key decisions

The rationale comes first, and it gets locked

The trade form is ordered the way a trade actually happens. You add the pair and charts, then write your rationale, then lock it. The lock button says why it's there: lock before you play the trade out, so hindsight can't change it. The result, outcome notes and outcome screenshots come after, in their own step.

logging a trade

  1. Pick the pair and add the chart from before the entry
  2. Write or dictate the rationale
  3. Lock the rationale
  4. Play the trade out
  5. Add the result, outcome notes and outcome chart
  6. Cross-check it against the course notes
reasoning is saved before the result is known
  • Dictation using the browser's free speech recognition, because talking through a chart is faster than typing. A Fix dictation button cleans up misheard trading terms.
  • Drafts save automatically, so closing the drawer mid-trade doesn't lose anything.
Logging a USDJPY backtest: step 1 sets the pair, type, side, chart time, entry, stop and target; step 2 is the rationale, with Dictate and Lock rationale buttons and the note to write it before pressing play in FX Replay.
logging a trade: the setup first, then the rationale, locked before the outcome
  • Trades waiting for a result can be saved early and matched later with the synced FX Replay trade, which fills in prices, session and R.

AI reads the reasoning, then tags only what was used

Tagging confluences by hand is tedious, so people skip it. Find confluences sends the rationale to Claude, which tags each confluence with its stage and timeframe. It also flags contradictions, gaps and unclear parts, quoting my own words back to me.

I grouped every confluence into five stages, each with its own colour, so a trade card shows at a glance which parts of the analysis were covered:

  • Bias: the higher-timeframe direction
  • Location: where price is
  • Trigger: lower-timeframe confirmation
  • Timing: time of day and news
  • Mindset: execution and emotion

Confluences can carry a timeframe and can be marked as missing, such as no buyers on the weekly, because what wasn't there often matters as much as what was. The AI only tags what I actually said. It never guesses from the chart.

The checklist step of a USDJPY trade: 12 of 16 confluences ticked from my rationale, such as weekly HTF bias aligned, 15m break of structure and 3m order block, with 4H order block and 15m liquidity left unticked.
the checklist, ticked only from what I wrote in the rationale

Every insight is built from my own words

The checklist, rules and setup views are not pre-filled templates. Each pair gets its own checklist made from the concepts I mention in that pair's rationales. A trade is ticked only for what I wrote down.

  • Setups shows where my edge is: win rate and average R for each confluence, with small samples marked early so I don't over-read five trades.
  • Rules lets me write the rules I trade by and compares trades where I followed every rule with trades where I broke one.
  • Overview answers How you're doing, and what to work on, including backtest against forward test, what my losing trades have in common, and an AI study plan based only on my numbers.
The Rules page: 'Does following them pay?' compares trades that followed every rule with trades that broke at least one, then my numbered rules, such as 'I know the higher-timeframe bias', each with its result when followed and when broken.
my rules, and what following or breaking each one has cost so far

When there isn't enough data, the empty state explains what's needed, for example after about 10 trades with rationales, this tells you what to study, what to stop and what to keep doing.

Connect the journal to what I'm learning

I added a Study area that holds my course notes and class transcripts in a hand-drawn notebook style. Practice sessions ask questions in simple, everyday English and grade every answer. A reading pin marks where I stopped in a lesson, on every device.

After a trade, Cross-check compares my rationale and outcome with my notes, then sorts the trade into one of four boxes: followed the method or broke it, and won or lost. A loss where I followed the method is a very different lesson from a win where I broke it.

The Study page: a session in progress, a practice session builder for practical or theory questions, my teacher's method built from 2 lessons, my lessons, and the topics I keep missing, such as inducement and invalidation point.
study: practice sessions, my lessons and the topics I keep missing

An Ask button on every page answers questions about whatever is on screen, such as a lesson paragraph, a practice question or an open trade, using my notes.

Make AI costs visible

Every AI action shows its approximate cost in naira on the button, about ₦1 for a cross-check. A usage page tracks credit left, spending by type and a monthly budget cap. Knowing the cost up front makes the AI features feel safe to use, not something to ration.

Testing & iteration

I use the journal on my laptop and my phone, so I tested it on both and fixed what got in the way:

  • The trade drawer freezes the page behind it on phones, stacks its fields and uses 16px inputs so the screen doesn't zoom.
  • A skeleton loading screen replaced the plain Loading your journal… message.
  • The trade view puts the rationale and outcome first and screenshots last, because reading the reasoning is the point.
  • The cross-check result became calmer. I removed a percentage score that made a single check feel like a grade.
  • Light and dark themes share one set of colour tokens. Colour is limited to the five stages and the stat tiles, so it always carries meaning.

Outcome so far

Confluence Journal is live, and I'm still testing it in my own backtesting and forward testing. Early on, I've noticed:

  • I skipped the rationale after losing trades. Before the lock existed, I often didn't write my reasoning at all, especially after a loser. So I changed the flow: I start logging the trade before it plays out, write the rationale and lock it, then add the outcome once the trade is done. When I import my trades from FX Replay, the two records merge into one.
  • Logging keeps getting simpler. I use the log-trade flow every session. Whenever I hit a bug I fix it, and whenever I spot a step I can remove, I remove it. It's noticeably simpler now than the first version.

What I'm measuring next

  • Whether trades that follow every rule outperform the ones that break one, once there are enough to trust (50 trades)
  • Which confluences actually hold up across backtest and forward test
  • How often I write a rationale before the trade versus skip it

I'll update this case study once I have 100 trades of data.

Reflection

Designing for myself made the feedback loop very short. I could feel friction the same day and fix it the next. It also taught me how much of a tool's usefulness depends on small trust decisions: locking the rationale, never guessing a tag, labelling small samples as early, and showing what AI costs before you tap.

Contact

Like how I work? Let's talk about your product.

Open to remote roles & freelance projects. I reply within a day.

Email me