Break the Signal for Noise New Media
Every source, every store, every step between a platform serving an ad and a fair board reading a sentence about it. Written so somebody who did not build it can own it.
Most of this is plumbing between systems Noise already pays for. The parts worth real engineering are the semantic layer, which makes years comparable, and the context layer, which explains a soft season. Everything else is wiring and a renderer.
Paid media arrives through Whatagraph, which is already connected to every platform and already holds nine seasons. Ticketing is three different problems, not one. The last two are typed by a person once and reused every season after.
One scheduled job per source, each writing rows stamped with where they came from and when. Anything inferred rather than measured, a press incident, a product match it is unsure about, lands in a review queue instead of the report.
BigQuery holds platform and ticketing rows, which is where nine years and seventy clients live. D1 holds the application: clients, campaigns, report configs, product maps, overrides, versions, and every decision a person made so it is never asked twice. R2 holds creative, photography, logos and frozen exports.
The load bearing layer. Every platform names spend and revenue differently, and every client renames its own products between seasons. This turns both into one vocabulary, keeps the price under the volume, splits advance from during event, and stamps every figure with where it came from and how it was measured.
The reasons, collected on their own. Weather joins on the venue coordinates over the campaign window. Incidents come from a regional press and social scan and never reach a client without a person approving them. The portfolio benchmark is the sentence no other agency can write: here is how the rest of your book moved this season.
A report config holds bindings, not numbers. A tile says return on tracked spend, and the resolver fetches it at render. Anything typed over a bound value is recorded as an override with a reason, so you can always see what a person changed and why. The builder is where that happens, and it edits the report itself rather than a form beside it.
One HTML file, no framework, readable on a phone and printable. When a report is sent it is frozen: the resolved values are snapshotted and the link stops moving, which is the failure we found on seventy one of the published reports in your account.
This is the loop that runs seventy times a season. Green is automatic, amber needs a person, and the right hand column says who and how long.
Brand marks, venue coordinates, ticketing platform and account, Whatagraph space and source ids, the Drive folder holding past seasons.
Gate, advance, four pack, parking, concert upgrade. Mapped to identities that survive being renamed next year. Only new or ambiguous products come back after this.
Window, media plan by channel, event dates, on sale date. The window is what everything else is measured against, and it is fixed rather than rolling.
Paid media from Whatagraph, ticketing from Saffire, Etix or Archtics, weather from the venue coordinates, creative and per ad metrics from the platforms.
One vocabulary across platforms, price under volume, advance split from during event, provenance on every number.
Weather against daily sales, regional press and social flags, how the rest of the book moved, lineup tier applied.
Products that would not match, incidents the scan found, anything the system will not assert on its own. An account manager decides. Each decision is kept.
Template for the archetype, blocks bound to resolved figures, narrative drafted from the data and the call history, every claim carrying its source.
Click the text and type. Reorder, hide, add a section. The judgement about what to lead with and how to say it stays with the account manager.
The only gate before a client sees it. Corrections at this step are stored against the client, so the next draft starts closer.
Values snapshotted, window locked, share link issued. The link a board keeps shows in December what it showed in September.
A weekly one page pulse during the next campaign, and the report stays answerable: ask it a question and get a cited number rather than a guess.
This is the part of the estimate most likely to move, so it is worth being explicit rather than optimistic.
Already licensed by Noise and already scraped by hand. Browse AI runs it on a schedule instead, with monitors and webhooks, and delivers daily totals by product.
AUTOMATABLE NOW · NO NEW COSTA partner API exists. Orders and daily totals. This is a credentials conversation between Noise, the client and Etix, not an engineering problem.
NEEDS CREDENTIALSThe reporting surface is an iframe, which is why it has resisted automation. The real route is Archtics Transaction Services through the Nexus partner programme, granted on the relationship between Ticketmaster, the client and the partner. The fair has to ask, not us.
CLIENT REQUEST · SLOWEST PATHA one field weekly entry per client, or a client supplied export dropped in a folder and parsed. Worse than an API, far better than nothing, and it keeps those clients inside the same system.
DESIGNED FOR, NOT HOPED AGAINST| Store | Holds | Why there | Grows with |
|---|---|---|---|
| BigQuery | Platform rows Ticketing rows Weather series | Nine seasons across seventy clients is a warehouse question, not an app question. Whatagraph transfers into it on a schedule. | Seasons × clients |
| D1 | Clients, campaigns Report configs Product maps Overrides, versions Decisions | Small, relational, read on every render, and it sits at the edge next to the Worker that serves the report. | Reports written |
| R2 | Creative, logos Photography Frozen exports | Object storage for things measured in megabytes. A frozen report keeps its own copy so it cannot change under the client. | Assets uploaded |
This is the mechanism behind the promise that a report holds up under questioning. It is one field, carried everywhere.
A platform or a ticketing system reported it. The report can name the source, the window and the rulebook it was counted under.
SAFE TO LEAD WITHArrived from a connected source that is not a measurement of a sale: weather, a press mention, creative from an ad account.
SAFE, BUT NOT A CLAIMSomebody typed it or decided it. A narrative, a lineup tier, an override on a bound figure. Always attributable to a person.
CARRIES A NAMECalculated with a method rather than measured, such as the de-duplicated revenue range. Printed with its method next to it, never as a flat figure.
NEVER THE HEADLINEEvery failure below is one we found in the live account by measuring it. Each is now a check that runs on its own.
| Check | Looks for | Found today |
|---|---|---|
| Sample data | A source with no real account behind it, on a report anyone can open | 10 LIVE |
| Mixed data | Real figures sitting beside placeholder ones in the same report | 68 REPORTS |
| Moving window | A sent report whose date range still runs to today | 71 PUBLISHED |
| Dead source | An expired token or revoked access, flagged inside a report and nowhere else | 73 SOURCES |
| Open link | A public share URL with no password on it | 123 LINKS |
| Stale figure | A bound value that failed to resolve and fell back to the last known number | BY DESIGN |
Clears the queue, edits the report on the page, sends it. Never sees BigQuery, never writes a query, never asks an engineer for anything.
SURFACE: THE BUILDERWrite the summary and the recommendations. Ask the assistant the questions they currently email Mark about, and get a cited answer.
SURFACE: BUILDER + ASSISTANTApprove what goes out. Their corrections are stored against the client, which is how the system learns the house view rather than a generic one.
SURFACE: APPROVAL + CORRECTIONSA fair board, a GM, sometimes a sponsor or a county commission. Reads on a phone, forwards the link, quotes one number in a meeting.
SURFACE: THE FROZEN LINK| Source | Route | What it gives | Status |
|---|---|---|---|
| Whatagraph MCP | mcp.whatagraph.com/mcp OAuth, one click | Reads sources, metrics, account structure and source health. Also builds reports, tabs, widgets, templates, themes and share links. Renders a tab to an image and exports the PDF. | CONNECTED |
| Whatagraph → BigQuery | Managed data transfer scheduled | The pipeline. All paid platform rows, no API quota ceiling. Roughly a day of setup per account. | HAVE ACCESS |
| Saffire | Browse AI v2 monitors + webhooks | Daily ticket totals by product. Already licensed, currently trained by hand and rarely used. | AUTOMATABLE NOW |
| Etix | Partner API | Orders and daily totals. A credentials conversation, not an engineering one. | NEEDS CREDENTIALS |
| Ticketmaster TM1 | Archtics Transaction Services via Nexus | The biggest clients. Granted on the relationship between Ticketmaster, the client and the partner, so the fair asks. | CLIENT REQUEST |
| Hive | Email and SMS platform | Sends, opens, revenue and the purchaser list. Current system, replaced the old one. | NEEDS ACCESS |
| Agorapulse | Analytics Open API key, read only | Organic social. Custom plan required, hard ceiling of 500 requests per 30 minutes, so batch overnight. X not covered. | PLAN DEPENDENT |
| Fireflies + HubSpot | GraphQL, key auth | Call transcripts on the deal record. Already wired between the two. The raw material for the knowledge layer. | READY |
| Weather | Open-Meteo archive no key | Daily rainfall and temperature by venue coordinates. Nothing to configure, nothing to pay. | FREE, WORKING |
| Google Drive archive | Client folders | Up to nine years of past reports per client. Read once into the warehouse, then kept current. | HAVE ACCESS |
| GA4 | Excluded on purpose | Roughly 60% capture behind consent banners. No dollar figure comes from here, by policy. | NOT USED |
One client end to end, the block library, and the editing surface. Sets the format, the return panel and the context section.
Warehouse, ticketing feeds, product identity and price history, the reconciliation queue, templates per archetype.
Weather, incidents, portfolio comparison, the weekly pulse, and the health check that stops a bad report reaching a client.
Lineup performance by market, pricing history, call context, and long range comparison including before the agency.
One HTML file, one stylesheet, real charts. Nothing here needs a build pipeline or a framework upgrade path, and Steve can open the source and follow it.
OWNERSHIP BEATS CLEVERNESSRoughly 60% capture makes any dollar figure from it misleading. It is excluded, and the report says so rather than quietly omitting it.
STATED IN THE REPORTThe report carries client marks and photography inside a Noise designed frame. That is what makes it automatable across seventy clients.
ONE DESIGN, MANY CLIENTSA subdomain on Noise's own Cloudflare account, documented, so the system does not depend on us being reachable.
YOURS, NOT RENTEDYou describe three: general admission, GA plus concerts, GA plus concerts plus organic social. The seven reports you sent do not cluster that way, no two share a combination of sections. Both can be true. It changes whether we build three templates or one template with toggles.
NEEDS FIFTEEN MINUTES WITH CHEYENNERight now the share links in your account are public and unpassworded. The choice is a signed link that expires, a password, or Cloudflare Access. It affects how a board forwards it.
A POLICY DECISION, NOT A TECHNICAL ONENine years exists. Loading all of it for all clients is real work. Loading three years for everyone and nine for the clients who need a pre agency baseline may be the better trade.
AFFECTS PHASE 2 SIZEThe connection can build and edit reports in your account, not just read them. That could fix the ten live sample data dashboards in an afternoon. We have not touched it, and will not without you saying so.
READ ONLY UNTIL YOU SAY OTHERWISE