SOLO CLOSING TERMINAL • 4 SETUPS DAILY • LIVE TAPE ONLY • MATH DOES MATH

3PM Daily: Solo-Operated Closing Terminal — From ~800 Bars to 4 Setups

Active traders do not log off at the bell. Between 1:00 PM and 3:00 PM PT, institutional desks settle closing auction imbalances (MOC), after-hours earnings releases, and next-day rotation. 3PM Daily turns ~800 15-minute bars into 4 high-conviction setups by 3:00 PM PT. Heavy compute runs locally; Cloud Run + Redis deliver the debrief in under 3 minutes.

Project Meta
RoleSolo Product Designer & Systems Engineer
ScopeDiscovery → Systems → Shipped Production
MethodsWorkflow analysis, 11 interviews + v1 logs, 5 jobs mapping, desktop IA
PlatformNext.js 15, Python 3.12, TA-Lib C-bindings, LangGraph
~800
15-Min Bars
4.2s
~827 C-Scanned
4 Setups
Score ≥ +4 Ships
01 / DISCOVERY

The 3PM Gap: Wall Street's Afternoon Settlement Window

Wall Street does not shut down at 1:00 PM PT (4:00 PM ET). That is when institutional execution desks process Market-On-Close (MOC) prints, auction imbalances, after-hours earnings releases, and closing order flow. Retail traders log off at the bell or get buried in fragmented 4,000-word financial commentary hours late.

Two Non-Negotiable Mandates

“A) LIVE TAPE ONLY: If it appears, it's from live exchange tape. No placeholder prices. B) MATH DOES MATH: TA-Lib calculates stops and targets deterministically. LLMs provide context and debate. Never let an LLM hallucinate a price.”

Live Tape OnlyMath Does MathScore ≥ +4 Ships
The 120-Minute Settlement Window — 1:00 PM → 3:05 PM PT
Autonomous Market Close
✦
1:00 PM PT
1. Ingest Close
~800 15-min bars + MOC prints + ~4k Form 4 filings ingested into MySQL.
◑
2:00 PM PT
2. Compute Math
TA-Lib C-bindings scan ~827 names in 4.2s for 1x ATR stops and support/resistance.
✧
3:05 PM PT
3. Publish Setups
4 high-conviction setups meeting Confluence Score ≥ +4 staged in /admin and published.
Score ≥ +4 ships • No badge > fake badge
Problem: Monolithic dashboards cause cognitive collapse when 5 distinct user jobs fight for the same screen space.
Solution: 5 dedicated intent cockpits grounded strictly in live exchange tape.
5 Jobs-to-be-Done // Mapped to Time Budgets
PHASE 02 OF 06
Job // Time Budget
Core Intent & Dedicated Interface
1. Briefing Reader
5 min • Fatigued post-work
Demands 3 takeaways explaining market drivers without dense tables. → 260px Executive Dispatch + Macro Ribbon.
2. Tactical Hunter
15 min • Auction settlement
Requires actionable entry prices, calculated 1x ATR stops, targets, and paper execution. → Confluence Blotter (4 setups + Expand 98).
3. Rotator
10 min • Visual pattern seeker
Tracks capital rotation across 11 S&P sectors to detect institutional decoupling. → 8-col D3 Treemap + Sector Dispersion.
4. Catalyst Analyst
20 min • After-hours prep
Prepares for after-hours earnings and risk events via options straddles. → Catalyst Radar Calendar + 9-Agent Debate Drawer.
5. Operator (Me)
30 min • Production publisher
Publishes closing playbook in <30 min/day. Local compute, Cloud Run serve. Ships to web, Discord, X with $0 CAC. → /admin Console.
*Disclosure: Names are representative composites to illustrate user jobs, not research participants.
Tape Ingest: ~800 Bars
Filings Ingest: ~4k Form 4s
C-Scan (4.2s): ~827 Names
Breadth View: ~240 Tiles
02 / RESEARCH

5 Jobs, Not 5 Behavioral Archetypes

Designing a monolithic dashboard for an abstract “retail trader” caused immediate cognitive overload. 11 field interviews plus v1 system telemetry confirmed that trader intent splits during the afternoon close by available time budget and mental fatigue:

Method
Workflow analysis + 11 trader sessions + v1 system telemetry across 5 distinct time budgets.
Key Insight
Synthetic Pricing Collapses Trust: Traders reject placeholder mock numbers as gimmicks. If a single price is hallucinated, credibility drops to zero. Live exchange tape only.
Decision
Architected 5 dedicated intent cockpits. Connected UI directly to production MySQL via Cloud Run with zero synthetic pricing.
Down-to-Earth Reality

Whether managing operational data, budgets, or exchange tape: people do their best work when tools show clean, unvarnished data instead of guesses.

