Answer
The numbers that say whether Brew is growing, from a visit to a brand handing off work every week and what each brand costs; almost none are counted today, no targets exist, and Param must pick the few we count first.
Today
What can be counted now
| Record | What it holds | Source |
|---|---|---|
| Who started each read | private/created.json: the email and the time, per brand |
brew/build.js:236 |
| Visitors log since 23 Oct | Every signed in email that opens a brand, with its access kind; nothing earlier | memory brew-access-rules |
| Sessions and an access log table on production | Sign ins on feed.joinsquareup.com | memory brew-prod-backend |
| Briefs sent to our team | Each status step with its time and who moved it | brew/brief-status.js:1-6 |
| Briefs shared with the brand's own team | Copied, never sent, so no record that counts them | brew/brief-status.js:6 |
| Monday digest | When it went and to how many | brew/digest.js:192 |
| Plays ready emails | One sent key per email and kind | brew/build.js:1009 |
| Spend per brand and month | Outside data and model spend files | brew/treg.js:119 handbook content/ai-and-models/cost-per-brand.md |
What cannot be counted now
| Gap | Source |
|---|---|
| Visits to the landing, the demo or the docs: no analytics on our own pages | brew/public/index.html:1-2 git grep gtag googletagmanager fbq origin/main |
| Hearts, makes and hand offs as events in one log: no usage analytics | handbook content/product/product-metrics.md |
| Read asks that come by DM or email: no shared list | no source found in memory or brew origin/main |
| Any target for any metric | brand-directions/book/content/j.js j-1 what-we-count |
The only firm count today is five design partners on production memory brew-live-stores.
Tomorrow
Proposed for Param, from the old book's funnel and the product metrics.
| Metric | Version | Tag | Definition |
|---|---|---|---|
| Visits | v1 | New | People who open the landing or the ask page, per week |
| Read asks | v1 | New | Store links sent to us, from any channel, per week |
| Sign ins | v1 | New | Work emails accepted; refusals counted apart |
| Reads started | v1 | New | New brands with a starter, per week |
| Reads finished | v1 | New | Reads that end with every step done |
| Activation | v1 | New | A new brand that hearts one, makes one and hands off one in its first week |
| Weekly hand off stores | v1 | New | Stores where anyone hands off a pick in a Monday to Sunday week; the north star in product metrics |
| Second Monday | v1 | New | Share of new brands that open Today again the next Monday |
| Cost per brand | v1 | New | Model and data dollars per brand per month, from cost per brand |
| Cost per new brand | v1 | New | Campaign spend plus read cost, divided by activated brands |
| Approved posts | v2 | New | Share of hand offs that become a scheduled post |
| Measured share | v3 | New | Share of shipped picks with a result |
| Paying brands | v1 | New, once pricing is set | Brands on a paid plan |
Rules: these numbers stay inside the team; progress shown to a founder is about what they did, never their sales brand-directions/book/content/j.js j-1 what-we-count.
How we do it
Proposed, until Param decides:
- Count every Friday, by hand until analytics exist, and write the week's row below.
- Sign ins: open the visitors log as staff at
GET /api/admin/visitorson feed.joinsquareup.com, and count new official emails this week memory brew-access-rules. - Reads started: count brands whose
private/created.jsonis dated this week. Production stores these as rows in Cloud SQL, so ask an engineer for a read only query; never write to production to count. - Briefs sent to our team: read each brand's brief statuses from the ops view.
- Never count test brands, Cozy Snugglet and Zenant, or our own staff emails.
| Week | Visits | Read asks | Reads started | First hand offs | Weekly hand off stores | Notes |
|---|---|---|---|---|---|---|
| First row once Param picks the metrics |
Numbers
This document owns every metric in Tomorrow. All are Proposed. None has a target, and none should get one until four weeks of counts exist.
Open
- Which three do we count first? Proposal: read asks, reads started and weekly hand off stores.
- Do we add analytics to the landing and the ask page? Proposal: yes, one GA4 property with four events: ask, sign in, read started, first hand off; no ad pixel until paid is decided.
- Do team hand offs count? Proposal: yes; log a quiet event when Share with my team copies a brief, so both hand offs count the same.
- Who counts on Friday? Proposal: Param, until a dashboard exists.
- When do targets come? Proposal: after four weeks of counts, Param sets one target for weekly hand off stores only.