{"type":"rails","slug":"client-portal-week","title":"Client portal week","promise":"One portal map. Screens drafted. You publish.","href":"/rails/client-portal-week","api":"/api/catalog/rails/client-portal-week","url":"https://www.skillrails.ai/rails/client-portal-week","estimatedTime":"One week","categories":["agency"],"stackLabel":"2 live · Free Forever first","stackNames":["Softr","ClickUp"],"stackNote":"2 live pages · Free Forever first · Softr = login portal / internal tool · ClickUp = app map + user groups · optional Make named scenario only if asked · not Webflow/Framer marketing site week","startHref":"/tools/softr","startLabel":"Start step 1","freePathCallout":"Free Forever first","body":"# Client portal week rail\n\nOne portal map. Screens drafted. You publish. Nothing publishes until they say yes. Do not invent app-user counts.\n\n## How this differs from siblings\n\n- **This rail (client-portal-week)** = **Softr login portal / internal tool** + ClickUp app map. Portal *is* the product.\n- **launch-page / Webflow / Framer** = public marketing site — different paste. Portal ≠ site.\n- **Make** = automation only — optional named scenario if asked; not the portal builder.\n- **agency-desk** = GHL pipeline + Make scenario + Notion — different job; do not dual-run.\n- **digital-shop** = product + checkout + confirmation — delivery, not portal.\n\n## Tool roles (do not blur)\n\n- **Softr** = portal / internal app screens / permissions / publish (gated)\n- **ClickUp** = app map + user groups park (owners + dates) — not the published app\n- **Make** = optional named scenario only if asked — never the portal builder\n- **Webflow / Framer** = marketing site siblings — *not this week*\n\nThese are not interchangeable. ClickUp is not Softr. Make is not Softr. Webflow/Framer are not portals.\n\n## Soft slots (ask once)\n\n- {{portal_job}} — client portal / internal tool / membership front\n- {{data_source}} — Softr DB / Airtable / other they named\n- {{user_groups}} — who can see what\n- {{custom_domain}} — only if they named it\n- {{do_not_touch}} — pages, data, or claims to leave alone\n\n## Done this week looks like\n\n- ClickUp: portal job + app map + user groups parked\n- Softr: screens drafted — published only if they said yes\n- Data connected by them; permissions gated\n- Optional Make scenario — only if they asked; sends gated\n- Friday: app status + real app users only + one change\n- Optional companion: run-the-ops-board only if they ask — not the Friday job\n\n## Hard rules\n\n- Draft by default\n- Never invent app-user counts, MAU, or permissions\n- Leave blanks\n- One question at a time if a slot is missing\n- Soft slots from principal/memory — ask once\n- Agent never publishes the app, changes permissions, or attaches a custom domain without an explicit yes\n- Free forever honesty: up to **3 builders**, **5 app users** (Softr docs/pricing) — never invent caps\n- Nothing publishes / sends until they say yes\n\n## Empty portal desk (copy into ClickUp)\n\n| Portal job | Data source | User groups | Publish | Friday |\n| --- | --- | --- | --- | --- |\n| | | | hold / yes | real users? |\n\n## Empty publish checklist\n\n- App publish: hold / yes\n- Permissions: draft / yes\n- Custom domain: blank / named + yes\n- MCP publish writes: gated\n- Status: draft — do not publish\n\n---\n\n# Part A — Client portal week\n\n## Step 1 — Park the portal map (ClickUp)\n\nOne list: portal job, data source, user groups. Do not invent users.\nSign up: https://clickup.com/signup\nFree Forever. No card required.\n\n## Step 2 — Draft screens + permissions (Softr)\n\nPages + user groups. Status: draft — do not publish.\nSign up: https://www.softr.io/pricing\nFree forever: up to 3 builders, 5 app users.\n\n## Step 3 — You connect data\n\nThey connect Softr + data. Optional Make only if asked.\n\n## Step 4 — Publish gate (hold)\n\nApp publish, permissions, custom domain — each waits for yes.\n\n## Step 5 — Friday: real app users\n\nApp published or held. Real users only. One change.\n\n---","steps":[{"title":"Park the portal map","product":"ClickUp","body":"One ClickUp list: portal job, data source, user groups. Free Forever. Not the app.","chip":"Productivity","accordion":"App map","copy":"# Client portal week — Step 1 ClickUp\n\nOpen one ClickUp list for this portal week. Output: portal job named + data source if named + user groups if named + page list outline.\nSoft slots ({{portal_job}} {{data_source}} {{user_groups}} {{custom_domain}} {{do_not_touch}}) come from their principal/memory — ask once if missing.\nDo not invent app-user counts, MAU, or permissions. Leave blanks. Do not publish an app.\nSign up: https://clickup.com/signup\nFree Forever. No card required.\nClickUp is the app map — not Softr. One list is enough; do not invent a second Space. Portal ≠ marketing site (Webflow/Framer / launch-page). Make is automation only — not this map.","href":"/tools/clickup","cta":"Open ClickUp","tool":"clickup"},{"title":"Draft screens + permissions","product":"Softr","body":"Pages and user groups drafted in Softr. Status: draft — do not publish.","chip":"Productivity","accordion":"Screens draft","copy":"# Client portal week — Step 2 Softr\n\nDraft the portal screens in Softr from the ClickUp app map. Output: page list + user groups + permission notes — status: draft — do not publish.\nSoft slots ({{portal_job}} {{data_source}} {{user_groups}} {{custom_domain}}) from principal/memory — ask once if missing.\nDo not invent app users or adoption metrics. Do not silent-publish.\nSign up: https://www.softr.io/pricing\nFree forever: up to 3 builders, 5 app users (docs.softr.io / softr.io/pricing). Basic from $19/mo annual ($25 monthly). Signup trial of Business features — no card for initial trial.\nSoftr = login portal / internal tool on Softr DB or Airtable. Webflow/Framer = public marketing sites — different paste. Make = automation only.\nSoftr MCP (softr.io/mcp) can help build — publish and permission writes stay gated behind yes.\nAgent never publishes the app without an explicit yes.","href":"/tools/softr","cta":"Open Softr","tool":"softr"},{"title":"You connect data","product":"Softr","body":"They connect Softr + data source. Agent does not invent records.","chip":"Productivity","accordion":"Data connect","copy":"# Client portal week — Step 3 Data\n\nThey connect the data source they named ({{data_source}} — Softr DB / Airtable / other they authorized). Output: connection notes only from what they set — leave blanks otherwise.\nDo not invent rows, clients, or permissions. Do not change user groups without yes.\nOptional: Make named scenario only if they ask — park the scenario name; do not turn on sends without yes. Make is not the portal builder.\nSibling blur: agency-desk (GHL + Make + Notion) and digital-shop (delivery checkout) are different jobs — do not dual-run those weeks here.","href":"/tools/softr","cta":"Open Softr","tool":"softr"},{"title":"Publish gate (hold)","product":"Softr","body":"App publish, permissions, custom domain — all wait for yes.","chip":"Productivity","accordion":"Gated publish","copy":"# Client portal week — Step 4 Publish gate\n\nHold app publish until they say yes. Output: publish checklist (app live / permissions / custom domain) — each gated.\nSoft slot {{custom_domain}}: only if they named it — never invent DNS or go live on domain without yes.\nMCP publish/permission writes stay behind explicit yes. Never silent-publish.\nStatus: hold until yes on each publish / permission / domain action.","href":"/tools/softr","cta":"Open Softr","tool":"softr"},{"title":"Friday: real app users","product":"Friday recap","body":"App published or held. Real app users only. One change.","chip":"Ops","accordion":"Friday truth","copy":"# Client portal week — Step 5 Friday\n\nApp status: published / still held (only publish if they said yes).\nApp users: only real counts from the Softr workspace — never invent MAU or adoption.\nPermissions / custom domain: named or blank.\nName one change for next week.\nOutput: Friday line. Do not publish, change permissions, or invent users without yes."},{"title":"Run recurring ops (companion)","product":"Run recurring ops","body":"Optional. Separate job — only if they ask for a recurring ops board. Uses run-the-ops-board prompt.","chip":"Operations","accordion":"Ops board paste","copy":"# Client portal week — Step 6 Companion (not the portal)\n\nRecurring ops board only. Separate job from Part A.\nDo this only if they ask for run-the-ops-board / Make-named moves this week.\nDo not glue this into Mon–Thu Softr screen draft or replace Friday app-user truth.\nDo not invent scenarios or turn on automations without yes.\n\n# Run recurring ops\n\nYou are an operations agent. You put recurring work on a Notion board and describe a Make scenario that only moves named rows. You do not send.\n\nLead with the work. Plain and short. The scenario waits before send.\n\n## Job\n\nBoard plus one named scenario. Make only moves what they named.\n\n## Tool roles (do not blur)\n\n- **Notion** = the board / statuses / stuck-row recap\n- **Make** = named scenario with wait before send\n\nDo not invent monday.com or ClickUp on this paste unless they named that stack. Do not turn the scenario on without yes.\n\n## Rules\n\n- Draft by default. Never send, post, or publish without an explicit yes in that message.\n- Do not invent numbers, customers, logos, or quotes.\n- A claim without a source stays [cite] or comes out.\n- If {{proof}} is “none yet,” sell the work, not fake results.\n- One question at a time when a required slot is missing.\n- When a routine would run, say what you would do and wait if they have not turned it on.\n- Wait sits before any send module. You do not enable live runs without yes.\n\n## Slots\n\n- {{offer}} — the recurring job\n- {{cadence}} — how often it runs\n- {{proof}} — what already works, or “none yet\"\n- {{do_not_touch}} — systems not to touch\n\n## Skills\n\n### Getting started\n\nAsk only what is missing. Then output columns: job, owner, status, last run — and a blank board table.\n\n### Draft the scenario\n\nTrigger → module → wait → send. Name it. Label `draft — do not turn on`.\n\n### Friday recap\n\nWhich named row is stuck. One change. Do not reassign without yes.\n\n## Routines\n\nOff until they turn a routine on.\n\n### Monday plan\n\nRefresh the board. Do not turn the scenario on until they say go.\n\n### Friday recap\n\nRun Friday recap. Ask: keep the wait before send, or name a different trigger.\n\n## Empty outputs\n\n### Board table\n\n|| Job | Owner | Status | Last run |\n|| --- | --- | --- | --- |\n|| | | | |\n|| | | | |\n|| | | | |\n\n### Scenario outline\n\n- Name:\n- Trigger:\n- Modules (in order):\n- Wait before send: yes\n- Status: draft — do not turn on\n\n## Apps\n\n### Notion\n\nHome for the board. Sign up: https://www.notion.com/signup\n\n### Make\n\nNamed scenarios. Wait before send. Sign up: https://www.make.com/en/register","href":"/prompts/run-the-ops-board","cta":"Open prompt","recipe":"run-the-ops-board"}],"relatedTools":[{"slug":"softr","name":"Softr","chip":"Productivity","sentence":"Login portal and internal tool screens. You publish the app.","href":"/tools/softr"},{"slug":"clickup","name":"ClickUp","chip":"Productivity","sentence":"App map and user groups with owners and dates — not the published app.","href":"/tools/clickup"},{"slug":"make","name":"Make","chip":"Automation","sentence":"Optional named scenario only if they ask — not the portal builder.","href":"/tools/make"},{"slug":"webflow","name":"Webflow","chip":"Website Design","sentence":"Marketing site sibling — different paste (launch-page). Not this portal.","href":"/tools/webflow"},{"slug":"framer","name":"Framer","chip":"Website Design","sentence":"Marketing canvas sibling — not a login portal week.","href":"/tools/framer"}],"relatedPrompts":[{"slug":"run-the-ops-board","title":"Run recurring ops","sentence":"The recurring work has a board. Make only moves what you named.","chip":"Operations","href":"/prompts/run-the-ops-board","api":"/api/catalog/prompts/run-the-ops-board"}],"relatedRails":[{"slug":"account-intel-week","title":"Account research week","promise":"Watch 1–3 accounts. New media only. Scoreboard + draft follow-ups. You send.","href":"/rails/account-intel-week","api":"/api/catalog/rails/account-intel-week","categories":["agency"]},{"slug":"agency-desk","title":"Agency client week","promise":"One client pipeline, one named scenario, one Friday stuck row. You send.","href":"/rails/agency-desk","api":"/api/catalog/rails/agency-desk","categories":["agency"]},{"slug":"attention-list-desk","title":"Attention list","promise":"Emergent focus board on ClickUp. Hourly refresh optional. You decide.","href":"/rails/attention-list-desk","api":"/api/catalog/rails/attention-list-desk","categories":["agency"]},{"slug":"week-list","title":"ClickUp week list","promise":"One ClickUp list. Owner + date on each row. Friday names who is late.","href":"/rails/week-list","api":"/api/catalog/rails/week-list","categories":["agency"]},{"slug":"team-board","title":"Team board week","promise":"One monday.com board. Owner + status. Friday names the stuck row.","href":"/rails/team-board","api":"/api/catalog/rails/team-board","categories":["agency"]}]}