Delphi, AI Investment Research Analyst An AI analyst that reads overnight news across every clien...Delphi, AI Investment Research Analyst An AI analyst that reads overnight news across every clien...
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
Delphi, AI Investment Research Analyst An AI analyst that reads overnight news across every client portfolio and emails the advisor one brief before the US market opens. Role: Solo engineer. Design, build, deploy. Timeline: September 2026 Link: https://delphi-52lu5cezmq-uc.a.run.app The problem
A small wealth-management firm has two or three advisors and dozens of client portfolios between them. Every morning someone has to check what moved overnight, read the news on every holding, work out which portfolios are now out of line with their risk limits, and explain it to clients in plain English.
That job usually belongs to a junior analyst, and most of it is reading rather than judgment. So I built the analyst.
What it does
Every weekday at 7am Eastern, before the market opens, Delphi values every portfolio, computes the risk figures, reads 24 hours of news on every holding, and emails the advisor one brief covering the whole book. During market hours it watches for sharp price moves and explains the likely cause. In the dashboard an advisor can ask it questions, model trimming a position, and have it draft a client update.
It reports and explains. It never recommends a trade, because that is regulated investment advice and belongs to a licensed human. That boundary is enforced in the code, not just promised in a policy.
The decision that shaped everything
The engine computes, the model narrates. Every number you see, position weight, sector concentration, portfolio beta, guardrail breaches, is calculated in deterministic TypeScript before the AI is called, and handed to it as a fact to explain. The model never does arithmetic.
A language model produces plausible numbers, not correct ones, and in finance a confident wrong number is worse than no number, because someone acts on it. This was not theoretical: during development a draft client note stated a "25% guardrail limit of 20%", mixing up two figures that were each supplied correctly. I tightened the prompt and kept the human approval gate, because a better prompt lowers the failure rate, it does not remove it.
Built without a framework
The agent is a function-calling loop of about sixty lines written directly against the model SDK. The model proposes a tool call, my code validates the arguments and runs the tool, and the result goes back into the transcript. The model holds no credentials and never touches the network. Tools never throw: a bad argument comes back as structured data the model can read and recover from, which it did during testing.
One valuation per run
Portfolio weight was once calculated in two places and agreed by coincidence. Valuation now lives in one module, stamped with the moment it was computed, and every consumer reads from it. A single-client view has no firm-wide query at all, so under-reporting who holds a symbol is not a bug you can write.
It also remembers
After each brief and alert is sent, it is chunked, embedded and stored, so the chat can answer "what did we say about this stock last month" with dated citations. Answers are only indexed when a live-data tool actually succeeded, so failures never become part of what the system believes.
Stack
TypeScript throughout. React and Vite on the front with chat streaming over Server-Sent Events. NestJS on Node behind it. Firestore for state, modelled around access patterns rather than normalisation. Gemini for language and embeddings, Finnhub for market data, Brevo for email. One container on Cloud Run with scale-to-zero, and three Cloud Scheduler jobs. Tested with Vitest, using expected values worked out by hand rather than recorded from output.
Post image
Back to feed
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started