Jeffery Vincent  /  Virginia Beach, VA

I build AI agents that don't get the last word.

Staff mobile engineer, ten years in. React Native, TypeScript, Python, LLMs. Lately I build trading agents that reason on local hardware — and answer to deterministic code they can't argue with.

Decisions worth writing down

The trading agent that doesn't get the last word

The easy path
Let the model decide. Prompt it to be careful and hope the prompt holds.
What shipped
An LLM committee debates a trade and a judge model returns a verdict — then that verdict hits a deterministic rules gate that can overrule it and can't be argued with. The autonomous mode is real, but it acts inside a fence of portfolio circuit breakers and a daily-loss kill switch that latches until cleared by hand. Exits are never blocked. Every place a model touches money, non-probabilistic code gets the final say.

Read the writeup  ·  Python · FastAPI · Ollama · Alpaca

One exit rule, two lifetimes

The easy path
Write exit logic for the backtest, then write it again for live positions. Two implementations, quietly drifting apart.
What shipped
A single exit code path shared by backtests and live bracket management. Change a stop level and both move together, because there is no second implementation to drift. It's the difference between a backtest that's evidence and a backtest that's a story.

Python · walk-forward validation · Massive · Alpaca

One entitlement model, three billing systems

The easy path
Handle StoreKit, Play Billing, and Stripe where each one shows up in the app.
What shipped
A single source of truth for what a user is entitled to, with the three billing systems reduced to adapters feeding it. Restore, refund, and cross-platform purchase stopped being three separate bug surfaces.

React Native · StoreKit · Play Billing · Stripe

Now

Mobile engineering at Upward Sports, on Upward Run Club. Building trading agents on the side, and writing about what closed trades reveal that open ones can't.

Open to Staff and Principal mobile roles.