03 / SYSTEMS

Math Does Math, LLMs Do Context: The 4-Artifact Pipeline

To ensure zero hallucination, the system enforces a strict division of responsibility: Math does math, LLMs do context. TA-Lib runs compiled C-bindings over NumPy arrays to calculate support/resistance, VWAP reclaims, and 1x ATR stops deterministically. LLMs never touch price calculations — they only synthesize context and debate narrative.

What is TA-Lib?

Technical Analysis Library — a 30-year industry-standard C-library. Unlike generative models, it is purely deterministic. If the mathematical criteria aren't met on verified tape, it returns null. No badge > fake badge.

4-Artifact Production Pipeline
TA-Lib C-Bindings in 4.2s • LangGraph DAG
ARTIFACT 01
Ingest Close
price_history_15m
~800 15-min bars, MOC prints, and ~4k Form 4 filings into MySQL.
→
ARTIFACT 02 & 03
Calculate & Filter
TA-Lib + LangGraph
TA-Lib scans ~827 symbols in 4.2s. 9 agents debate fundamental risk.
→
ARTIFACT 04
Publish at 3PM
Cloud Run + Redis
Staged in /admin, served via Cloud Run to web, Discord, and X.
Backend → UI Contract TableNo table without a UI, no widget without a job
for_distribution
Terminal Order Blotter
Entry, 1x ATR stop loss, targets (Hunter)
blog_content
Executive Dispatch
Narrative wrap, 3 macro takeaways (Reader)
industry_leader_reports
Treemap & Dispersion
Sector tiles, ROIC/WACC capital flows (Rotator)
ai_debate_ledger
Consensus Drawer
9-agent debate breakdown & verdict (Analyst)
Guardrail:If mathematical criteria evaluate to null, the badge is suppressed. No badge > fake badge.
the3pmdaily.com • 12-Col (8/4 Split) • 0.00 CLS
5 Cockpits // Zero Clutter
[MACRO FIRST]
ACTIVE
[TACTICAL CONSOLE]
[SECTOR BREADTH]
[CATALYST/WAR ROOM]
[NEWSROOM/ADMIN]
Detected Levels
Score ≥ +4 ships1x ATR Risk BoundMOC Settlement
Closing Playbook // Confluence Setups
4 High-Conviction Setups • 1x ATR Stops
3 MIN • DETERMINISTIC
!
Level Flag — TA-Lib Grounded
Indicators agree with confluence score ≥ +4. Stops calculated via 1x ATR formula. No hallucinated prices permitted.
Stack
Next.js 15, TA-Lib, Cloud Run
Sources
price_history_15m + for_distribution
04 / IMPLEMENTATION

8 Widgets Taxonomy & 5 Cockpits

Modular UI Architecture
Each component maps to a verified user job with zero ornamental clutter:
DailyLeadStory.tsx260px Dispatch (Reader)
MacroRegimeBar.tsxMOC Tape Ribbon
TerminalOrderBlotter.tsx4 setups + Expand 98 (Hunter)
PaperTradingModal.tsx$100k Sandbox (PLG)
TreemapComponent.jsD3 8-col WCAG AA (Rotator)
SectorDispersionTable.tsxROIC / WACC Percentiles
EarningsCalendar.tsxStraddle Moves (Analyst)
WarRoomConclave.tsx9-Agent Debate Drawer
// Layout: 12-Col (8/4 Split) • 0.00 CLS
cockpit[0]: [MACRO FIRST] • 8-col Dispatch & Treemap // 4-col Movers
cockpit[1]: [TACTICAL CONSOLE] • Confluence Blotter & Paper Sandbox
cockpit[2]: [SECTOR BREADTH] • D3 Breadth Engine & ROIC/WACC
cockpit[3]: [CATALYST/WAR ROOM] • Earnings Radar & Consensus Drawer
cockpit[4]: [NEWSROOM/ADMIN] • Solo Operator Staging & Syndication
05 / AI LEVERAGE

LangGraph StateGraph DAG: 9 Bounded Investment Agents

Replaced speculative single-prompt cheerleading with a LangGraph StateGraph DAG coordinating 9 distinct investment-style perspectives: buffett, graham, lynch, soros, burry, wood, dalio, oneil, and simons.

1
Fundamental Moats & Net-Net
Buffett + Graham test ROIC > 15% and NCAV margin of safety.
2
GARP & Macro Reflexivity
Lynch + Soros evaluate PEG < 1.2 and macro liquidity impulse.
3
Balance Sheet Stress & Cycles
Burry + Dalio probe debt walls, inventory divergence, and credit cycles.
4
Growth, CAN SLIM & Quants
Wood + O'Neil + Simons test S-curves, volume breakout, and mean reversion.
Rule

