Portal branding and access
Create a recognizable client workspace with explicit access to each shared project.
Share project documents, collect client decisions and keep conversations together.
Illustrative records derived from the system specification.
Client services teams and project managers sharing work with external customers.
Defined in the planned system specification.
Share project documents, collect client decisions and keep conversations together.
Create a recognizable client workspace with explicit access to each shared project.
Publish the right version of a document and see whether its intended recipients have acknowledged it.
Ask a named client approver for a decision with the relevant evidence and a traceable outcome.
Share a consistent project update with exactly the audience that should receive it.
Keep feedback attached to the document, request or update the conversation is about.
Find stalled approvals and inactive client accounts while preserving a useful decision trail.
| Share Number | Document Name | Category | Portal Project | Published At |
|---|---|---|---|---|
| DS-96451 | Document 896 | Deliverable | PP-3433 | 05 Sep |
| DS-43860 | Document 501 | Invoice | PP-2327 | 27 Sep |
| DS-34124 | Document 895 | Contract | PP-3562 | 21 Sep |
| DS-11286 | Document 572 | Report | PP-8855 | 14 Sep |
| DS-38888 | Document 756 | Reference | PP-9641 | 08 Sep |
| DS-95682 | Document 373 | Other | PP-5005 | 20 Sep |
| Posted At | Parent Type | Portal Project | Author Client User | Author Internal User |
|---|---|---|---|---|
| DocumentShare | PP-2886 | GK | AIU-378 | |
| ApprovalRequest | PP-4603 | LR | AIU-370 | |
| StatusUpdate | PP-1143 | WZ | AIU-379 | |
| DocumentShare | PP-5825 | NN | AIU-639 | |
| ApprovalRequest | PP-5299 | UD | AIU-496 | |
| StatusUpdate | PP-1444 | EC | AIU-571 |
| Client User | Purpose | Target Table | Issued At | Expires At |
|---|---|---|---|---|
| JP | InviteSetup | TT-995 | 12 Sep | 21 Sep |
| DV | DocumentView | TT-378 | 12 Sep | 20 Sep |
| KC | ApprovalAction | TT-187 | 05 Sep | 14 Sep |
| KY | StatusUpdateView | TT-258 | 03 Sep | 12 Sep |
| WJ | DigestOpen | TT-467 | 09 Sep | 14 Sep |
| JD | InviteSetup | TT-962 | 06 Sep | 12 Sep |
| Update Number | Title | Portal Project | Health Flag | Published By |
|---|---|---|---|---|
| SU-62280 | Draft su-268 | PP-7900 | OnTrack | PB-138 |
| SU-21300 | Published su-283 | PP-7523 | AtRisk | PB-696 |
| SU-33183 | Archived su-769 | PP-2335 | OffTrack | PB-510 |
| SU-40488 | Draft su-968 | PP-3746 | Complete | PB-139 |
| SU-69407 | Published su-369 | PP-8994 | OnTrack | PB-612 |
| SU-70214 | Archived su-951 | PP-6269 | AtRisk | PB-739 |
| Occurred At | Client User | Activity Type | Related Table | From IP |
|---|---|---|---|---|
| 15 Sep | EJ | Login | RT-325 | FI-850 |
| 10 Sep | JF | LoginFailed | RT-937 | FI-718 |
| 01 Sep | AN | MagicLinkRedeemed | RT-206 | FI-200 |
| 05 Sep | BM | DocumentDownloaded | RT-626 | FI-766 |
| 09 Sep | MR | ApprovalSubmitted | RT-449 | FI-340 |
| 21 Aug | HV | CommentPosted | RT-812 | FI-424 |
| Full Name | Portal Site | Client Role | Invited By | |
|---|---|---|---|---|
| Full 930 | [email protected] | PS-3167 | Approver | IB-154 |
| Full 125 | [email protected] | PS-4787 | Collaborator | IB-499 |
| Full 552 | [email protected] | PS-7377 | Viewer | IB-705 |
| Full 361 | [email protected] | PS-5615 | Approver | IB-169 |
| Full 992 | [email protected] | PS-8921 | Collaborator | IB-488 |
| Full 238 | [email protected] | PS-8305 | Viewer | IB-920 |
| Full Name | Portal Site | Client Role | Account | |
|---|---|---|---|---|
| Full 248 | [email protected] | PS-6452 | Approver | ACC-931 |
| Full 688 | [email protected] | PS-4497 | Collaborator | ACC-644 |
| Full 477 | [email protected] | PS-2751 | Viewer | ACC-393 |
| Full 323 | [email protected] | PS-9110 | Approver | ACC-234 |
| Full 910 | [email protected] | PS-4329 | Collaborator | ACC-885 |
| Full 596 | [email protected] | PS-4762 | Viewer | ACC-687 |
When a client engagement winds down or a ClientUser leaves the customer side, Portal Manager flips ClientUsers.Status: Active → Suspended (temporary) or Deactivated (permanent).
| Portal Code | Name | Account | Subdomain Slug | Custom Domain |
|---|---|---|---|---|
| PC-539 | Site 281 | ACC-549 | SS-294 | CD-543 |
| PC-803 | Site 504 | ACC-389 | SS-446 | CD-382 |
| PC-628 | Site 498 | ACC-775 | SS-270 | CD-689 |
| PC-341 | Site 146 | ACC-163 | SS-796 | CD-264 |
| PC-352 | Site 528 | ACC-598 | SS-591 | CD-439 |
| PC-886 | Site 577 | ACC-840 | SS-422 | CD-345 |
Per Account × PortalSite × ClientUser: 30-day login count, document downloads, approvals submitted, comments posted. Drills from Account into ClientUser into the per-event ClientActivities grain. The Account Manager's daily landing report.
opens Inactive Client Users (60+ days) →| Full Name | Portal Site | Client Role | Account | |
|---|---|---|---|---|
| Full 248 | [email protected] | PS-6452 | Approver | ACC-931 |
| Full 688 | [email protected] | PS-4497 | Collaborator | ACC-644 |
| Full 477 | [email protected] | PS-2751 | Viewer | ACC-393 |
| Full 323 | [email protected] | PS-9110 | Approver | ACC-234 |
owner Portal Manager
Go from the big picture to the details behind it. Open any record to see its status, owner and history.
Illustrative records. Connections and approval states follow the authored specification.
Give every client a clear place to collaborate.
Illustrative previews from the system specification.
Prepare the approved brand and project scope.
Portal setup to client accessGive each verified client the access they need.
Portal setup to client accessPublish protected work to its intended audience.
Document publishing to acknowledgmentCapture the named approver’s decision and evidence.
Give the named client approver the documents and context needed to make a clear decision.
Approval request to source updateSee unresolved decisions and relevant client activity.
Project update to client follow-upDecision checkpoints where approval stays with your team.
Give the named client approver the documents and context needed to make a clear decision.
Approval request to source updateHuman approval and system automation have different jobs.
Give the named client approver the documents and context needed to make a clear decision.
Client invitations on an authorized invitation. The client-user-invite workflow uses appEventTrigger on ClientUsers.Status: Invited → provisions OAuth / SSO entry where applicable, generates an InviteSetup MagicLinks row, sends the branded invitation email.
Document notifications on approved publication. The document-publish-notification workflow uses appEventTrigger on DocumentShares.Status: Published → resolves recipients via PortalUserAccess, creates an ActivityFeed row + per-recipient MagicLinks rows, sends branded notifications with deep-link.
Decision routing on a prepared client request. The approval-request-routing workflow uses appEventTrigger on ApprovalRequests.record.created → creates an ApprovalAction MagicLinks row, sends the branded approval email with the magic-link URL to the confirmation page.
Source updates on an explicit client decision. The approval-decision-callback workflow uses appEventTrigger on ApprovalRequests.Status: Approved or Rejected → reads SourceTable + SourceRecord, posts the decision back to the source record via integration, notifies the internal RequestedBy + Account Manager.
Project updates on approved publication. The status-update-publish workflow uses appEventTrigger on StatusUpdates.Status: Draft → Published → resolves audience via PortalUserAccess, creates ActivityFeed + per-recipient MagicLinks, fans out the branded status-update email.
Conversation notifications on a new comment or reply. The comment-thread-notify workflow uses appEventTrigger on Comments.record.created and CommentReplies.record.created → resolves thread participants + @email mentions, sends the branded comment notification (debounced once per thread per hour).
Access link expiry on the hourly check. The magic-link-expiry workflow uses scheduleTrigger hourly → bulk-flips every MagicLinks row where ExpiresAt < now AND Status = 'Active' to Status: Expired.
Engagement summaries on the weekly schedule. The client-activity-digest workflow uses scheduleTrigger weekly Monday 09:00 → emails per-Account-Manager weekly engagement digest with logins, downloads, approvals, comments rollup and inactive-user callouts.
Client reminders on the monthly activity review. The inactive-user-reminder workflow uses scheduleTrigger monthly first business day → finds ClientUsers with LastLoginAt < now − 60 days, sends branded re-engagement reminder, copies Account Manager + Portal Manager, logs a ReminderSent ClientActivities row. Integrations: inbound from Project Management (Projects + ProjectMembers for the project context the portal exposes, Tasks for status-update source data), Project Billing (Invoices rendered as read-only DocumentShares with optional ApprovalRequests routing), workflow-dms or the source document store (FileURL references used by DocumentShares.FileURL and the streamed signed-URL download), and the org's identity provider (Google / Microsoft / Okta OAuth where the PortalSite enables SSO, provisioned per OAuthProviderRef). Outbound to email (every notification + digest + approval routing), the source system that originated each ApprovalRequest (decision callback per the approval-decision-callback workflow), and the document store (signed-URL download events logged back as DocumentDownloads). The portal displays the source document currency. Apply the configured retention policy to ClientActivities and captured signatures.
Owns the ClientUsers list and access grants for one or more PortalSites. The day-to-day operator of the external user lifecycle — invitations, role changes, suspensions, access reviews.
Internal Project owner. Publishes DocumentShares, ApprovalRequests, and StatusUpdates for own projects; reads ClientUser engagement on own projects.
Customer-success operator. Watches client engagement across an account portfolio, follows up on inactive clients, escalates disengagement risk to Project Managers and Portal Manager.
Limited internal contributor — a designer, engineer, analyst, or specialist who needs to participate in client conversations on own projects but not publish artifacts.
External client user with approval authority. Acts on ApprovalRequests routed to self; reads own portal content; participates in comment threads.
External client user with comment + read access. Same scope as Viewer but can post Comments and CommentReplies.
External client user with read-only access. The default tier for client stakeholders who need visibility but no contribution rights.
Start with the question. Follow it to the records behind the answer.
Per Account × PortalSite × ClientUser: 30-day login count, document downloads, approvals submitted, comments posted. Drills from Account into ClientUser into the per-event ClientActivities grain. The Account Manager's daily landing report.
Project Manager
View Inactive Client Users (60+ days)Per ApprovalRequest type (Deliverable, ChangeOrder, Invoice, Milestone): mean and p90 hours from RequestedAt to DecidedAt, broken down by PortalProject and RequestedFromClient. Surfaces slow approvers and slow approval categories.
View My Pending Approvals (Client)Per RequiresAcknowledgment DocumentShare in the trailing 90 days: recipients, downloaded count, acknowledged count, percent acknowledged. Surfaces shares not landing with the right audience.
View Recent Document Downloads (Internal)Per Account × ClientUser: LastLoginAt, days since login, ClientRole, assigned Account Manager. The list driving the monthly re-engagement campaign.
Portal Manager
View Inactive Client Users (60+ days)Per PortalSite: total invited, activated, active-30-day, active-7-day, with invite-to-activate and activate-to-engaged conversion rates. The Portal Manager's adoption KPI.
View Active PortalSitesEvery ApprovalDecision in the period with ApprovalRequest, Type, ClientUser, Decision, SignedAt, FromIP, and the source-record callback status. The auditable decision register.
View Decision BoardPer EmailTemplate per PortalSite per week: sends, opens (via DigestOpen MagicLinks redemption), bounces (via integration callback). Surfaces template fatigue and deliverability issues.
Portal Manager
View Pending Approvals to Send (Internal)Per PortalProject in the trailing 30 days: open threads, replies, ClientUser participants, internal participants, mean time-to-first-reply. Surfaces stalled threads and disengaged projects.
Internal Collaborator
View Open Comment Threads (Internal)Let your AI agent help with everyday work. Set its permissions during setup and keep approvals with your team.
List the work that needs attention. Keep the approval with the assigned reviewer.
Download agent Agent setup guide$ curl -fsSL https://www.erp.ai/skill.md
› open Client Collaboration Portal and list records waiting on approve request
Share to decision · records listed with owner and age
› approve the first one at approve request, as its approverHow the system works, what you can configure and how to get started.
Select Start now to create your account. Explore the system specification, or use Proto to configure it for your business.
Yes. Access requires an active user, active portal and project, and an explicit project grant. APIs, downloads and notifications apply the same boundaries.
No. Only the named active approver with project approval access can decide the current unexpired request.
No. The link opens an authenticated confirmation flow. A decision needs an explicit action on the current request revision.
The source document store retains the file. The portal authorizes a protected download after checking the current audience.
Keep the RequestedChanges decision and its evidence. The project manager prepares a new request revision for another review.
The portal records the decision first and tracks the source callback separately. Failed or unknown outcomes require reconciliation before the source update is confirmed.
Suspension or deactivation removes effective access and revokes applicable outstanding links and project grants.
Configure approved BrandThemes, PortalSites and EmailTemplates. Custom domains and identity providers need the corresponding configured platform support.
Configure identity, audiences and decision evidence before inviting clients.
Read the implementation planIdentify portal owners, permitted projects, client roles and the required decision makers.
Team and ERP.aiSet up approved identity, document-storage and source callback mappings without publishing private URLs.
Team and ERP.aiExercise invitation, protected download, explicit acknowledgment, requested changes and callback reconciliation with scoped test users.
Team and ERP.aiReview branding and notification content, then activate the approved audience and monitor failed deliveries.
Team and ERP.aiThe base account and ordinary manual work in ERP.AI's official interface are $0. Viewing, searching, creating, editing, approving, deleting and exporting records in that interface do not consume read or write credits. There is no per-user fee.
Machine work: external API-key requests, imports, workflows, agents and scheduled jobs. Successful external API-key reads and writes use the operation rates below. Starting a managed execution from the interface still starts that metered service.
Pricing and account rules| Machine work | Included per $1 of credit |
|---|---|
| List/filter or get record calls | 20,000 |
| Search or aggregate calls | 4,000 |
| CSV or PDF exports | 100 |
| Record writes | 4,000 |
| Imported or synced records | 200,000 |
| File upload in MB | 2,000 |
| Workflow runs | 2,000 |
| Code-node compute beyond included in CPU-sec | 12,000 |
| Agent executions | 2,000 |
| Scheduled jobs or webhook activations | 20,000 |
Read and write rates apply to successful external API-key requests. Ordinary manual work in the ERP.AI interface is $0.
prepaid creditsSmallest pack $5, purchased credits never expire.
Follow the operating model from the process to the people, records and decisions behind it.
Use Proto to configure this system for your business. Review fields, rules and approvals before releasing changes.
Previews contain illustrative data from the system specification.
We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy
We use cookies to enhance your experience, analyze site traffic, and serve relevant content. By clicking "Accept All," you agree to our use of cookies. You can customize your preferences at any time.
Learn more about how we use cookiesThese cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.
These cookies enable additional features that enhance your experience, such as live chat, video playback, personalized content recommendations, and remembering user preferences.
These cookies help us understand how visitors interact with our site by collecting anonymous usage data. This allows us to measure performance, detect issues, and continuously improve the user experience.
These cookies allow us and advertising partners, including X, to deliver ads tailored to your interests. They track browsing habits across sites to provide relevant advertising and measure ad effectiveness.