Flows

How myjunto fits together

A map of the objects, the onboarding path, how a dispatch is generated, and how it reaches you. For prose explanations, see the docs.

01 · Object model

The pieces

Every dispatch is a tuple: a Junto (who to listen to), a Watchlist (what to watch), and a prompt (what to ask). A Subscription connects a User to a Dispatch via one or more channels. Positions are a derived view across sources and tickers.

Users · Juntos · Watchlists · Dispatches · Runs · Positions

Usersigns in via X / GoogleJuntocurated source setWatchlisttickers to trackDispatchprompt + scheduleSubscriptionuser ↔ dispatch + channelsSourcesX handles, RSS, sitesTickerssymbolsRungenerated brief + audioPositionsaggregated stances per ticker, across sourcesDeliveryEmail · Telegram · Podcast · On-siteownsownscreatessubscribescontainscontainsproducesreadsfans outstances

02 · Onboarding

From sign-in to first send

Every new user gets a personal Junto, a personal Watchlist, and a personal Dispatch pre-wired with the Investment Brief template. The first send lands at the next active window.

Onboarding flow

Sign inX or GooglePick junto modeown follows · list · public · manualSeed watchlistcomma-sep tickersPick channelsEmail · TG · PodcastJunto created${handle}'s Junto by defaultWatchlist created${handle}'s WatchlistPersonal Dispatch createdInvestment Brief templateFirst send queued at next window6 AM · 12 PM · 6 PM · 12 AM Pacific

03 · Dispatch generation

How a Run is built

Source content refreshes every 6 hours. At each send window the dispatch gathers fresh content, the user's watchlist, and its prompt, then hands it to Grok. Voice dispatches also get a Haiku-written audio script rendered by ElevenLabs.

Refresh + synthesis + render

Refresh cronevery 6 hoursPull source contentX / RSS / sites → DBStore contentcontent_twitter, content_*Send window cron4× daily PacificGather inputsfresh content + watchlist + promptGrok synthesisgrok-3-fastAudio script (optional)Claude Haiku 4.5Render audioElevenLabs → mp3if voiceRun row written, fan out to subscriberstextaudio_url

04 · Consumption

One Run, many channels

A Run is generated once per dispatch per window and reused across every subscriber. Each subscription decides which channels it wants — email, Telegram (text + voice), private podcast feed, on-site, or all of the above.

Delivery fan-out

Runone per dispatch per windowEmailResend · myjunto.xyzTelegramtext + voice memoPodcastuser-private RSSOn-site permalink/today, /d/[id]

Want the words behind the boxes?

The docs walk through each object, the schedule, pricing, and the synthesis layer in detail.

Read the docs