Product owner manual

Everything you need to run Throughline as the platform owner.

This is the complete operating manual for the admin side of Throughline — agencies and signup, managing users, curating the roadmap, and keeping tenant data safe. Bookmark this page; it's the reference for every administrative task.

Agencies & signup

Open Signup →

Agencies are self-serve — any new user can create one instantly or join with a teammate's code.

  1. 1New users who sign in without an agency see the signup gate.
  2. 2They name their agency — a unique code is minted instantly and their private workspace is created.
  3. 3Teammates join by entering that code on the same screen.
  4. 4The code appears next to the agency name on their dashboard, and in the Admin Dashboard below.

Good to know — Codes are generated server-side and are unguessable. Never reuse a code across two agencies — data isolation depends on it.

Managing users & agency membership

Open Dashboard →

Assign roles, move users between agencies, and onboard teammates into an existing agency.

  1. 1Open the Admin Dashboard to see every registered user.
  2. 2Find the row and click Edit to change role or agency.
  3. 3Promote to admin for full platform access, or keep as user for agency-scoped access.
  4. 4Pick an existing agency from the dropdown, or enter a code manually for a new one.
  5. 5Save — the change is live immediately.

Good to know — Platform-level admins bypass all tenant checks. Only grant admin to people who should see every agency's data.

Curating the public Roadmap

Open Roadmap →

Seed platform-wide feature ideas, update statuses, and keep the board tidy for upvoters.

  1. 1Add feature suggestions with a clear title, description, and category — leave agencyId empty to make them platform-wide.
  2. 2Set status to considering → planned → in_progress → launched as work progresses.
  3. 3Users upvote ideas; the list auto-sorts by vote count.
  4. 4Delete spam or off-topic suggestions to keep signal high.
  5. 5Launched features should be marked launched and left on the board so voters see follow-through.

Good to know — Platform-wide features (empty agencyId) are visible to every logged-in user. Agency-scoped ones only show within that tenant.

Data, tenants & row-level security

How Throughline keeps one agency's data invisible to another — and where to be careful.

  1. 1Every entity (Campaign, Article, Pitch, etc.) carries an agencyId field set on creation.
  2. 2Read, update, and delete rules check agencyId against the user's agencyId — or allow platform admins.
  3. 3Campaign, MessagingDoc, and the rest all inherit the creator's tenant context.
  4. 4If a user reports missing data, check their agencyId in the Admin Dashboard first.
  5. 5Never manually blank out an agencyId on a live record — it widens visibility to every tenant.

Good to know — The only entity with platform-wide reads is FeatureRequest, which intentionally shows empty-agencyId records to everyone.

Find coverage

How Find coverage searches the web, adds and scores what it finds, and records what it left out.

  1. 1Find coverage (Campaign → Coverage) calls the FindCoverage backend function. It needs the campaign's messaging document, because every find is checked against it.
  2. 2The search step calls SearchCoverage for independent coverage of the announcement, drops URLs already on the campaign, saves the rest as MonitoringCandidate records with status pending, and stamps lastMonitoredAt on the Campaign.
  3. 3Each pending candidate is then processed in its own call: the article is read, and an AI check decides whether it is an article about the announcement, a mention of it, or neither. Up to eight are processed per press.
  4. 4Articles and mentions are saved as Article records (coverageKind article or mention) and scored with the same rules as a pasted URL; the candidate is marked added. Anything else is marked rejected with the reason and shown under Left out, where Add anyway forces it in.
  5. 5Not coverage on an article sets notCoverage: the record stays, but it is left out of every count and the shared client report, and can be put back from Left out.
  6. 6Check automatically (Campaign → Coverage) stores monitoringEnabled and monitoringCadence on the Campaign, and sets a campaign still in Setup to Active. The CheckCampaigns backend function is run once a day (06:07 UTC) by a Base44 workflow named Daily coverage check (Base44 → Workflows), which can be paused there. For each campaign that is switched on, Active and within 30 days of its announcement date (embargo date, else creation date), it searches when a daily or weekly check is due, then reads up to eight finds per check. One run has about three minutes of work in it, so with many campaigns switched on the last ones wait until the next day.
  7. 7Articles added by the scheduled check are saved with unseen set. They show as New on the campaign list and the Coverage tab, and are left out of the shared client report until someone in the agency opens the Coverage tab, which clears the mark. Throughline sends no email about them.
  8. 8CheckCampaigns takes no input and only runs for an app admin: the Daily coverage check workflow calls it as the admin who owns it, and anyone else is refused before any search or reading starts.

Good to know — Candidates carry an agencyId like every other entity. Dismissed and added candidates remain on the record as a history of what monitoring surfaced — clearing them is safe but loses that trail.

Shared client reports

How clients receive read-only reports, and how to revoke access.

  1. 1From any campaign, the owner clicks Share Report in the campaign sidebar to mint a share token.
  2. 2The shareable URL is /report/:token — no login required, fully read-only.
  3. 3To revoke access, clear the campaign's shareToken from the campaign record.
  4. 4The report pulls live data, so it always reflects the latest coverage and fidelity scores.

Good to know — Anyone with the link can view the report until the token is cleared. Treat the link as a credential.

Onboarding a new admin

How to bring a second product owner onto the platform with full admin rights.

  1. 1Invite the user from the Base44 workspace so they register first.
  2. 2Open the Admin Dashboard and find their row.
  3. 3Click Edit and set their role to admin.
  4. 4Leave agencyId blank — platform admins don't need a tenant assignment.
  5. 5Confirm they can see the Users and Dashboard links in-app.

Good to know — Admins can see and edit every agency's data. Only promote people you'd trust with the full tenant roster.

Things to be careful about

  • Never reuse an agency code across two different agencies — it merges their data.
  • Don't blank an agencyId on a live record; it exposes that record to every tenant.
  • Clearing a campaign's shareToken is the only way to revoke a shared client report link.
Throughline — PR Campaign Intelligence · Admin Manual

We use essential cookies to run the site and optional analytics cookies to understand usage. You can accept or reject analytics — see our Cookie Policy.