Skip to content
← Work

Nava

Describe a trade, price alert, or recurring rule in plain English; an LLM pipeline turns it into a structured order executed against a live brokerage.

Year
2026
Stack
Django REST · PostgreSQL · Redis · Celery · React Native · Expo
Links
Private

~440

Automated tests

9

External integrations

The problem

Trading interfaces demand structured input — ticker, side, quantity, order type — while people think in sentences. The translation layer is genuinely useful, and it is also the most dangerous thing you can build, because the output spends real money.

The hard problem was never the parsing. It was making an LLM-driven path safe enough that a misread sentence, a stale quote, or a compromised social account can't cost a user money.

Approach

Users describe intent from an iOS client; an LLM pipeline parses it into a typed, structured order that executes against a live brokerage API. Django REST and PostgreSQL on the backend, React Native/Expo on the client — roughly 31,500 lines across nine third-party integrations, taken from an empty repo to App Store submission-ready in two months.

Every safety guarantee is enforced at the execution boundary rather than in the interface, so no transport can route around it.

Architecture

  1. 01Plain English

    User describes a trade, alert, or recurring rule from the iOS client

  2. 02LLM parse

    Intent is resolved into a typed, structured order

  3. 03Confirm

    Live re-quote; execution refused on a price move over 1%

  4. 04Fire

    One shared firing function that every transport must go through

  5. 05Settle

    Celery workers handle alert evaluation and notification fan-out

Features

Natural-language trading

Describe a trade, price alert, or recurring rule in plain English — the LLM pipeline resolves it into a structured order.

Price-safety confirmation

Every order re-quotes the live price before it executes and refuses to fill on a move over 1%.

Verified DM execution

Orders placed over DM require a one-time code sent to a separately verified phone before they can fire.

Live market data

A stale-while-revalidate cache keeps quotes fresh without cold-fetch latency on the user's path.

NextFrontline