In this region a website portfolio is rarely a list of separate companies. Far more often it is one company with two language versions, kept by two people who have never worked in the same room — and what fails between them is not a setting, it is the record of what was decided.

Ask a manager here how many sites they run and the answer is usually one. Ask how many properties are verified and who can publish, and it changes. The French version is maintained in-house, close to the customers. The English version was commissioned years ago from a studio in Montreal or Toronto, and it is updated on another calendar by people who read this market at a distance.

That is a two-team structure nobody has admitted to, and the cost shows up as drift: a change lands on one side and the other quietly falls behind. This article covers the parts of the unified Semalt workspace built to hold several properties and several people at once — the project feed, the shared task states, the sharing model, the tagging, and exports that survive being read by someone who was not in the meeting.

Starting point · The portfolio is a pair

Two language versions, two maintainers, one company

Drift has a recognisable shape. A product line is renamed and the French pages are updated that afternoon; the English pages keep the old name for eighteen months, so the two versions chase different terms. A redirect is added on one side while the counterpart page still points at an address that no longer resolves. A description is rewritten to fix a click-through problem, and the fix never crosses over.

None of that shows in a ranking chart. It shows in the gap between two versions of one site, and that gap is a documentation problem before it is an SEO problem.

The question that exposes it. Ask when the English pages last changed and by whom, then ask the same of the French pages. If the answers come from two different systems, or two different memories, the drift already exists and only its size is unknown.
Insurance and finance

The French page is the product

Coverage and advice pages are written and reviewed in French; the English set is a thinner summary nobody revisits.

Optics and photonics

The export site on its own domain

An English site for buyers abroad, ranked against generic terminology by a team that never met the local suppliers.

Healthcare and universities

Translation arrives late

Programme and clinic pages ship in French first and appear in English a term later, with no record of what changed between.

Food processing

Two audiences, one person

A French recruitment site and an English trade site, both kept by one manager with no handover notes.

2
versions of one portfolio
35+
interface pages in the panel
11
external integrations
20
messages of retained context

The instinct is to buy a dashboard, because a dashboard is what you can shop for. But a dashboard shows state, and drift is a history problem. What both teams need is a written trail of what changed, when and why, kept beside the data that prompted it.

The feed · One project, one chronology

My SEO Stream as the project record

Stream is the assistant in the My SEO area, and calling it a chat window undersells it. It is a chronological feed per project, and what lands in it normally lives across four separate tools.

My SEO · Stream

The project feed

For a portfolio where more than one person changes the site and nobody keeps minutes.

Included with a campaign
  • Answers stay in the record. Every question and answer remains a dated entry instead of vanishing with the session.
  • Reports arrive in sequence. Generated reports land in the same chronology, so a number and its discussion sit together.
  • Each link, with its donor. New placements carry the donor's domain rating and traffic, turning link building into a visible sequence.
  • Tasks beside the reasons. To-dos and campaign notices share the feed, so work and cause are not filed separately.
1
chronology per project
4
entry types in one stream
230,000+
partner sites behind placements

The value of a chronology here is specific. When someone asks in six months why the English service page targets a different phrase from its French counterpart, the answer either exists as a dated entry or not at all. A feed will not stop an outside team making a unilateral change, but it makes that change legible afterwards — the difference between a discussion and an argument.

Use it as a log, not only as a chat. The most useful entries are those a person wrote deliberately: a line recording that one term was chosen over its synonym, or that a page was left alone on purpose. Ten seconds now, an afternoon saved later.
The assistant · Bound to the project, not to the internet

A question, and up to three blocks of your own data

The assistant differs from a general chatbot in one structural way: it is attached to the project's real data. When a question arrives, a routing model decides which blocks are relevant and loads them — Search Console, rank tracking, campaign state or custom material — between zero and three, by relevance.

The zero case matters more than it sounds: a question needing no data gets none, so the assistant is not obliged to dress a general answer in numbers nobody consulted. The ceiling of three keeps an answer traceable to a small, nameable set of inputs.

What you askBlocks the router is likely to pullWhat the answer can honestly cover
What does a donor's domain rating meanNoneA definition, with no false precision about your site
Where did last week's placements landCampaignThe links recorded against this project
Do our two language versions target the same termsSearch Console, rank tracking, customWhat each version was actually shown for
Should we rename this product lineSearch Console, customEvidence about demand, never the decision

Answers stream token by token rather than appearing at once, so a long one can be abandoned early when it heads somewhere you already know. History is retained up to twenty messages, so a thread can build — question, correction, narrower follow-up — without restating the setup each time.