Deterministic math computes prices; LLMs translate context and debate risk. If any indicator is null, the badge is suppressed. No badge > fake badge.

Boundary-First CI/CD Regression Gates (test_regression.py)
101/101 PASSED • 170ms
Foundation: TA-Lib C-Bindings • 50 Golden Payloads • 101 Assertions • 170ms Actual (<800ms SLA)
Guardrail — level_guard.tsmath calculates, LLMs translate
// Math calculates stops and targets deterministically
const levels = taLib.findConfluence(verifiedTape);
if (!levels) return null; // No badge > fake badge

// LangGraph StateGraph DAG: 9 agents debate fundamental context
const debateLedger = await langGraphDAG.invoke({
  symbols: levels.passedHurdle, // Score >= +4
  agents: ['buffett', 'graham', 'lynch', 'soros', 'burry', 'wood', 'dalio', 'oneil', 'simons'],
  tape: verifiedTape
});

// UI contract: Badge renders iff grounded in deterministic math
<LevelBadge visible={!!levels && levels.score >= 4} score={levels.score} />
Gate 1 & Gate 2 Validation
Pydantic Coercion (50/50): Strict type casting prevents NaN cascades. Null-Math Suppression (50/50): Missing indicators deterministically suppress client badges.
Gate 3 Latency Profile
170ms regression run across 50 golden market vectors, beating the <800ms CI/CD SLA threshold. Zero hallucinated price levels permitted in the distribution pipeline.
Outcome — Solo Unit Economics & Shipped Reality
Live • Real Receipts • Zero Vanity Metrics
~$18/mo
Total Infra Cost
Heavy compute runs locally; Cloud Run + Redis deliver cached setups globally.
>90%
Gross Margin
Local math offload avoids ongoing cloud GPU compute bills.
$100k
Sandbox PLG
Frictionless localStorage paper trading seamlessly syncs to Firestore on signup.
What Broke on Live Tape — Real Defects & Fixes
  • React 19 Re-render Loop: Async fetch inside client component resolved via useEffect lifecycle guards, sustaining 60fps.
  • Treemap Contrast Bleed: Evaluated dynamic tile luminance via getTileTextColor() switching text to slate (#0F172A) for WCAG AA.
  • 600px Viewport Dead Zone: Harmonized container min-height bounds across 8-col blotter and 4-col sidebar.
  • Stale State Hydration: Decoupled consensus payloads into on-demand drawers (sub-200ms hydrate) with Live / Settled / Stale badges.
Telemetry & Production Benchmarks
  • Privacy-First Telemetry: Tracking lens switch rate, blotter expand rate, and paper trade to signup conversion.
  • Performance Profile: 192ms TTFB via Next.js 15 Turbopack; 0.00 Cumulative Layout Shift (CLS) across all 5 cockpits.
  • $0 CAC Syndication: 1-click publishing pipeline from /admin stages and broadcasts to web, Discord, and automated X threads.
06 / OUTCOME

Solo Operator Reality, Not Vanity Metrics

I built this terminal as a production tool for my own close process and operate it daily. Deleted all vanity metrics. The real outcome is that a high-density financial terminal runs on live exchange tape, computes deterministic math locally, and serves globally for ~$18/month.

Design Architecture
8 modular widgets configured into 5 intent cockpits mapped to 5 discrete user time budgets (5–30 min). 0.00 CLS, zero ornamental clutter.
Technical Pipeline
~800 15-min bars, ~4k Form 4 filings, ~827 tickers scanned via TA-Lib in 4.2s. Live exchange tape only.
AI & Validation
LangGraph StateGraph DAG coordinating 9 investment-style agents. 101 assertions across 50 golden vectors passing in 170ms in CI/CD.
What I'd Measure at Disney
As a designer/developer hybrid, I care about whether tools actually make life easier for people. In DEEP&T Business Operations, I'd bridge human intent with engineering telemetry across three metrics: 1) Resolution Velocity (Time Saved): Tracking P90 session duration to decision, measuring whether a busy operator gets an accurate operational read in <3 minutes instead of digging through 10 browser tabs. 2) Source-Grounding Invariants (Real Trust): Monitoring user re-prompt and retry rates (which signal lack of trust), enforcing 0% unverified citations, and verifying strict Pydantic null-suppression so no hallucinated figures reach leadership. and 3) Bypass Rate & Daily Adoption: Measuring whether colleagues actively choose the conversational interface vs. bypassing it for manual spreadsheets, paired with qualitative feedback on whether role-based cockpits match their real daily time budgets. Good software should be simple, reliable, and respectful of people's time.
© Don Martirez — 3PM Daily Case Study • Solo Closing Terminal • #FAF9F6 / #141413 • #FF4D23