02 / Work

Five years. Six products.

Selected work from my time at Corestrat, leading frontend on trading platforms, finance automation, and decision-intelligence systems. Three featured below in long form; three more listed in the index.

6 projects · 5 years
Project · 01
Role
Frontend architect
Org
Corestrat
Years
2025 — 2026
Sector
Multi-asset trading · Portfolio intelligence
Outcome
Sub-ms data fetch · Reduced clicks-to-trade
FigmaReact 18JavaScriptMaterial UIReduxWebSocketsTradingViewIBKR APIThird-party APIs

FinSight

A multi-asset trading and portfolio intelligence platform built for a Turkish brokerage — the Groww/Zerodha equivalent for the Turkish retail market.

Full-fledged trading with watchlists, news, wallets, multi-asset portfolios, and an algo-trading layer. I owned frontend architecture end-to-end: design system, real-time data layer over WebSockets, charting integration with TradingView, and execution flows tuned for sub-second responsiveness across the Turkish market session.

Illustrated · AI-generated representation
Illustrative representation of the FinSight trading platform
Company policy prevents publishing the production UI. This image is an illustrative representation of FinSight generated with Google Gemini to communicate the product's surface, not the actual interface.
Problem

The Turkish retail brokerage market lacked a serious, modern equivalent to what Groww and Zerodha built for India — a single platform where retail traders could research, watch, trade, and run algorithms across asset classes without stitching together five different tools. Existing Turkish offerings either felt like dated banking portals or limited mobile-only apps. The client wanted to lead the category, not enter it as another option.

The product needed to do three things at once: feel as approachable as a fintech consumer app, behave with the reliability and density of a professional trading terminal, and stay performant during the high-volume open and close windows of the Borsa Istanbul session.

Approach

Design-system-first. Every screen was built off a single Figma source — color theory, typography, spacing, density, and dark mode — so the platform read as one product across watchlist, charting, order entry, and back-office surfaces. Accessibility (contrast, keyboard navigation, focus management) was a baseline requirement, not a polish phase.

UX before features. Trading apps fail when the user has to think about the interface during a fast market. Reduced clicks-to-trade across every flow, tuned hover and feedback states for confidence under pressure, and used motion sparingly — present where it confirms an action, absent everywhere else.

Real-time data, honestly handled. Built a WebSocket subscription layer that reference-counts channels per symbol so the same instrument open across watchlist, chart, and order ticket consumes one socket, not three. Order book and price ticks tuned to update without ever shifting the user's focus.

Charting via TradingView. Integrated TradingView's advanced charts to give traders a familiar, professional charting surface — drawing tools, indicators, multi-timeframe analysis — without rebuilding what TradingView already does best. Custom overlays handled the platform-specific data (positions, fills, algo events) on top.

Algo-trading surface. Designed the UX for the algo-trading flow as a first-class feature, not a developer escape hatch — strategy builder, backtest viewer, and live monitor are accessible without leaving the main shell.

Decisions

TradingView over a custom chart engine

We had the option to build our own canvas charting layer for tighter visual control, but TradingView already solves drawing tools, indicators, and multi-timeframe analysis better than a team of any reasonable size could in a year. We integrated TradingView's advanced charts and put our effort into the things only we could build — the platform-specific overlays, position markers, and algo event annotations layered on top of it.

JavaScript over TypeScript

The team's velocity and the timeline favored JavaScript. The Redux store was strictly conventionalized through patterns and code review, and runtime validation on the WebSocket and IBKR data boundaries caught the class of issues TypeScript would have caught at compile time. Pragmatic for the stage, with a documented migration path if the codebase outgrows it.

Performance as a feature, not a polish phase

From day one, every chart load, order ticket open, and watchlist update was measured. Aggressive caching at the data layer, memoized selectors at the Redux layer, and a strict ban on layout-shifting renders during live tick updates. Result: a UI that feels stationary even when the market is not.