Twenty messages is a ceiling, not a memory. A thread running past it loses its early context, and one wandering across three subjects carries noise into every later answer. Start a fresh thread for a fresh question.

It also takes keyword and URL lists in bulk, the route for anyone arriving with an inventory rather than a question. Submit the two term sets separately and compare what comes back, rather than merging them into one list that hides which side is weak.

Structure · Making a feed searchable

Filters, task states and full-text search

A chronological feed becomes unusable exactly when it becomes valuable: once it is long. Four filters cut it down — All, Links, Files and To-do — each more useful to whoever was absent than to whoever was there.

All

The full chronology

Everything in order, for reconstructing a period rather than finding one item.

  • Answers "what happened in March"
Links

Placements only

Every backlink recorded against the project, each with its donor's rating and traffic.

  • Compare what each version received
Files

Documents and exports

Reports and uploads separated from conversation, so a file is found without scrolling.

  • Confirm which version a figure came from
To-do

Outstanding work

The task view, and the first filter a new team member opens on taking over.

  • Review states before adding anything

To-dos carry three states, and the middle one matters most. A task is active, deferred or dismissed — and deferred is not dismissed. That sounds pedantic until you inherit forty backlog items with no sign of which were postponed on purpose and which were rejected.

  • Active. Agreed and outstanding. In a two-team portfolio this is the only list worth reviewing weekly.
  • Deferred. Real work, not now — waiting on a translation, a compliance review, a seasonal window. It comes back, and it should.
  • Dismissed. Considered and rejected. Recording the rejection stops the same suggestion returning every quarter from whoever is newest.

Full-text search runs across every message, which makes the record retrievable rather than merely present. The search box does what no filter can: query a service name in French, then in English, and the two result sets show whether both versions have been discussed at all.

Search the term, not the page. The most revealing query in a shared feed is a product name in both languages. Where one returns a dozen entries and the other two, you have found the neglected side without opening a report.
Access · Who is in, and how they get out

Linked accounts, per-site sharing, and revoking it

Multi-tenancy is the unglamorous half of running a portfolio, and where most of the risk sits. The workspace is built around linked Google account groups, so properties verified under different accounts come into one working view instead of everyone sharing a login.

Workspace · Access model

Sharing a site, and taking it back

For the common case where an outside team keeps one language version and an internal team keeps the other.

Part of the platform
  • Linked account groups. Properties under different Google accounts gather into one workspace — the normal state after a rebrand.
  • Sharing is per site. Access goes to one email address for one site, never to the portfolio.
  • One consent flow. Google OAuth2 covers Gmail, Search Console and Analytics together, so onboarding is one authorisation.
  • Revocation is routine. Access is withdrawn without dismantling anything, which is what makes granting it safe.
Per site
granularity of sharing
1
consent flow, three services
Group
linked Google accounts

Per-site granularity fits this market exactly. A studio maintaining the English version needs that property and nothing else — not the French site's query data, not the second brand. Granting the whole portfolio because it is quicker is how a supplier ends up holding data from a relationship that ended two years ago.

Offboarding is the part nobody schedules. When a contract ends, access persists because revoking it is somebody's third priority. Put it in the same checklist as the final invoice. What a collaborator contributed stays in the feed, which is exactly why their account need not.

One commercial detail decides budgets. Campaign pricing is per domain: AutoSEO at 149 USD per month, FullSEO at 500 USD — roughly 205 and 685 CAD, approximate conversions only. If both versions share one domain under separate paths, that is one campaign. If the English site sits on its own domain, common when a studio delivered it, that is two. A decision made years ago by someone not thinking about search sets your recurring cost.

Organisation · Labels that survive a handover

Site tags: label the language first, keep the tree flat

Site tags act as a global filter across the workspace, which is a stronger statement than it sounds: a tag narrows every view you subsequently open, so tagging is not decoration — it defines what a report is about.

For a Quebec portfolio the first tag is the language version. Every number describes either the French site or the English one, and someone will ask which. A tag makes that answer structural instead of conversational.

Tagging approachWhat it looks likeHow it behaves after a handover
Flat, by languagefr, enUnderstood instantly; survives every reorganisation
Flat, by rolebrand, product, archiveStable, because roles change less often than teams
Deep, by hierarchymarketing / web / fr / productBreaks at the first reorganisation, then is wrong silently
Deep, by phase2026 / q1 / migration / frAccurate for a quarter, misleading for the next eight

Flat beats deep for a reason unrelated to tooling. A deep tag encodes a structure — who reports to whom, which project a site belonged to — and structures change faster than sites do. When they change, the tags throw no error; they simply become false and keep filtering on something that stopped being true.

