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.
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 French page is the product
Coverage and advice pages are written and reviewed in French; the English set is a thinner summary nobody revisits.
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.
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.
Two audiences, one person
A French recruitment site and an English trade site, both kept by one manager with no handover notes.
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.
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.
The project feed
For a portfolio where more than one person changes the site and nobody keeps minutes.
- 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.
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.
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 ask | Blocks the router is likely to pull | What the answer can honestly cover |
|---|---|---|
| What does a donor's domain rating mean | None | A definition, with no false precision about your site |
| Where did last week's placements land | Campaign | The links recorded against this project |
| Do our two language versions target the same terms | Search Console, rank tracking, custom | What each version was actually shown for |
| Should we rename this product line | Search Console, custom | Evidence 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.
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.
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.
The full chronology
Everything in order, for reconstructing a period rather than finding one item.
- Answers "what happened in March"
Placements only
Every backlink recorded against the project, each with its donor's rating and traffic.
- Compare what each version received
Documents and exports
Reports and uploads separated from conversation, so a file is found without scrolling.
- Confirm which version a figure came from
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.
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.
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.
- 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 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.
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.
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 approach | What it looks like | How it behaves after a handover |
|---|---|---|
| Flat, by language | fr, en | Understood instantly; survives every reorganisation |
| Flat, by role | brand, product, archive | Stable, because roles change less often than teams |
| Deep, by hierarchy | marketing / web / fr / product | Breaks at the first reorganisation, then is wrong silently |
| Deep, by phase | 2026 / q1 / migration / fr | Accurate 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.
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.
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.
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.
| When | What you do | Where |
|---|---|---|
| Monday, 15 min | Move deferred items that are now due into active | To-do filter |
| Monday, 10 min | Read last week's placements and their donor ratings | Links filter |
| Wednesday, 20 min | Compare the two language tags on one view; note any divergence | Tags as global filter |
| Thursday, 10 min | Ask one narrow question; leave the answer in the record | Stream |
| Friday, 15 min | Export the scoped report, send it, record what was decided | Report builder |
| Month end, 1 hour | Search each product name in both languages; find the neglected side | Full-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.
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.