Outcome
<1msUS index data fetch (cached)
−60%Clicks to place a trade
OfflineWatchlist + last quotes via cache
Project · 02
Role
Frontend lead
Org
Corestrat
Years
2022 — 2024
Sector
Enterprise finance · Logistics
Outcome
+30% automation efficiency · Multi-tier approvals
FigmaReact 18JavaScriptMaterial UIJWT AuthQuickBooks APIXero APIZoho Books APIPower BI EmbeddedEmail Workflow

Finance Automation Platform

An end-to-end AP and AR automation platform for US and Indian finance teams — invoices in, reconciled entries out, fewer hands in the middle.

Originally built for a US logistics and parcel-management firm processing accounts payable and receivable offline across distributors. Grew into a multi-tenant platform serving US and Indian finance teams, with a multi-stage approval workflow, four accounting integrations, payroll automation, and embedded reporting.

Illustrated · AI-generated representation
Illustrative representation of the Finance Automation Platform
Company policy prevents publishing the production UI. This image is an illustrative representation of the Finance Automation Platform generated with Google Gemini to communicate the product's surface, not the actual interface.
Problem

The client was running accounts payable and accounts receivable manually across hundreds of distributors. Invoices arrived as PDFs and email attachments, got entered into spreadsheets, then re-entered into QuickBooks. Approvals were chased over email. Errors surfaced weeks later during reconciliation. The cost was not the software — it was the people-hours and the mistakes.

The brief was to build a single web platform that accepted invoices at one end, ran them through the right approval chain, and emitted clean reconciled entries into the accounting software at the other end — without losing the control and review steps the finance team relied on.

Approach

One portal, four accounting backends. The platform sits in front of QuickBooks, QuickBooks Online, Xero, and Zoho Books, exposing a single consistent UI to the finance team regardless of which accounting system the client uses. Each integration handles its own auth, sync, and field mapping; the user never sees that complexity.

Upload-first invoice ingestion. Users upload AP invoices grouped by distributor in batch. The system parses, validates, and routes each invoice. Anything that fails validation lands in a Pending queue with the specific error highlighted, so a clerk can correct and resubmit without leaving the platform.

Multi-stage approval workflow. AP and AR both run through a configurable chain: Clerk → Marketing Manager → Payment Team. Each stage has its own portal view, comment thread, and audit trail. The Marketing Manager dashboard surfaces weekly batch reviews and bulk approval. The Payment Team sees only what's cleared the manager stage, with the reasoning attached.

Embedded reporting. Power BI dashboards are embedded directly inside the platform — distributor performance, approval bottlenecks, monthly payable trends — so the finance team gets analytics without leaving the workflow they live in.

Beyond AP/AR. The same architecture powers payroll automation, general ledger entries, email notifications across the workflow, and user management with role-based access (clerk, manager, payment, admin).

Decisions

Single platform, four accounting backends

The client started on QuickBooks. The product roadmap added Xero, then Zoho, then QuickBooks Online for the SaaS variant. Rather than fork the product per integration, we built an adapter layer that normalized chart-of-accounts and entry-posting semantics across all four — so the frontend ships one experience and the integration layer absorbs the differences. New backends added without UI rework.

Approval flow as configuration, not code

Different clients run different approval chains. Hardcoding Clerk → Manager → Payment would have forced us into per-client forks. Modeled the approval flow as a configurable graph stored per tenant, with the UI rendering whichever stages exist for that client. The Indian client runs a four-stage chain; the US logistics client runs three; both ship from the same codebase.

Power BI Embedded over a custom dashboard layer

We could have built our own charting and reporting surface. We chose Power BI Embedded because the finance teams using the platform already lived in Power BI elsewhere — same chart library, same export formats, same mental model. The cost is a licensing line item; the benefit is that finance analysts can drill into the data without learning a second tool.

Outcome
+30%Automation efficiency gain
4Accounting systems unified
3-tierApproval chain, configurable per tenant
Project · 03
Role
Frontend lead · 60% of UI ownership
Org
Corestrat
Years
2023 — 2026
Sector
Decision intelligence · Enterprise ML
Outcome
100M+ row datasets · No-code model building
FigmaElectronReact 18JavaScriptMaterial UIReact FlowRechartsSecure IPCOffline-First

IntelliDecision.ai

