Episode
8

Can Public Make You a Better Investor?

Published on:
Aug 15, 2025
Listen on:

Sam Nadler (00:00):
Wanted to build a trading bot leveraging your API. I've got it in dark mode, light mode, and then my favorite mode: party mode. I love this.

Jordan Metzner (00:46):
And this week we have two special guests—Jake and Emily from product at Public. Please introduce yourselves, and then we’ll get into the tool we built using the Public API and some hot AI news.

Emily Kurtz (00:54):
Awesome. I'll get started. Thanks for having us. I'm Emily, Head of Product at Public, and I’ve been really responsible for all of our trading. So the API, which we'll talk about shortly, I can really speak to.

Jake Trefethen (01:07):
I'm Jake. Thanks for having us, Sam. I lead AI at Public—everything related to generative AI throughout the app. Excited to get started.

Sam Nadler (01:14):
Great. Jordan, like every week, let’s highlight the tool we built. This week’s tool uses the Public API. Walk us through your thinking before the build, what it does, and how you built it. And Emily and Jake can jump in with feedback or thoughts on how we did.

Jordan Metzner (01:30):
Cool. So quick background—I’m no expert stock trader. My experience is mostly personal investing, not day trading. But I think that makes it even cooler how easy it was to use the Public API to get an app working. It only took a few days to get everything up and running.

Jordan Metzner (02:00):
Emily, can you give folks a quick overview of what Public is?

Emily Kurtz (02:02):
Sure. Public is a brokerage for people who invest and take it seriously. We offer a full suite of asset classes—stocks, bonds, treasuries, options, crypto—as well as unique yield products like Bond Account and Treasury Ladder. You can open brokerage accounts, Roth IRAs, IRAs, and more.

Jordan Metzner (02:23):
And the API?

Emily Kurtz (02:24):
We recently launched our API. Think of it as a fourth front end—for people who don’t want to use our UI but want execution capabilities and programmatic access to their accounts. We started with trading—equities, options—and are continuously expanding into crypto, bonds, money movement. We're also adding features like WebSockets, MCP, Python SDKs, and more.

Jordan Metzner (02:51):
Awesome. So I didn’t have a grand plan—I just wanted to build a trading bot with your API. Here’s what I came up with.

Jordan Metzner (03:00):
The bot uses the Public API plus ChatGPT. I built everything in Replit. Total build time: maybe 3 to 6 hours. I vibe-coded the whole thing. I mostly pulled from your documentation or copied from examples. Here’s how it works:

It reads the price of a stock—IBIT in this case (the Bitcoin ETF)—and sends that price, along with my portfolio balance and risk profile, to ChatGPT. ChatGPT decides whether to buy or sell. Every 30 seconds it sends a new decision, factoring in stop loss, max position size, and aggression level.

Jordan Metzner (04:00):
It runs live—making trades using the API and logging them in a dashboard. I turned it off before recording, but earlier it was buying and selling like crazy. After 4 trades, I lost 11 cents. I built it with dark mode, light mode, and my favorite—party mode.

Emily Kurtz (04:30):
I love this. And it seems like you’re pulling in data from other APIs too—like pricing or analytics?

Jordan Metzner (04:36):
Yeah, for pricing I used Polygon because I didn’t want to hit rate limits. I fall back to Public if Polygon fails. I use ChatGPT APIs throughout and created a prompt that tells it about my portfolio, risk level, share count, etc. Since it's only one stock, it's simple—but in theory you could scale it across multiple stocks with parallel bots.

Emily Kurtz (05:30):
Just saying it out loud—this is not investment advice. But it’s a great demo for how triggers and automation could work.

Jordan Metzner (05:35):
Absolutely not investment advice. But it could inform traders—like “hey, this might be a good entry or exit.” That’s the real takeaway.

Emily Kurtz (05:45):
Exactly. A lot of customers are already doing trigger-based trading—price hits, percent changes, economic events. So this is very relevant.

Jake Trefethen (05:55):
What about WebSockets? If we gave you streaming price or order updates?

Jordan Metzner (06:00):
Would be amazing. It would eliminate the need for polling and smooth everything out. Also—question for Jake: Is ChatGPT even the best model for this? Would Claude or Gemini be better for financial reasoning? Might be fun to do a consensus system across multiple LLMs.

Jake Trefethen (06:20):
Multimodal could be interesting too—like sending in price charts instead of just data. Models are getting pretty good at reading visual indicators now.