A flat tag encodes a property of the site itself: French or not, archive or not. Those facts outlive the org chart, and two or three combined at read time express nearly everything a hierarchy would.

A working set for this region. One tag for language, one for the site's role, one for who maintains it. A food processing company with a corporate site, a French recruitment site and an English export site is fully described by six flat labels, readable without a legend.
Reporting · A number that states what it is about

Exports, scope, and a week that actually works

Reports here are read by people who will ask which language a number refers to, and they ask in the meeting rather than beforehand. A report stating its own scope on its face beats one with better charts, because the prettier one raises a question the plain one already answered.

The ceilings are fixed and shape the workflow. CSV and JSON run to 10,000 rows, enough for a full query export for most portfolios. PDF is rendered server-side and capped at 250 rows — less a limitation than a description of what a PDF is for. The builder is configurable and carries branding, logo and colours, which matters once a document leaves the building.

10,000
rows in CSV or JSON
250
rows in a rendered PDF
50–200
rows per table page
Live
dashboards, no manual refresh

The visualisations follow the same division of labour: time series for movement, metric cards for the few figures belonging on a first page, sortable tables at fifty to two hundred rows per page, sparklines putting a trend beside a number, heatmaps for country and device. Where a French-language figure could describe your customers or readers overseas, the country heatmap validates everything above it.

Name the scope in the title. "Queries, French version, Canada only, 28 days to 12 March" is an ugly report title and a complete one. The prettier version costs you the first eight minutes of the meeting.

Background workers keep the data synchronised, so dashboards stay current without anyone pressing refresh — removing a whole genre of confusion: two people reading the same screen on different days and quoting different numbers at each other.

A week across two versions and two maintainers need not be long. It needs to be the same week every time.

WhenWhat you doWhere
Monday, 15 minMove deferred items that are now due into activeTo-do filter
Monday, 10 minRead last week's placements and their donor ratingsLinks filter
Wednesday, 20 minCompare the two language tags on one view; note any divergenceTags as global filter
Thursday, 10 minAsk one narrow question; leave the answer in the recordStream
Friday, 15 minExport the scoped report, send it, record what was decidedReport builder
Month end, 1 hourSearch each product name in both languages; find the neglected sideFull-text search

About seventy minutes a week, and it holds a two-language portfolio together better than a monthly meeting, because the written trail is a by-product rather than an extra task. Our service pages set out how it runs when an outside agency holds one side.

Frequently asked questions

Can the agency maintaining our English site see the French site's data?

Only if you share that site with them. Sharing is granted per site to a specific email address, so a collaborator gets the property they work on and nothing more. Start minimal and expand deliberately rather than trimming later.

What happens to the project history when we remove someone's access?

The feed belongs to the project, not the individual. Entries created while a collaborator had access — answers, reports, placements, task states — stay in the chronology. That is the practical argument for keeping decisions in the feed rather than in email.

Does the assistant search the web for its answers?

It works from the project's own data. A routing model selects between zero and three relevant blocks per question — Search Console, rank tracking, campaign state or custom material. When nothing is relevant, nothing loads, and the answer stays general rather than wearing borrowed numbers.

Should we tag by language or by business unit?

By language first, because every report is about one version or the other and somebody will ask which. Business units make a reasonable second tag provided they stay flat. Avoid hierarchies: reorganisations never update tags, they only make them wrong.

The work that stays human

Everything above narrows the space where confusion grows. A shared feed makes decisions retrievable; per-site sharing keeps access proportionate; flat tags survive the next reorganisation; a scoped export answers the language question before it is asked. None of it decides anything.

Prioritisation stays human. Software ranks candidates by opportunity, but only a person knows the optics division launches in October and the recruitment site can wait for spring. Cause-finding stays human too: the feed shows clicks fell on the English version in week eleven, but whether that was the redesign, a competitor's new page or a distributor who stopped linking to you is answered by asking people, not by filtering rows.

The honest boundary. Goal-setting and client communication cannot be delegated to a panel. A tool reports what moved and how far; it cannot say what would count as a good year, nor explain a disappointing quarter to a board in the register that board expects. Expect first movement four to eight weeks in, and expect to do the explaining yourself.

What a shared workspace removes are the arguments that were never about strategy: who changed what, which version a number describes, whether a task was rejected or postponed. Those cost a bilingual portfolio more attention than any ranking factor. The campaign and analytics sections supply the numbers, the Stream feed supplies the history, and the report builder makes both presentable to someone who was not there.

To find out whether the drift between your two versions is real, put both properties in one workspace and tag them. Link your Google account and open the dashboard — one consent flow covers Search Console and Analytics, both versions sit side by side, and the divergence is usually obvious within an hour. The rest of the series is on our blog.