A no-code desktop platform for building, testing, and deploying enterprise predictive models — classification and regression in a visual six-step workflow.

Built as a desktop application so enterprise analysts could work with sensitive datasets locally, without uploading proprietary data to the cloud. Six guided steps take a raw dataset through preparation, model training, evaluation, decision strategy design, and auto-generated documentation — all without writing a line of code.

Illustrated · AI-generated representation
Illustrative representation of IntelliDecision.ai
Company policy prevents publishing the production UI. This image is an illustrative representation of IntelliDecision.ai generated with Google Gemini to communicate the product's surface, not the actual interface.
Problem

Enterprise decision-making at scale still runs on spreadsheets, scattered scripts, and one or two data scientists who can read them. The teams who actually need to act on the predictions — credit risk, marketing strategy, operations — are gated by tooling that requires Python, statistical fluency, and a willingness to wait days for a model to come back from the data team.

The brief was to compress that gap into a single desktop product. Analysts upload a dataset, define what they want to predict, walk through a guided workflow, and walk out with a deployable predictive model and the documentation to justify it — in hours, not weeks. Desktop-first because the data is sensitive: credit files, customer records, internal financials. Cloud round-trips were a non-starter for the target users.

Approach

Six steps, one screen at a time. The product is structured as a left-rail workflow: Data, Prepare, Train, Evaluate, Build Decision, Auto Documentation. Each step has its own canvas, its own state, and its own validation gate before the user can move on. The interface never shows a step the user is not ready for — fewer choices, clearer progress.

Visual model training via React Flow. The training canvas is a node-based decision tree built on React Flow, where users grow and prune the tree visually. Target variables are auto-detected and surfaced as branching options; linear and logistic regression nodes can be dropped in alongside tree splits. The user sees the model as a graph, not as code.

Offline-first by design. The Electron shell keeps the data, the model artifacts, and the documentation entirely local to the user's machine. No telemetry on dataset contents. IPC channels are scoped, the renderer is isolated, and secure state management keeps the model training state durable across sessions even if the app crashes mid-workflow.

Auto-documentation as a first-class deliverable. The sixth step generates a complete technical document covering data lineage, transformations applied, model architecture, hyperparameters, and evaluation metrics — exportable in a format the analyst's compliance team will accept. The documentation is not a side-effect; for most users in regulated environments, it is the actual deliverable.

Champion vs challenger model comparison. The Build Your Decision step lets users define a champion strategy and one or more challengers, then runs them against held-out data so the analyst can defend the chosen model with side-by-side performance, not vibes.

Decisions

Electron over a web app

The data this product handles — credit files, customer records, internal forecasts — was never going to leave the analyst's machine. A web app would have forced a backend the client did not want to operate. Electron let us ship a single distributable that runs the entire workflow locally, while still using a modern React frontend the team already knew how to build. The trade-off (heavier binary, slower cold start) was acceptable; the trust posture it bought was not optional.

React Flow for the model canvas, not a custom graph

We could have built a bespoke node graph for the training step. React Flow already solved zoom, pan, node selection, edge routing, undo/redo, and accessibility. We kept the effort on the things only we could build — the statistical node types, the validation rules between steps, and the export-to-trained-model pipeline. The canvas felt native on day one because it was actually native to a well-loved library.

Workflow state as the source of truth

Each of the six steps is gated on the validity of the previous. Instead of letting users free-navigate and then surfacing errors, we modeled the whole product as a state machine where each step has explicit entry and exit conditions. The user never lands on a screen that does not make sense for the current model state. This made debugging analyst-reported bugs an order of magnitude easier — every bug reduces to a state the machine should not have allowed.

Outcome
100M+Rows handled per dataset
6 stepsRaw data to deployed model
OfflineZero dataset telemetry
More projectsListed in the index.

Three more projects from the same period at Corestrat — listed here with their core context. Full project pages for these are on the way.

04Portfolio Analyzer PlatformUS equities · DashboardsShippedListed
05Digital Lending AutomationNBFC · Lending workflowsShipped, scaled to ~2k applications/dayListed
06Marketing & Client Review PortalB2B marketing · Client review+40% client engagementListed