- Where
- Not in the sidebar; opened by address
- App route
app.newsletrix.com/overview-reports- Answers
- What did that period look like?
- Needs
- A report generated from the command line
- Updates
- Never; each snapshot is frozen
What this screen is
Every other analysis screen in Newsletrix recalculates when you open it. This one does not. It is the shelf where finished period reports are kept, one card per report, newest generated first. A report is created by the newsletter-overview command line tool, and once it is saved its numbers never change again, whatever happens to the underlying newsletters afterwards.
A card shows the report identifier, the window it covers, two status pills, four quick stats and the moment the snapshot was written. The stats are the number of analysed newsletters, the average estimated open rate, the average estimated click through rate and how many brands were covered.
A report carries more than that. The per brand breakdown, and on runs that asked for it a written competitive narrative, are part of what the command prints and never appear on the card.
Two words on the card need care. Estimated means exactly that: Newsletrix receives competitor newsletters as an ordinary subscriber, so it can never see another sender's real opens or clicks. Both rate tiles average the per email estimates that the AI analysis produced from the content of each newsletter. Period refers to when the newsletters were analysed, not when they were sent, so a newsletter that arrived a fortnight ago but was analysed on Tuesday belongs to Tuesday's window.
Read only here means completely read only. No button generates a report. There is no filter, no search and no export, and clicking a card does nothing. The archive tells you which reports exist and what their headline numbers were; the full text of a report is read from the output of the command that made it.
The screen has no sidebar entry, so you reach it by typing app.newsletrix.com/overview-reports while signed in. Any active account can open it.
Open it when
- You have just run a weekly or monthly roll up and want to confirm it saved, and which window it actually covers.
- You want to compare last month's average estimated open rate with the month before, using two saved snapshots rather than re-filtering a live chart.
- You need to know whether a given report carried AI commentary or is aggregation only, before you go looking for the narrative.
- You generated a report for a single brand and want to find it again among the general ones.
- You are assembling a client deck and want the numbers as they read on the day you reported them, not as they read today.
Screen anatomy
One column, top to bottom: the page header, then a stack of report cards. Every card has the same three bands, a header row, a row of four tiles, and a footer line. The numbers on the mock match the walk-through underneath it.
Overview Reports
Historical overview analysis reports with aggregations and insights
- Report card and title One card per saved report. The heading is the word Report, a hash sign and the report's 36 character identifier. A brand name in small type next to it means the report was generated for that brand alone, so every tile below it covers that brand only.
- Badge row Up to two pills, right aligned. The AI Analysis pill appears only when a written commentary came with the report. The status pill always appears and reports how the run ended.
- Total Newsletters How many analysed newsletters the rest of the card is built from. This is the sample size, and it is the first thing to read.
- Avg Est. Open Rate The mean of the per email open rate estimates in that window, shown to one decimal place, or N/A when no newsletter in the window carried an estimate.
- Avg Est. CTR The same calculation for click through rate estimates, again to one decimal place or N/A.
- Brands How many brand groups the report covers. A report generated for a single brand reads 1. Newsletters that could not be attributed to a brand form their own group and add one to this count.
- A second card, aggregation only No brand in the title means the run covered every brand. No AI Analysis pill means no commentary came with it, either because the run did not ask for one or because it never arrived.
- Page header The title Overview Reports with the line "Historical overview analysis reports with aggregations and insights". It is the reminder that everything below is historical, not live.
- Period line Under the title, the window as "start to end" in the Mon D, YYYY format. The time of day is dropped, so a seven day and an eight day window can print identically.
- Generated line The moment the snapshot was written, with date and time. The list is sorted by this line, newest first, which is not the same as the most recent period.
- Loading and empty states While the archive loads, a spinner replaces the list rather than overlaying it. With no saved report at all, a panel headed "No Overview Reports Yet" is meant to take the place of the stack, though in the current build it can fail to draw.
- No drill-down Cards change shadow when you hover them, which suggests they open. They do not. There is no report detail view in the app.
Every panel explained
The reports list
A vertical stack of cards, one per saved report, with the most recently generated at the top.
How it is calculated. The list shows the 50 most recently generated reports, newest first. There is no paging control, so report 51 and older simply do not appear. Nothing narrows the list. Not the brand you are looking at, not the group label attached to a tracking address, not the workspace selector at the top of the app. Switching workspace leaves this list exactly as it was.
How to read it. As a filing cabinet ordered by filing date. Top of the stack means most recently made, so a report generated this morning for a window in June sits above one generated last week for August.
This list is not yours alone. Every report generated against the installation you sign in to shows up here, whoever ran it. If you generate reports for several clients from the same installation, limit each run to one brand so the cards stay tellable apart, and treat the archive as a shared shelf.
Report title and brand
The card heading is the word Report, a hash sign, the report's identifier and sometimes a brand name.
How it is calculated. The identifier is a 36 character unique string, not a sequence number, which is why the heading is long. The brand in small type is whatever brand the run was limited to, printed exactly as it was typed, and it is absent when the run covered every brand. A sending address filter, if one was used, leaves no mark on the card.
How to read it. The brand is the most important part of the heading. A card with a brand covers that brand alone, so its Total Newsletters and both rate tiles are one sender's numbers and are not comparable with a card that covers everything.
Period line
The window the report covers, written as "start to end".
How it is calculated. With no explicit dates, the end of the window is the moment the report was generated and the start is that moment minus the requested number of days, which defaults to 7. Give only a start and the end becomes now; give only an end and the start is that end minus the requested days. Both dates print as Mon D, YYYY with the time of day dropped, and the default window runs on UTC dates rather than your local ones.
How to read it. As an analysis window, not a sending window. Everything in the report is selected on when the newsletter was analysed by Newsletrix. If you subscribed to ten new brands on Monday and their back catalogue was analysed on Monday, all of it lands in Monday's window regardless of when those emails were originally sent.
AI Analysis pill
A pale blue pill reading "AI Analysis", present on some cards and absent on others.
How it is calculated. The pill appears when, and only when, a written commentary came with the report. Only a run that asked for commentary gets one. If the commentary never arrives the report is still saved, and the pill is simply absent.
How to read it. The pill confirms that a commentary exists and shows you none of it. A commentary is made up of a narrative summary, competitive insights, per brand recommendations, a competitive comparison and per newsletter labels. All of it is printed by the command that generated the report, and none of it is drawn on this screen.
Newsletters in the commentary carry a 0 to 100 score, built from four equally weighted parts worth 25 points each. The parts are design quality, content relevance, call to action effectiveness and overall engagement potential. Letter grades are relative to the set analysed. A is the top 20 percent, B the top 40 percent, C the middle 40 percent, D the bottom 20 percent, F the bottom 5 percent. Click probability is banded 0 to 20 very poor, 20 to 40 below average, 40 to 60 average, 60 to 80 good and 80 to 100 excellent. The narrative itself stays under 500 words.
Status pill
A small pill showing how the run ended, green when it reads success.
How it is calculated. Every saved report reads success. A run that finds no newsletters saves nothing, so it leaves no card behind and no failing status ever reaches this list.
How to read it. In practice every card reads success, so the pill confirms a report exists rather than that it is complete.
A run whose commentary never arrived is still saved as success, with the AI Analysis pill simply missing. Use the pill, not the status, to tell whether the narrative made it.
Total Newsletters
The number of analysed newsletters inside the report window.
How it is calculated. A count of the newsletters that were both collected and analysed in the window, one per email, after any brand, sender or account filter the run used. A newsletter that arrived but was never analysed does not count, and the same message twice counts once.
How to read it. As the sample size for the whole card. Everything else on the card is an average or a count over these newsletters, so a card built on 6 newsletters deserves far less confidence than one built on 200.
Avg Est. Open Rate
The average of the estimated open rates of the newsletters in the window.
How it is calculated. Each analysed newsletter gets an estimated open rate from the AI analysis of its content. The tile is a plain unweighted mean of every estimate in the window, and a newsletter with no estimate leaves the average entirely. With no estimate anywhere in the window the tile reads N/A. The value prints to one decimal place.
How to read it. As a content quality signal for a set of emails. Newsletrix reads the subject line and preview of each newsletter and judges how openable they look. That judgement is worth something against another period, or against another brand judged the same way. It is worth nothing as inbox truth.
Newsletrix subscribes to competitor newsletters like any other reader, so it has no access to their opens. Every estimate is shown with its own caveat, something on the order of "estimate based on benchmark". The average is unweighted too, so one unusual email in a small window moves the tile a long way, and two cards can average different subsets of their own newsletters depending on how many estimates were produced.
Avg Est. CTR
The average of the estimated click through rates of the newsletters in the window.
How it is calculated. The same way as the open rate tile, on the estimated click through rate of each newsletter. Mean of every estimate in the window, N/A when there is none, shown to one decimal place. It is a different number from the click probability score in the AI commentary, and the two can disagree.
How to read it. As a reading of how click worthy the offers and calls to action were across the period. A period where this tile falls while Total Newsletters rises is usually a brand sending more and asking for less.
Brands
How many brands the report covers.
How it is calculated. Every newsletter in the window is put into a group by its brand, and the tile counts the groups. Newsletters whose brand could not be identified go into one group labelled Unknown, and that group is counted like any other.
How to read it. As the breadth of the report. A card with a brand in its title reading 1 is expected. A card reading one more than the number of brands you track usually means an Unknown group is present, which is worth fixing at the source rather than ignoring.
Generated line
The date and time the snapshot was written, at the bottom of each card.
How it is calculated. Stamped automatically at the moment the report is saved. The list is sorted by this value, newest first.
How to read it. Together with the period line, never instead of it. Generation time and covered period are independent: a report generated today can cover a window from last quarter if explicit dates were used.
Empty state
With no saved report, the stack is replaced by a single panel that tells you how to make one.
How it is calculated. Fixed copy, shown whenever no report has been saved. It never varies with your data.
How to read it. Nothing in the web app creates a report, so an empty archive means the generator has not been run yet against this installation. In the current build this panel may not draw at all, in which case an empty archive looks like a page with only its header.
Overview Reports
Historical overview analysis reports with aggregations and insights
Metric definitions
| Metric | What it means | How it is produced | Scale |
|---|---|---|---|
| Total Newsletters | Analysed newsletters inside the report window | Count of emails both collected and analysed in the window, one per message, after any brand, sender or account filter; unanalysed emails excluded | Whole number, 0 and up |
| Avg Est. Open Rate | Mean of the AI estimated open rates for those newsletters | Unweighted mean of every available estimate, with missing values dropped from the average; N/A when none exists | Percent, one decimal on screen |
| Avg Est. CTR | Mean of the AI estimated click through rates | Same calculation as the open rate tile, on the estimated click rate of each newsletter | Percent, one decimal on screen |
| Brands | Number of brand groups covered | Newsletters grouped by brand, groups counted; unattributed newsletters form one group named Unknown that counts as a brand | Whole number, 1 and up when data exists |
| Report period | The window the report covers | Fixed at generation. With no explicit dates, the end is the generation moment and the start is that minus the requested days, which defaults to 7; selected on when each newsletter was analysed | Two dates, Mon D, YYYY |
| Status | How the run ended | Every saved report reads success; a run that finds no newsletters saves nothing at all | Text pill, green on success |
| AI Analysis | Whether a written commentary is attached | Present when the run asked for AI commentary and the commentary arrived; absent otherwise | Present or absent |
| Generated | When the snapshot was written | Stamped automatically when the report is saved; the list is ordered by it | Date and time |
Filters and controls
| Control | What it does | Default |
|---|---|---|
| In-screen filters | None. There is no date picker, brand selector, search box, sort control or paging | Not available |
| Card click | Cards hover as if they open a detail view. They do not; no report detail screen exists | No drill-down |
| List length | The archive shows the 50 most recently generated reports. Older ones drop off silently | 50 reports |
| Workspace selector | The global group selector does not scope this screen. Switching it returns the same list | Ignored here |
| Window length (generation) | --days sets how many days back the window reaches; --since and --until set the ends explicitly | --days 7 |
| Scope (generation) | --brand limits the report to one brand, --sender to one sending address, --user or --user-id to one account's newsletters | Everything |
| AI commentary (generation) | --llm adds the written narrative and, when it succeeds, the AI Analysis pill | Off |
| AI sample size (generation) | --max-newsletters caps how many newsletters the AI commentary is written from | 50 newsletters |
| Output format (generation) | --output markdown or --output json controls what the command prints to the screen | markdown |
Some things are deliberately absent, so you can stop looking for them. There is no Generate report button and no export of any kind, no PDF and no CSV. Nothing opens a card, and the AI narrative cannot be read in the browser. Keeping a report means sending the generator's own output to a file at the moment you run it. The one PDF export in the product covers a single newsletter and lives on the Newsletters screen.
How to use it
- Fix one window length and keep it Run the generator on the same rhythm every time, weekly or monthly, so the cards are comparable. Changing from seven to ten days between runs makes every rate tile a different question, and the period line will not warn you because it prints dates without times.
- Save the output while it is on screen The archive keeps the four headline numbers and none of the report body. Send the command's output to a dated file as you run it, in Markdown when a person will read it and with
--output jsonwhen another tool will. There is no second chance from this screen. - Come back and confirm the card Check three things, in order. The period line matches the window you meant. Total Newsletters is a sane sample. The AI Analysis pill is there, if you asked for commentary. A missing pill on a run that asked for it means the narrative did not survive, and only a fresh run brings it back.
- Read the tiles as a set, never alone Total Newsletters gives you the confidence level; Brands tells you how wide the average is spread; only then do the two rate tiles mean anything. A 40 percent estimated open rate over 6 newsletters from 1 brand is a sentence about six emails.
- Compare two cards, not a card and a dashboard Snapshots taken the same way over the same window length are comparable with each other. Comparing a saved card against the live dashboard is not a fair comparison, because the dashboard has kept recalculating since.
- Limit the run to one brand before a client review Every number on that card then belongs to that brand, which is the cleanest thing to quote.
Name the files you save the output into after the period rather than the day you ran them, for example 2026-08.md instead of sep-5.md. The card in the archive is sorted by generation time, so a consistent file name is the only quick way to line a saved narrative up with the card it belongs to.
Limits and caveats
- Both rate tiles are AI estimates from the content of each email, never measurements. Newsletrix has no access to another sender's opens or clicks, and no tracking sits behind these numbers.
- The averages are unweighted and skip newsletters with no estimate, so two cards can be averaging different subsets of their own material. Small windows are easily moved by a single unusual email.
- Snapshots are frozen. Re-analysing a newsletter later, or deleting it, changes nothing on a report that was already saved.
- The AI commentary describes a sample, while the tiles describe the whole set. By default the commentary is written from the 50 most recently analysed newsletters in the window, however many the tiles counted.
- A run that asks for commentary can finish without one. The report is still saved, and the AI Analysis pill is simply absent.
- The status pill always reads success, including when the commentary never arrived, so it is not a health signal. The AI Analysis pill is the one to read.
- The archive is not scoped to your account, workspace or group label, and it shows the 50 most recent reports with no paging, so older reports fall off the list without warning.
- There is no drill-down and no export. In the current build the card stack can also fail to draw, leaving only the page header, in which case the reports still exist and the generator's own output remains the reliable way to read them.
FAQ
Why is there no Generate report button?
Report generation runs from the command line only. This screen is a read-only archive: it lists reports that have already been saved, and the empty state tells you which command to run, either newsletter-overview --days 7 or newsletter-overview --days 30 --llm. Nothing you click in the web app creates a report.
Are the open rate and CTR figures on a report card real measured rates?
No. Both are averages of per newsletter estimates produced by the AI analysis of each email. Newsletrix receives competitor newsletters as an ordinary subscriber, so it never sees another sender's opens or clicks. Treat the two tiles as a relative signal between periods and brands, not as inbox truth.
I generated the report with AI commentary. Where is the text?
It is saved with the report, but this screen shows only the AI Analysis pill. The narrative summary, the competitive insights, the per brand recommendations, the comparison table and the per newsletter labels are printed by the command line tool as it runs, in whichever output format you asked for, and the card draws none of them. Send that output to a file if you want to keep it.
Does the report period mean when the emails were sent?
No. The window filters on the moment each newsletter was analysed, not the moment it was sent. A newsletter that arrived last week but was analysed today falls inside today's window. Send dates are used separately, in the day of week breakdown the report prints.
Why does the Brands tile show one more brand than I expect?
Newsletters whose sender brand could not be identified are grouped into a single bucket called Unknown, and the tile counts buckets. If some emails in the window were never attributed to a brand, that bucket adds one to the count.
What does Report # followed by a long string mean?
Report ids are 36 character unique identifiers, so the heading prints the whole identifier after the hash sign. There is no short sequential report number, and two reports generated a minute apart look unrelated in the list. Use the Generated line to tell them apart.