- Schwab reality is clean: no conflicting open order, no duplicate/oversized position, and enough cash/room for the position.
- The market condition supports taking new risk.
- Leaderboard or another trusted discovery source explains why Charlie is watching the ticker.
Helm setup
Charlie repair console.
This page is Charlie's source-control board: what he can use, what he is fixing, and what needs Will or Mike. It should never expose passwords, account numbers, balances, or tokens.
Back to TodayWhat this page is for
Charlie should diagnose before Dad has to.
Mike should only see plain next steps. The deeper source evidence stays here so Charlie, Codex, and Voss can see exactly which connector, browser session, worker, or article feed needs repair.
Decision policy
When Charlie changes his mind
Charlie should only interrupt Mike when new evidence changes the action: buy, add, sell, set a stop, hold, watch, or do nothing. This lives in Setup so Today can stay focused on Mike's next move.
- A holding appears to violate Mike's 8% sell discipline against cost or the active stop line.
- Schwab shows a rejected, stale, or missing protective order that changes the real account risk.
- Market condition, research, or market-data evidence changes from supportive to broken, distribution-heavy, or no longer supportive.
- The evidence is supportive but the position is already full-sized.
- The stock is worth watching but is not in the buy zone.
- Sources are fresh but not strong enough to justify new risk.
Evidence stack
What Charlie weighs before Mike acts
Charlie's order is simple: Schwab reality first, market condition second, Leaderboard discovery third, then Schwab/Morningstar research, market data, and stop planning as caution or confirmation. Traditional IBD member pages are fallback context.
Schwab holdings are loaded. Charlie checks positions, cash, stops, recent orders, rejected orders, and size before any buy/add.
Market condition is not fully clean yet. Charlie can watch and explain, but new buys wait.
Leaderboard is the preferred IBD discovery path, but the latest read is not fresh.
Schwab-hosted Morningstar, CFRA, Argus, LSEG, ratings, valuation, and quality checks now carry more of the confirmation/caution role beside IBD and market data.
Fallback/supporting IBD article path. Useful context, but it should not outrank Schwab reality, Leaderboard discovery, or active technical/research confirmation. Charlie treats this as fallback/supporting context.
Headline awareness only. Charlie can use this to decide what to read next, not to recommend a trade. Charlie treats this as fallback/supporting context.
Future fallback for IBD article/newsletter context once read-only email ingestion is connected.
Planned as the long-term business/story layer. Not a buy trigger.
Operator handoff
When Charlie gets stuck, he routes the work.
Charlie writes a private repair packet for Codex and Voss instead of leaving Mike with a repeated error. This is the live handoff trail for the latest repair request.
IBD article API source check needs attention: IBD WordPress API 403: {"appId":"PXs0IVY1Pq","jsClientSrc":"/s0IVY1Pq/init.js","firstPartyEnabled":true,"vid":"","uuid":"654d6e42-637d-11f1-9bed-05ad4cc959e7","hostUrl":"/s0IVY1Pq/xhr","blockScript":"/s0IVY1Pq/captcha/captcha.js?a=c&u=654d6e42. Market quotes source check needs attention: Yahoo quote provider returned HTTP 401.
Who Charlie asked
Codex + Voss
What happens next
Diagnose Helm source health, run safe source refresh/browser repair if appropriate, and update Charlie/Will with the result.
Human verification response
Charlie found a source wall
Charlie can self-diagnose IBD blocks, quarantine bad evidence, and resume after the page is readable. He should not try to bypass human-verification prompts.
IBD Big Cap 20 is showing human-verification or access-control copy. Charlie can diagnose this, stop using the bad source, and retry later, but he should not bypass it.
What Charlie does
Charlie quarantines that source, blocks source-dependent buy calls, keeps Schwab risk and stop-loss guidance active, logs a repair request, and retries after the browser is readable again.
Owner / next step
Will or Mike opens the Helm Browser, clears the verification normally, then Charlie reruns the source worker and resumes automatically when the page is readable.
Charlie diagnostics
What needs fixing next
These are the project-management items Charlie should act on or escalate. If something says ready here, Charlie can use it. If it says working or needs review, the next action should be visible.
IBD Big Cap 20 is showing human-verification or access-control copy. Charlie can diagnose this, stop using the bad source, and retry later, but he should not bypass it.
What Charlie should do
Charlie quarantines that source, blocks source-dependent buy calls, keeps Schwab risk and stop-loss guidance active, logs a repair request, and retries after the browser is readable again.
Owner / next step
Will or Mike opens the Helm Browser, clears the verification normally, then Charlie reruns the source worker and resumes automatically when the page is readable.
IBD Digital still needs setup before Charlie can fully trust recommendations.
What Charlie should do
Charlie should keep these gates in safe mode and trigger a repair refresh before every recommendation pass.
Owner / next step
IBD Big Cap 20: blocked
IBD Market Trend, IBD Big Picture, IBD growth lists still need member-page evidence. This is why base IBD can look green while IBD 50, Big Picture, and growth-list coverage are still incomplete.
What Charlie should do
Charlie should run the paced IBD member-content poll from the logged-in Helm Browser, cache readable pages, and stop immediately if IBD asks for human verification.
Owner / next step
Keep the dedicated IBD Helm Browser signed in. If a challenge appears, Will clears it once; Charlie reruns the safe member poll after the session is readable.
Run from here
No readable IBD article body is tied to Mike's holdings or candidate recommendations yet. Charlie can use headlines/watch context, but not article reasoning.
What Charlie should do
Charlie should read already-open IBD article tabs and attach any readable summaries to the relevant owned or watched tickers.
Owner / next step
Will/Mike: open one relevant IBD article in Helm Browser, or Codex: wire article candidates from Schwab holdings/watchlist.
Schwab Market Data Production is wired as Charlie's price, volume, moving-average, and benchmark check, but it needs a readable market-data run before it can contribute evidence.
What Charlie should do
Charlie can keep operating without this layer for now, but once connected he should use it to validate IBD and source candidates against price and volume instead of trusting scraped sources blindly.
Owner / next step
Run `npm run market-data:run`; if Schwab rejects the token, complete Schwab OAuth again.
Schwab
Connected
Schwab OAuth API sync is present with 14 positions.
Keep scheduled Schwab OAuth sync running before each digest.
- Client ID: Configured locally.
- Client secret: Configured locally; value is not exposed.
- Redirect URI: https://ocs-macbook-pro.tail8eb824.ts.net/api/auth/schwab/callback
- Account context: OAuth positions sync loaded from /Users/oc/.helm/schwab/positions.json.
Charlie model
Connected
Charlie chat is using gpt-5.5 through the separate local Codex OAuth route with Helm's deterministic grounding packet.
Keep Charlie's dedicated Codex OAuth profile healthy. If chat gets slow or unavailable, Helm will fall back to local rules.
- Provider: codex_oauth
- Model: gpt-5.5
- Codex binary: /Users/oc/.local/bin/codex
- Codex OAuth: OAuth profile is present at /Users/oc/.helm/codex-charlie/auth.json; no direct OpenAI API key is required for Charlie chat.
- Safety fallback: If the OAuth model route fails or times out, Charlie returns the local rules response.
IBD Digital
Needs page-read proof
IBD Digital has browser session files, but the latest authenticated page-read/source-worker proof has not passed.
IBD Big Cap 20: blocked
- Private profile folder: /Users/oc/.helm/browser-profiles/ibd
- Session cookies/profile data: Profile folder contains browser session data.
- Authenticated source proof: Source worker blocked: IBD Big Cap 20: blocked.
IBD Leaderboard
Unknown / needs verification
If Mike has Leaderboard, it is more actionable than IBD Live for model-portfolio adds, reductions, buy zones, and watchlist ideas.
Verify whether Mike's IBD subscription includes Leaderboard before adding it as an actionability input.
- Access status: Unknown / needs login verification.
- Recommendation role: Actionability support if connected, still checked against Mike's rules and Schwab position size.
Schwab market data
Configured, waiting on authorization
Schwab market data is configured, but the latest market-data run has not passed yet.
Run `npm run market-data:run` and inspect source-runs/market-data/latest.json if it still fails.
- Schwab OAuth token: Configured locally; value is not exposed.
- Latest API run: Not ready: Schwab OAuth token is not configured. Complete Schwab OAuth, then run `npm run market-data:run`.
Later sources
Not part of the current build.
These are useful ideas, but they should not appear as missing setup items while we are trying to get Charlie operational for Mike.
Future business-story layer. Helpful context, not a buy trigger.
Use Schwab-hosted Morningstar reports first. Do not require a separate login yet.
Future conservative safety/timeliness layer if Mike wants it later.
Future discussion context only. IBD 50 and Leaderboard matter more for actionability.
Future sentiment/context layer. It should rarely change Charlie's trade view.
Schwab OAuth + position sync
App settings detected
- Authorization endpoint is wired.
- Callback route is wired at `/api/auth/schwab/callback`.
- Tokens stay in private local storage with file permissions locked down.
- Schwab told us to use token-based OAuth, not Mike's username/password.
- Charlie refreshes positions through the Schwab sync before recommendations.
- Phase 1 remains read-only/manual; Charlie recommends, Mike executes.
Schwab fallback
Manual positions snapshot detected
This is Charlie's fallback account context. OAuth is now the preferred path, but a private local snapshot still helps Charlie keep the duplicate-buy and concentration guardrails alive if the API token ever needs repair.
Schwab browser verifier
Schwab website proof is available.
This belongs in Setup, not Performance. Charlie uses it only when Schwab's API and Mike's visible Schwab account disagree about stops, manual trades, balances, or order status. It is read-only and should never be shown to Mike as a normal portfolio task.
Still needs Charlie's reconciliation
VOO, NVDA, AMZN, GOOGL, WMB, BPTRX, SMH, WT still need stop evidence mapped from Schwab.com or from the API feed.
Charlie checks Schwab.com for manual buys, sells, order changes, and trailing stops. Read-only.
Last checked Jun 12, 5:05 AM.
Local browser launchers
Helm Browser
Helm uses a dedicated Chrome for Testing browser with its own private profile, extensions disabled, JavaScript on, and cookies enabled. The public Tailscale page can show this setup checklist, but browser launching stays localhost-only on this Mac.
Operator details for Codex/Voss
/Users/oc/projects/helm/scripts/open-helm-browser.sh/Users/oc/projects/helm/scripts/open-ibd-profile.shcurl -X POST http://localhost:3010/api/local/launch-browser -H 'content-type: application/json' -d '{"target":"ibd","debug":true}'Legacy scrape proof
Scrape proof needs work
This older proof is useful for debugging, but Charlie should trust the newer source-worker runs when they are fresher and readable. Cookie/session files alone are never enough.
IBD Digital home
Not readable yet
Last page title: Access to this page has been denied.
Charlie must not use this source for live recommendations until this proof passes.
IBD source worker
IBD route blocked
This is the fixed browser route Charlie will depend on: open IBD, verify readability, read the market pages, and store only structured evidence.
IBD 50
Readable
Last page title: Stock Lists - IBD 50 | Investor's Business Daily
Cached from readable IBD source run at 2026-06-12T19:02:12.485Z; reused to reduce browser navigation pressure.
IBD Leaderboard
Readable
Last page title: Leaderboard
Cached from readable IBD source run at 2026-06-12T19:02:12.485Z; reused to reduce browser navigation pressure.
IBD Big Cap 20
blocked
Last page title: Access to this page has been denied.
IBD displayed human-verification or anti-automation copy.
Helm Browser session watch
Session watch needs attention
This lightweight check tells us whether required browser sources stay logged in over time. It is how Helm learns the real auto-logout window without crawling too much.
IBD Digital
login required
Last title: Investor’s Business Daily | Stock News and Stock Market Analysis - IBD
Login appears expired. Re-authorize in Helm Browser and record the timeout window.
Market quotes source worker
Quotes readable
Quotes are separate from Schwab and IBD. Charlie needs them for current prices, benchmark comparisons, and "did this move today?" context.
SPY
State Street SPDR S&P 500 ETF T
741.06 · 0.45%
QQQ
Invesco QQQ Trust, Series 1
721.27 · 0.58%
DIA
State Street SPDR Dow Jones Ind
513.24 · 0.76%
IWM
iShares Russell 2000 Index Fund
293.32 · 1.00%
^GSPC
S&P 500
7423.21 · 0.39%
^IXIC
NASDAQ Composite
25861.60 · 0.20%
Independent market-data API
Market data waiting
This is Charlie's neutral data layer beside IBD and Schwab Research: daily price history, volume, moving averages, and benchmark-relative checks. It helps Charlie say whether a source idea is actually confirmed by price and volume.
Schwab Market Data Production is wired on the existing Helm Charlie app. Run `npm run market-data:run` after OAuth has a token with the new product access.
IBD article context
Ticker articles waiting
Charlie should read IBD articles tied to Mike's holdings and candidate recommendations, then show which article context influenced the decision. Helm stores capped snippets only, not full article pages.
Add `HELM_IBD_TICKERS=NVDA,TSLA` or `HELM_IBD_SYMBOLS_JSON` before running the worker. Later, this list should come automatically from Schwab holdings, candidate recommendations, and Mike's watchlist.