Skip to main content

How the stack works

Verified by construction.

A look under the hood: how your raw ad data becomes a grounded daily brief that structurally can't make numbers up — and stands behind its own track record.

01 · The verifier spine

Compute first. Narrate second. Verify last.

Most tools bolt an LLM onto a dashboard and let it generate prose — so it invents numbers. We reversed the order of operations.

01 — compute
Deterministic detectors

Trends, anomalies, pacing, baselines, peers, targets — every fact and dollar is computed directly from your synced data. No model is involved at this stage.

02 — narrate
The LLM only narrates

A low-temperature model writes the brief using only the already-verified facts. It explains the why and the mechanism — it never sources the numbers.

03 — verify
A verifier gates output

Every claim is checked against a computed fact. Anything unprovable is rejected and the brief falls back to the deterministic story. A hallucination cannot ship.

✓ llm-verified — narration is clean⤵ deterministic-fallback — narration drifted, facts still ship

02 · Data to recommendation

How your data becomes a recommendation

Every insight in your daily report is built from your own history, then cross-referenced against your vertical.

step 1
Connect sources

Ad platforms, analytics, commerce & warehouses sync in — read-only.

step 2
Normalize

Unified and modeled into one schema for the campaign reporting.

step 3
Model patterns

Detectors surface fatigue, pacing drift, saturation and more.

step 4
Benchmark vs vertical

Context from anonymized peers in your industry (with n= and as-of date).

step 5
Recommend

The verified brief: the move that matters, with dollars and provenance.

Step 01 · Connect sources

Read-only OAuth, one connection per platform. Google, Meta, TikTok, LinkedIn, Amazon Ads, GA4, Shopify and Snowflake flow into your own per-brand warehouse — and you can drop in historical CSV / Excel exports too. Nothing is ever shared across tenants.

Step 02 · Normalize

Each platform's quirks — naming, currencies, time zones, differing metric definitions — are mapped to one consistent schema. So “spend,” “conversion” and “CPA” mean exactly the same thing everywhere before a single number is analyzed.

Step 03 · Model patterns

Deterministic detectors compute trends, anomalies, pacing, baselines, creative fatigue, dayparting concentration and audience saturation straight from your data. No model is involved here — the facts exist before any sentence is written.

Step 04 · Benchmark vs vertical

Your numbers are placed against anonymized peers in your category, always carrying a sample size (n=) and an as-of date. That turns a raw CPA into “top-quartile for your vertical” — context, not an absolute.

Step 05 · Recommend

The verifier-gated brief turns those facts into the one move that matters, with dollars attached and a provenance footer. Any clause that doesn't match a computed fact is rejected and replaced by the deterministic story — so nothing unprovable ships.

Patterns detected in your data
Creative fatigue
powers rotation recs
Dayparting concentration
powers budget-shift recs
Audience saturation
powers expansion recs
Spend-pacing drift
powers pacing-cap recs
Vertical benchmarks
powers context on every metric
Creative → outcome
powers format & message guidance

Every recommendation traces back to these patterns in your data — drawn from your live sources and uploaded historicals.

03 · The data layer

Your own warehouse, siloed and modeled

Connect your ad accounts and analytics, or upload historical exports. Everything is unified, per-brand, and modeled for the reporting above.

49.2M
rows ingested across all sources
9 / 15
live integrations connected
Jan 2023
earliest record · full history
Daily
sync schedule · last run 4h ago
MetaGoogle AdsTikTokLinkedInAmazon AdsProgrammaticGoogle Analytics 4ShopifySnowflake+ CSV / Excel upload

Upload a historical export and it's matched to the right campaign deterministically — date-overlap, daily-pattern correlation, and name-token similarity — with the “why” shown and a confidence bar. Below threshold, it's flagged “needs review,” never a guessed link.

04 · Delivery

One source of truth

The canonical report renders identically everywhere — so the number you see is always the same verified number.

  • The dashboard at app.adres.ai/insights
  • The daily email — with the data attached as CSV
  • The read-only connector, inside your own AI

05 · The connector

Bring your own AI

A remote MCP server. Add AdRes in Claude, sign in with per-user OAuth, and your AI gets grounded, read-only tools — every payload carrying verified provenance.

list_campaignsget_campaign_reportget_campaign_performanceget_portfolio_brief

What's shipped — and what's next

We'd rather under-promise. Here's the honest split.

Shipped today
  • The grounded daily brief — campaign & portfolio levels
  • Verifier-gated narration with deterministic fallback
  • Self-grading track record & forecast calibration
  • Marginal-dollar reallocation & learnings ledger (v1)
  • The 3D warehouse graph + CSV auto-match
  • Read-only MCP connector, working end-to-end
On the roadmap
  • Live-spend pilots on real daily budgets
  • Creative- & audience-level plays wired to live data
  • Verifier-gated, human-approved MCP write-back
  • Learnings ledger v2 — persisted cross-campaign
  • Auto daily-email schedule (today it's manual/gated)

Deliberately not building: a proprietary chatbot, attribution/MMM, or automated write-access to ad platforms. Read-only is the trust position.

Run it on your own data.

Connect one account, read-only, and watch the verified daily brief — and its track record — build on your spend.