Jordan Metzner (06:30):
Yeah, true. I hadn’t tried multimodal here. But you’re right—especially with big context windows like Claude’s 1 million tokens. You could send tons of history.

Jake Trefethen (06:50):
Exactly. Even JSON history helps. Models struggle with time frames—so the more context the better.

Jordan Metzner (07:00):
Totally. And you don’t want to trade too fast. Every trade has opportunity cost. If I had more time, I’d build a proper backend, maybe host on Supabase, do some cron jobs. I also didn’t account for market hours—turns out the market closes on holidays. Who knew?

Emily Kurtz (07:20):
Yeah, asset classes have different market hours too. Bond market hours are different from equities. Deposits behave differently on holidays. A market hours API would be great.

Jordan Metzner (07:32):
Didn’t realize you could trade after-hours either. That would’ve helped. But I think overall I did okay. Started with $300. Ended at $299.

Sam Nadler (07:42):
Break-even after 20 trades isn’t bad. Especially with zero experience. Great job, Jordan.

Sam Nadler (07:50):
Jake, tell us more about Public’s broader AI approach?

Jake Trefethen (07:52):
Sure. Public is the home for modern investors. Between robo-advisors and self-directed brokerages, there’s a gap. Sophisticated investors want hybrid control—some autonomy, some help. We aim to fill that.

We launched Alpha (our AI research bot) shortly after ChatGPT. Then built 6–7 more AI features: event summaries, earnings breakdowns, folio construction, portfolio explanations. We’re identifying where gen AI can truly unlock value.

Jake Trefethen (08:30):
Summarization is huge—there’s so much unstructured financial content. Helping investors get signal out of noise is key.

We’re also focused on portfolio construction, discovery, and eventually generated assets—custom indexes built via natural language. Think “I want to invest in GLP-1s” or “build me an anti-terror hedge.” AI helps us build these fast and scalably.

Emily Kurtz (09:00):
And we want to expand these across account types—trusts, IRAs, etc. Not just tools for hobbyists. Long-term wealth creation with better UX than the traditional brokerage model.

Jordan Metzner (09:20):
Let’s shift to AI news. ChatGPT-5 launched the same day we recorded last week. It's been… controversial.

Sam Nadler (09:26):
Yeah. For me, it’s been frustrating. The router sometimes defaults to quick answers when I want deep thinking. It used to be easier when we could just pick the model manually.

Jake Trefethen (09:40):
Same. I've been split-testing everything. I think OpenAI was too early in removing manual model selection. And people miss GPT-4's personality.

Emily Kurtz (09:52):
Yeah, it might save them compute cost, but the product isn’t robust enough for that shift yet.

Jordan Metzner (10:00):
People waited so long for GPT-5, they expected AGI. This wasn’t that. It didn’t beat Claude in coding. So, back to work.

Jordan Metzner (10:12):
One last story—Shopify now requires PM candidates to “vibe code” during interviews. What do you all think?

Jordan Metzner (10:18):
To me it’s a no-brainer. Just like asking engineers to use AI tools is expected now. It’s like asking someone to do math without a calculator.

Emily Kurtz (10:28):
Totally. Every exec I know is asking “how can we use AI more efficiently?” Prototyping is table stakes for PMs now.

Jake Trefethen (10:36):
I think it’s valuable—especially for fast iteration and understanding feasibility. Maybe not for production code, but definitely for speeding up design cycles.

Emily Kurtz (10:48):
Right, for a brokerage like us, you wouldn’t deploy vibe code to production for things like withdrawals. But for internal tools or Slack integrations—totally fine.

Sam Nadler (11:00):
I’m not a PM, but I vibe coded this trading bot in a few hours. So I'm not sure it’s the strongest hiring signal—but it's definitely useful.

Emily Kurtz (11:08):
Exactly. It’s not the only thing that matters. PMs also need to manage stakeholders, prioritize, and align the team. But if you’ve never tried to build something yourself with AI, I’d question your curiosity.

Jordan Metzner (11:20):
Well said. I had fun building the public trading bot. Learned a lot about markets and how AI can be layered into finance. Thanks again to Emily and Jake for joining us and for giving us access to the API.

Sam Nadler (11:34):
Great episode. Don’t forget to subscribe and hit the bell. Thanks everyone!

Jake Trefethen (11:38):
Thanks, guys.

Emily Kurtz (11:39):
Thanks everyone.

Hosted by
Sam
Hosted by
Jordan

More podcast

Dusk dec
Episode
7
How Daily Check-Ins Fix Remote Work
By
Jordan
Sam
Count icon
23 min