Audit deliverables are no longer frozen files — pick a template, attach it to an activity, and get a report that edits in chat, refreshes on the next run and downloads in six formats.
Every audit on the platform used to hand back a finished HTML file: right, but fixed. All 38 now
produce a report document instead — the same computed numbers, in something you can change.
- Edit a report by asking. Marketplace audits, quick-commerce audits, the 31 SEO audits, the
social audit and the consolidated proposal all open as documents you can chat-edit and refresh
against a newer run. Every figure is still computed from the run, never written by the model.
- Download it as whatever you need. One report, six formats — web, PDF, Word, Excel, PowerPoint
and Markdown — each its own designed template, including a presentation-grade deck that downloads
exactly as previewed. The SEO workbooks match the spreadsheets they replace, sheet for sheet.
- Pick a template, attach it to an activity, and stop thinking about it. Reports are chosen from
the template gallery — one list, not two — and an activity that carries one builds its report on
the first successful run and refreshes that same report on every run after. The separate list of
report chips that duplicated the gallery is gone.
- Template reports fill in seconds. Choose a designed template and it comes back filled with
your live workspace data, queried straight from your tables with no AI wait, and a scorecard on
the reports grid.
Reports composer
- Attach files to a report ask again — the paperclip and the
@ menu are back, an attached document
is now read in full instead of its first third, and a file you marked confidential stays respected.
- The writer no longer refuses buildable asks, and a follow-up like "Amazon only" or "yes do it"
resolves against the conversation instead of starting cold and asking again.
- Fixed reports rendering with empty charts and tables while the progress step claimed it had filled
ten data bindings.
New this release
- Social Profile & Presence Audit. Reads the public profile of your brand and each named
competitor across X, Facebook, LinkedIn, Instagram and YouTube — followers, verification, bio,
link in bio — plus posting cadence measured over the days the sampled posts actually span, never
an assumed window. A platform we could not read is named as unmeasured rather than counted as
silence, and a missing handle never becomes "this brand is not on LinkedIn".
- Connect social and ad accounts. Link Facebook, Instagram, LinkedIn, X, TikTok, YouTube,
Pinterest, Reddit, Threads, Google Business, Snapchat and more for posting or ads. Most open a
hosted sign-in; the few needing credentials or an access code have their own form. Every
connection is scoped to the workspace you made it in.
Around the product
- Knowledge base uploads land where you are. Pick the destination folder in the upload dialog,
add tags, decide whether to replace a file of the same name — and review the staged list before
anything is committed. You can also store a file without indexing it, for things you keep for the
record rather than for an agent.
- A sidebar that gets out of the way. Unpin it and it collapses to an icon rail that peeks open
over the page when you point at it. Pipeline phases drag into order on the Categories page, four
super-admin pages that were reachable only by typing their URL are now in the nav, and several
config pages use the full width of the page.
- Runs read straight. A long activity run is one run with one stable number instead of two
entries with a shifting label, clicking a run opens its details again, and a run whose content is
withheld now says why instead of showing empty panes.
- Tighter authorization on tools. Custom-tool authoring, which writes the catalogue every
workspace reads, is restricted to the platform team; the agency tool toggle requires an admin; and
support staff acting into a workspace can no longer run anything that would use its stored
credentials outside the sandbox. No change for normal users doing their own work.
Tenant owners get the full Nodes Library on a new workspace, and a palette that fails to load now says so instead of showing blank forms.
Two things that made the workflow builder look empty when it wasn't:
- The builder works for tenant owners — an owner or admin could open a workflow but saw an empty
Nodes Library and blank node settings, because their role carried no node permissions by default
and the builder filtered every node away. Owners and admins now get full node access on a new
workspace, and a few seeded workflows carried an invalid node icon that stopped the builder drawing
them at all.
- It tells you when the tool palette can't load — if a workflow's node config forms came up
blank, you now get a "couldn't load the tool palette" or "no tools on this environment" banner with
a Retry, instead of silence. The node forms were never missing; the tool catalog behind them wasn't
loading, and now it says so.
Traffic, landing pages, channels and Search Console ship as scheduled insight reports measured against the prior period — plus a social presence audit and three more SEO audits.
Reporting week — every figure now arrives with what it changed from:
- Organic Traffic Report — an insight report, not a raw dump — each period is read against the
equal-length period immediately before it, so every figure carries its change: a KPI table (this /
prior / Δ), a computed verdict ("sessions ▲447%, but conversion rate ▼9.2 pts — the traffic
converts worse"), the derived conversion rate, engagement and duration, and any anomaly day flagged
against the median so a spike doesn't quietly distort the trend.
- Organic Landing Pages Report — the top entry pages for organic search, each with its sessions
against the prior period, its conversion rate and its change, so the winners and the leaks are
obvious. Surfaces the best-converting page, the biggest gainer, and any high-traffic page that
converts poorly.
- Traffic & Conversion Report — all traffic broken down by acquisition channel (Organic Search,
Direct, Referral, Paid, AI Assistant and the rest), each with sessions against the prior period,
conversion rate and change — so the gap between the channels that bring traffic and the channels
that actually convert is obvious.
- Two Search Console reports — Search Query Performance ranks the queries the site earns clicks
on, each with impressions, CTR, position and its change against the prior period, plus
striking-distance opportunities. The Search Console Summary splits clicks into brand and
non-brand, so SEO-earned demand is separated from brand recognition, with non-brand growth called
out as the real ranking signal. All of these land as deterministic workbooks, scheduled weekly or
monthly.
- Reports auto-fill the connected property or site — connect Google and pick a GA4 property or
Search Console site on the Tools page, and scheduled reports stage that selection automatically, so
there's no typing the property into each run. The Tools page now has a GA4 property picker
alongside the Search Console one. Scoped to reports; audits are unaffected.
- Social Profile & Presence Audit — a new Social (Organic) activity: it reads the public profile
of your brand and each named competitor across X, Facebook, LinkedIn, Instagram and YouTube, and
lands one row per brand and platform — followers, verified, bio, link in bio, content count — plus
the follower matrix, per-brand totals, the category leader and your gap to it, verification and
profile completeness. Verification includes the gold check: an official organisation reads as
verified, and a column says which kind it is.
- Posting cadence, measured over the window it was actually sampled on — the same run samples
each profile's recent posts and lands posts-per-week per brand and per platform, with your gap to
the most active brand. The rate is computed over the days those posts actually span, never an
assumed 90-day window, and it is always quoted with its sample. A sample that hits the run's cap is
reported as a floor ("at least X/week") rather than averaged with measured rates, and a platform
that returned an empty feed, undated posts or an error is named as unmeasured — a brand we could
not measure is never shown as one that does not post. Every cell says which of four things
happened: we saw it, the platform refused to show it, the scrape failed, or no handle was staged.
Totals count only the platforms actually observed and name every one they left out.
- Duplicate Content & Cannibalization Audit — surfaces pages whose content duplicates another
URL, exact copies and near-duplicates that split ranking signals and make pages compete for the
same queries. Each finding names the closest matching URL, so the fix — consolidate or
differentiate — is obvious.
- Internal Linking Audit — scores how well each page is linked from within the site (inlink and
outlink counts, crawl depth, and the crawler's own internal PageRank score) and surfaces the pages
left barely linked, weakly linked or buried deep. Limited to indexable pages, so a weakly-linked
image or stylesheet never reads as a problem.
- Navigation & Footer Linking Audit — inventories the site's template links across header,
navigation, footer and sidebar, with each link's anchor text, where it points and its target's
status, and flags any sitewide link leading to a redirect or a dead page. Works at any site size:
the link graph is read on the crawl host and only the folded result comes back.
Run a small desktop app and the platform reads your local crawls — no ports, no exposure — while every audit workbook gains a ranked action plan and five more audits ship.
Your crawler, reachable from the platform — and the audits that read it got a lot deeper:
- Enque Connect (preview) — a small agent you run on the machine where Screaming Frog lives opens
one outbound connection to Enque, so audits running on the server can read your local crawls. No
port forwarding, no exposing Screaming Frog to the internet, nothing inbound. Pair once with a code
from the Tools page; it stores a token and reconnects on its own, and your workspace's connection
is written for you, so you never touch a URL or key.
- It's a desktop app now — instead of a terminal command, download EnqueConnect, run it, and
paste your pairing code once. It lives in the system tray (green when it's relaying, red when it's
reconnecting), starts on login, and reconnects by itself. No Python, no terminal to keep open — the
script path is still there for developers. The app is served from the platform's own storage, so
Tools → Screaming Frog → Connect shows a Download for Windows button the moment a build is
published, and never a dead link before that.
- Connect from the Tools page, and see who has — open the Screaming Frog connection, click
Connect, and the panel flips to Connected on its own once the tunnel is up. Because one
user runs one licence, the tool no longer shows an agency-wide key form nobody fills: each member
connects their own crawler, and the agency admin console shows who is connected and how many are
online.
- Big crawls read faster and never time out — reading a large crawl through Enque Connect now
reaches the tunnel by an internal route instead of going back out through the public network,
removing a hard 100-second ceiling that could fail a big export and shaving latency off every read.
- Audit workbooks got deep — every SEO audit report now opens with a computed headline and a
ranked Action Plan: every check, worst first by severity, with the pages affected, an authored fix,
the effort, the exact rule applied and example URLs. Each check gets its own drill-down tab holding
the affected pages with their evidence; a clean check states "verified clean on N pages" and an
unmeasured one says NOT MEASURED on its face, so an empty tab is a statement, never a blank. No
model writes a single cell.
- Four more audits from the same crawl, no extra setup — Orphan Pages lists the pages the
crawler knows about from the sitemap, Analytics or Search Console that nothing on the site links
to; Response Time & Server Performance flags every page by how slowly the server answered it
(Slow over 1s, Very slow over 3s) from the measured value, never an estimate; Redirect Chain &
3xx lists every redirect the crawl followed — chains, loops, refreshes, internal and external —
with what each lands on and the internal links that should point at the destination directly; and
Robots & Blocked Resources surfaces everything robots.txt blocks, with the blocked JS, CSS and
image resources called out as the dangerous case. Alongside them, Site Architecture & Crawl
Overview gives the shape of the crawl at a glance — URLs found and crawled, the internal/external
split, and how much of the site is actually indexable, each with its share of the total. A
composition summary, not a scored audit; the specific issues live in the other audits.
- Competitive Landscape & Proposal — one consolidated, client-ready proposal built from every
completed marketplace and quick-commerce audit a client has: competitor archetypes, cross-channel
gaps and a workstream plan, with every figure computed from the audit runs.
- Audits stop asking which site to audit — a workspace already names its site, yet every audit's
first run asked again. The run configuration now resolves it from the workspace's own record and
says so in the run summary, asking only when there genuinely is no answer. Competitor lists,
locations and keywords are still questions, because they are.
- The audit wave holds up against real crawls — all eighteen element audits were run end to end
against a live crawl and every failure fixed: a column present in one crawl and not another is
skipped and named in the report instead of failing the whole audit, a site with nothing of a given
type produces an honest zero-page report instead of an error, and an audit of an element carrying
no indexability data no longer claims every page is non-indexable.
- Fixes — saving a connection's site scope no longer wipes the tunnel URL and token behind it, so
the connection can't vanish the moment you touch the sites; a report chip's renderer re-syncs on
every seed pass, so a workspace onboarded in an older version no longer fails when an audit
finishes; and a run summary can no longer read its own freshly landed rows as "no data".
The sidebar lists your categories instead of one long list, and duplicate categories can be merged in a click.
Skills is now organised by category:
- Categories in the sidebar — your categories replace one long list of skills, each renameable in
place.
- Tell similar skills apart without opening them — the skill list shows the opening lines of
every SOP.
- Merge the duplicates — categories that are really the same thing spelled differently ("SEO" and
"seo") are detected and can be merged in one click from Manage categories, along with everything
the agent filed under "General" because it didn't pick one.
Meta tags, headers, canonicals and robots.txt each ship as a full workbook — and the audits now read every page in the budget instead of the first handful.
On-page week — four new SEO audits, plus the plumbing that makes them finish what they start:
- Meta Tags Audit & Generator — one row per URL with the current title and meta description,
their lengths, and whether each needs rewriting. Where a rewrite is owed a replacement is drafted
and then checked before it reaches the sheet: right length, unique across the site, and built from
words that actually appear on that page. Anything that can't pass is marked manual review rather
than guessed at — an invented claim about your business is worse than a blank cell. Tags already
fine are left alone.
- Header Tags Audit — one row per URL with its H1, the heading count at every level, and the
single worst thing true of its structure: no H1, several H1s, an H1 reused verbatim elsewhere, a
missing rung in the outline, a long page with no subheadings, or an H1 out of length. The paired
report renders a nine-sheet workbook with a ranked action plan, and every fix is a structural
instruction, so no model writes any part of it.
- Canonical Tags Audit — an eight-sheet workbook: a Summary, six per-URL sheets (Canonicalised,
Missing, Multiple or Conflicting, Non-Indexable Canonical, Canonical Is Relative, Unlinked) and a
prioritised Action Plan. Every recommended canonical is computed from the crawl, never written by a
model.
- Robots.txt Audit & Generator — checks the one file that can switch a site off. It grades every
directive, tests whether the pages you care about are crawlable using Google's real matching rules
(most specific wins, not first), verifies your sitemaps are reachable and not blocked by the file
itself, and hands back a corrected robots.txt where every change says why. Directives Google
quietly ignores are called out rather than left looking like policy, and blocks on AI crawlers are
reported as a decision for you, not a defect.
- Every page in the budget, not the first five — the on-page audits used to hand the whole site
to the crawler as one queued job that the provider had only tested to ten pages, so a 48- or
1000-page audit sat in line and came back empty after the credits were spent. Each audit now reads
the sitemap once and fetches its pages one at a time. The page budget means exactly that many
pages, a page that fails costs one row instead of the whole run, and the reason it failed is named.
- Honest limits instead of clean-looking blanks — orphan detection still needs a full crawl, the
one thing that queues, so it runs as best effort: if it doesn't come back the audit still ships and
the sheet says the check did not run. The heading audit states what it cannot see (the crawler
returns headings grouped by level, never in document order), rather than leaving a sheet that looks
clean.
- An audit can no longer run against the wrong company's website — a row edited in the table is
read correctly whatever shape it was saved in (and a row that genuinely can't be read stops the run
instead of being skipped), the assistant has to ask before putting a website into a workspace, and
a domain belonging to someone else never gets recorded as this client's own site.
- A run setting that isn't a URL path is refused, with the correction — answering a crawl scope
with a phrase ("whole site", "none", "all pages") used to become a filter that matched nothing and
killed the crawl after the credits were spent. Those values are now rejected at the form and again
inside the run, and the message names the field, the value and exactly what to type instead.
Nothing is silently repaired:
products is refused with "write '/products'" rather than quietly
turned into it. And settings marked recommended are now actually asked for — a robots.txt audit
could run without the priority pages and should-be-blocked paths it needs, quietly measuring less
than it could. Those appear in the confirm form too, once, with the option to leave them blank.
- Answering a question no longer makes the run start over — a run that paused to ask you
something used to send the assistant back to the top of its checklist, re-reading what it had
already read at your cost. It now picks up exactly where it left off.
- Fixes — an empty query answer now lists the values the column really holds with counts, instead
of "try fewer filters"; an activity whose workflow produced nothing no longer reads as completed;
and a crawl failure names the URL, page budget and path filters the crawl actually used.
Tools now sit in a real catalog — editable categories, provider logos, and API keys checked with the provider before they are saved.
Connections week — everything you plug into a workspace now looks like it belongs and proves it works:
- Tool Center — one full-width catalog of every available tool, with a detail drawer, search and
authoring in place. Agency tools open as an Integrations App Center rather than a bare list.
- Real categories — pick more than one category per tool, and rename, recolour, nest or reorder
the shelves yourself instead of living with a fixed set.
- Every tool wears its logo — provider marks ship with the install, so a fresh workspace is
dressed from the first screen. Upload your own mark for any provider; anything we can't fetch falls
back to a coloured tile instead of a blank square.
- Keys proven at save — an API key is checked with the provider before it is stored, so a wrong or
expired one is caught immediately instead of at the next run, and a working one shows which account
it belongs to. Health is read from the provider's own auth gate — no per-provider setup.
- Keys stay with the people who own them — a member can no longer write the agency's API keys, and
a read-only view is read-only across the whole panel, not just its buttons. A refused save now says
so instead of failing silently.
- Run logs keep no secrets — a key echoed back by a tool or a vendor error is redacted before the
run log stores it, and very large payloads are trimmed with the amount removed shown rather than
silently cut.
- Marketplace audits confirm the brand once — matching folds the mechanical spelling differences
(
& vs "and", accents, case) on its own and stops a shorter brand name absorbing a longer one. When
the name is genuinely different, the run shows which brands it did capture and asks you to pick the
client's; the answer is saved, so it is asked once per marketplace and never again.
- Fixes — the same client domain can no longer be registered twice, the Integrations dialog closes
and scrolls properly, and the category manager no longer crashes when opened.
Activity runs execute on Temporal in every environment — durable, resumable, restart-safe — with run history that tells the truth.
Reliability week:
- Temporal everywhere — activity runs execute on the same durable engine in local, dev and production. A run survives a deploy mid-flight and resumes where it stopped.
- Honest run history — every run row states what triggered it, what happened and what it produced. One run is one card; re-runs re-scan instead of silently reusing stale data.
- Human-in-the-loop, fixed — the agent asks once and only for values it genuinely needs, renders choices as buttons, and never re-surfaces a question you already answered. An empty answer blocks the run rather than being guessed past.
- Graceful deploys — in-flight runs are given time to drain on redeploy instead of being killed.
- Engineering: test suite ~10× faster — the full backend suite (1,700 tests) now runs in about two and a half minutes; database schema is provisioned once per worker and cloned per test.
Score rings on every audit card, Templates page with instant sample previews, and reports that generate themselves after a run.
The reports library got a face and a memory:
- Report cards — every audit card shows its headline score ring and key metrics at a glance, straight from the run's real data.
- Auto-generated reports — when an audit activity finishes, its paired report is generated automatically; no extra click.
- Refresh & download — re-render any report from the latest data (without re-running the whole workflow) and download it from the pane header.
- Templates page — see every deliverable design and brand master in one place; each HTML design previews instantly with sample data, even in a brand-new workspace.
- Open in chat — every report opens into a refine chat, so iterating on a deliverable is one click.
Logos, palettes, fonts and brand voice pulled from a client's site — validated before they're stored, honest when they can't be.
Brand capture went from "usually close" to "checked":
- Logo accuracy — sprite-referenced and icon logos resolve correctly, stored logo bytes are validated, and hidden menu images are no longer mistaken for logos.
- Colour palette — the logo's own colours lead the palette; roles are backfilled from two sources instead of guessed.
- Deeper brand facets — dark palette, font provenance, brand voice and style fingerprints, captured alongside the basics.
- A provider ladder — site scans try providers in order and report the real reason when they fail ("the page was blocked" rather than a vague error), with a retry that waits a beat.
- Manual edits win — a field you edit is locked to your value, and can be released back to the scanner deliberately.