Josh Cannon
Back to projects

Folio Brief

Folio Brief is a weekly AI-written portfolio brief — connect Plaid, get a Friday-close email summarizing your holdings against the S&P 500 and NASDAQ.

Founder & Sole Engineer

2026

ViteReactTypeScriptTailwind v4Neon PostgresPlaid (Investments)Yahoo FinanceResendVercel

Investors check their portfolios obsessively but rarely sit with a structured weekly view. Brokerage dashboards optimize for trading, not reflection.

I built a multi-tenant weekly sender: Plaid Investments pulls live holdings, Yahoo Finance fills in quote data, an HTML email composes the week's percent change against benchmark indices, and Resend delivers every Friday at market close.

Live production since April 2026 — automated weekly send via launchd cron, zero missed sends. Single-operator infrastructure designed to scale without re-architecture.

Problem

Investors check their portfolios obsessively but rarely sit with a structured weekly view. Brokerage dashboards optimize for trading, not reflection. The week passes, the chart blurs, and there's no compiled artifact to look back on.

Build

  • Vite + React + Tailwind v4 signup site at folio-brief.vercel.app — Plaid Link flow, holdings preview, email confirmation.
  • Neon Postgres schema: subscribers, subscriber_holdings, brief_sends. Plaid access tokens persisted server-side, scope locked to investments (read-only).
  • Multi-tenant sender (send.mjs) loops active subscribers, batches Yahoo Finance quotes for distinct tickers, composes per-subscriber HTML, and delivers via Resend.
  • Friday 4pm ET cadence: launchd plist runs the send pipeline at market close so the brief captures the full trading week.
  • DRY_RUN-first design: every run defaults to no-send unless DRY_RUN=false is set per send. All sends written to brief_sends for full auditability.

Technical Signal

  • Production multi-tenant SaaS shape — not a static demo, not a one-tenant prototype. Real subscribers, real cron, real money-adjacent data flowing through.
  • Plaid integration designed for trust: read-only scope, sandbox-by-default, no trade-execution capability anywhere in the system.
  • Single-binary scheduling: no Airflow, no managed cron, no Vercel cron. Just launchd and a versioned .mjs script — recoverable, observable, cheap.
  • Email composition is plain HTML with structured ticker tables — readable in any client, no marketing-template framework.

Current State

Sending every Friday at market close since April 2026. Pipeline runs on Josh's laptop via launchd. Plaid is in sandbox mode for now; production flip requires explicit per-send authorization. Subscriber base is intentionally small while the brief format settles.

Why It Matters

Personal infrastructure that compounds. Folio Brief is the smallest interesting shape of a real product: a backend that runs on a schedule, talks to two external APIs, persists state, and delivers a useful artifact to a recipient every week without manual intervention. The same architecture extends to any "weekly digest" product — sports, news, fitness, learning.