Est.

How to Build a Client Portal Using Claude Without Hiring an Agency

Claude and persistent infrastructure let solo founders build client portals in days.

· 11 min read
Cover illustration for “How to Build a Client Portal Using Claude Without Hiring an Agency”
App Building Tutorials · October 7, 2026 · 11 min read · 2,475 words

A client portal that once took an agency months and cost $25,000 to $100,000 can now be built by a single founder in days, using Claude and an MCP-native infrastructure platform. That shift matters because the bottleneck was never the idea for the portal. It was always the time and money required to turn the idea into working software with a database, logins, and file storage behind it.

Claude closes that gap by turning a plain-language description into a working prototype: it handles database structure, builds input forms, and wires up conditional notifications without anyone touching code. Sean Winter, founder and CEO of AscendAI, built a client portal this way while running sales, marketing, and client delivery at the same time. The speed of Claude's development loop let a small team do something close to actual multitasking. Instead of waiting weeks for a developer to turn around a change, a founder can describe a client's request in a chat window and see it reflected in the product the same day.

But none of that works if the app Claude generates forgets everything the moment someone refreshes the page. Claude's native output runs in browser memory by default, and without persistent infrastructure wired in from the first prompt, a client's uploaded file or approved request can vanish. Solving that is the real work of building a portal in 2026, and it's the problem the rest of this piece walks through.

What a client portal needs before the first prompt

Founders who scope a portal by listing features tend to miss the parts that make a portal trustworthy. Mapping the client's actual journey through the product, start to finish, catches the gaps that feature lists don't.

A complete first journey runs through several decisions: how a client gets invited and activates an account; how someone who works with multiple clients selects the right organization; what shows up on a dashboard, limited to items that actually need action; how a request displays its status, due date, owner, and instructions; how a file gets uploaded against that request, with access locked to the right organization; how staff review that file and respond in a way the client can see; how notification preferences get set and logged as an audit event; and how a client can export proof that the work got done. Each of those is a decision to make before Claude writes a line of anything, not a feature to request afterward.

Turning each step into a testable acceptance criterion catches problems that vague feature descriptions hide. "File upload works" doesn't tell anyone what to check. "A client member can upload PDF, DOCX, XLSX, PNG, and JPG files up to 25 MB to their organization; an unsupported type is rejected; another organization cannot list or download the object" gives Claude, and whoever tests the result, something concrete to verify.

Several features belong in a second release, not the first: live chat, AI summaries, electronic signatures, complex analytics, localization, and custom subdomains. None of them should delay proof that the core workflow works and that one client's data stays walled off from another's.

The assumption most AI-build tutorials skip over is data quality. A portal built on messy client records, duplicate entries, or inconsistent naming doesn't clean any of that up. It puts the mess on a screen where the client can see it too.

The infrastructure problem Claude alone cannot solve

Claude's code generation is genuinely powerful, but a portal that loses a client's data on refresh, or lets one client see another client's files, is a liability sitting in front of real customers.

The default behavior of Claude's generated apps is to hold everything in browser memory. A page refresh can erase a client's uploads, approvals, and history in an instant without a persistent data layer behind the interface. That's a serious risk for anything meant to hold real business records.

The authorization layer is the single most consequential piece of an AI-assisted portal build, and the one most often skipped. Role-based access control assigns permissions through defined roles, like "client admin" or "read-only member." Resource-level authorization governs whether a specific user can act on a specific project or file, a layer deeper than whether they're logged in. Row Level Security pushes the boundary down to the database itself, restricting which rows a given identity can read or change regardless of what the interface shows them.

Generated code still needs inspection and testing before it goes live. An AI builder writes the code, but it doesn't certify that code as secure or compliant with any regulation a given business might answer to.

That's exactly the gap MCP-native infrastructure platforms are built to close, by giving Claude a real, persistent backend to write to instead of a browser tab.

How MCP connectors bridge Claude to persistent infrastructure

The Model Context Protocol is what turns Claude from a tool that generates code into a tool that builds and runs a working app with a real backend. A founder doesn't need to understand the protocol's internals to use it well. Knowing what it does is enough.

MCP connects Claude to files, databases, APIs, and business tools through a standardized protocol. A Claude Connector is an MCP server that exposes tools returning structured data, linked to Claude through an HTTPS endpoint. In plain terms: MCP is the pipe running between Claude's conversation window and the infrastructure that actually stores data, manages logins, and keeps an app running after the browser closes.

Non-technical builders have three practical ways to set this up: installing a Claude Desktop extension, configuring a local server, or adding a remote connector that works across Claude clients. The remote connector path asks for no terminal work at all, and it runs across Free, Pro, Max, Team, and Enterprise Claude plans alike.

An MCP-native platform makes a portal production-ready by adding backend logic, database storage, user authentication, recurring tasks, email notifications, and scalable hosting, all handled automatically, on top of the raw protocol. The founder stays in the conversation with Claude instead of switching over to configure servers or write deployment scripts.

Floot is one MCP connector built specifically for this kind of work. It plugs directly into Claude and other AI tools, manages the technical stack in the background, and produces a live app at its own shareable link from a single conversation, with a large and growing base of users and apps already running on it. The real speed gain in a build like this comes less from Claude's code generation alone and more from having that infrastructure layer already wired in. Platforms built this way remove the DevOps work that used to stretch a solo founder's timeline from days into weeks, making same-day iteration on a client's feedback realistic.

The step-by-step build: from first prompt to live portal

Building the portal itself is a sequence of conversations with Claude, each one layering on more capability. The infrastructure underneath causes each addition to stick, so it persists through the next refresh.

Step one is describing the portal in plain language. Write out the five tasks clients perform most often, and use that as the first prompt. A more detailed description up front means less back-and-forth correcting course later.

Step two is to define the data model before Claude generates any schema. Decide what a "client," a "request," and a "file" mean specifically in the business being built. Claude will infer a structure on its own, but naming these entities explicitly up front produces a cleaner result than leaving it to guesswork.

Step three is to add authentication first, before any other feature gets built. Ask Claude, through the MCP connector, to set up login with role separation from the start. Doing this early avoids retrofitting permissions into a data model that's already been built around different assumptions. Magic Link or Google login is the fastest path for a client-facing portal. Before building anything else, test isolation directly: log in as a test client, try to access another client's records by changing a URL parameter, and confirm the attempt gets denied.

Step four is building the client dashboard. Prompt Claude to generate a view that shows only the items a logged-in client actually needs to act on: the status of outstanding requests, files awaiting review, and any approvals still pending.

Step five is adding file upload with protected storage. Prompt for uploads limited by file type and size, linked directly to the requesting client's record, and inaccessible to any other organization. Confirm the upload shows up correctly in an audit log.

Step six is adding status updates and notifications. Claude's integration prompts can connect an app directly to email notifications without writing any code. Prompt for a notification that fires when a staff member changes a request's status.

Step seven is testing denial paths, not just the paths where everything works. Simulate a removed member, an expired link, and a user logging in from a different client organization. The portal isn't ready until all three get denied cleanly, every time.

Step eight is going live. With MCP infrastructure like Floot's behind the build, the result is a live app sitting at its own shareable link, with no deployment configuration and no separate DevOps sprint required to get there.

The integrations that make a portal useful day-to-day

If a founder still has to manually update statuses, send status emails, and chase overdue payments by hand, the portal hasn't actually saved much time. The integrations connected to it are what close that loop.

Email notifications are the simplest place to start. Claude's integration prompts can connect an app directly to email services without any code involved, so a founder can prompt for triggers on status changes, file uploads, and new client approvals as the portal is being built.

Automation tools come down to a real tradeoff between Zapier and n8n. Zapier charges by the step, called a "task," so a multi-step workflow that runs often burns through tasks quickly. Its Free tier covers only two-step Zaps, one trigger paired with one action. For most of what a portal needs automated, like status-change triggers, file-received alerts, and client onboarding sequences, Zapier Free handles it fine as long as the workflow stays simple. As the automation gets more complex, n8n becomes the cheaper option to run.

Billing is where Stripe fits in. It's the most capable option for handling payments, with the broadest ecosystem of developer tools built around it, and it charges a small percentage plus a flat fee per transaction with no monthly fee on its standard plan. Stripe Billing is available as an optional add-on, charged as a percentage of billing volume, for portals that need recurring invoicing. Prompting Claude to add a Stripe payment link to invoice records inside the portal is a one-step addition once the Stripe account is connected.

Google login deserves a place on this list too, separate from the general authentication work done in step three. It's the fastest path to onboarding a new client, since it removes password friction and cuts down on activations that get abandoned halfway through. Prompting Claude to add Google OAuth as the primary login method is worth doing even if Magic Link is offered as a backup.

All-in-one infrastructure versus stitching services together

The stitched-together approach, built from separate no-code and low-code tools, is a real option, and it works for plenty of founders. No-code platforms have matured enough that a non-technical founder can assemble something functional. The costs involved are concrete: tool subscriptions that typically run $50 to $300 a month, design work if a freelancer gets brought in, and the integration overhead of connecting everything through Zapier or a similar automation tool.

This approach gets expensive through the time it costs, not the subscription fees. Adding user accounts, multi-role permissions, Stripe billing, and the flows that connect them takes longer than most founders expect going in, because these pieces are foundational to the product. Founders stitching separate tools together should plan for weeks of additional engineering time before the implementation is actually complete.

An all-in-one platform takes a different approach: one prompt generates the frontend interface, the backend logic, the database schema, authentication, and deployment together, as a single system. That contrasts with tools that produce a polished-looking frontend that still needs a backend wired up separately before it does anything useful. The pricing structure differs too. Per-seat pricing climbs steadily as more clients get added to a portal, while per-app pricing stays flat and predictable, a distinction that starts to matter as soon as a portal grows past a handful of clients.

Confirm ownership before committing to any platform. Some platforms give founders full ownership of the generated code, with a complete source download and no lock-in to that vendor, so an operations person can start building in the browser and a developer can pick up the downloaded codebase later if the product needs custom engineering down the line. Before you build anything substantial on top of a given platform, confirm that export path exists.

This is where an MCP connector like Floot earns its place in the comparison: backend, database, hosting, authentication, and integrations come included by default rather than bolted on afterward, and the founder never has to manage a separate stack of services. The cost of the stitched alternative is the ongoing cognitive load of maintaining several connected services instead of one, beyond the subscription fees adding up.

Both paths are legitimate. Packaged, off-the-shelf client portal software is often the faster choice when a business's requirements are standard and don't differ meaningfully from what a hundred other companies need. Building custom makes sense when the portal is actually part of how the business differentiates itself, through a distinctive approval workflow, account-specific data pulled from an internal system, or a white-labeled subdomain a client sees as part of the brand relationship.

What separates a portal that holds up

The founder who ships a portal clients actually trust is the one who did the groundwork before that first conversation ever started.

Four disciplines separate a portal that holds up under real client use from one that falls apart the first time something unexpected happens. Mapping the full client journey before scoping any feature, so the build reflects how clients actually move through the product. Treating authentication and Row Level Security as the first feature built, not an afterthought retrofitted once the data model already exists. Writing testable acceptance criteria for every piece of functionality, so "it works" means something specific and checkable. And testing denial paths as rigorously as success paths, confirming that a removed member, an expired link, and a user from another organization all get turned away cleanly, every time.

The real lesson of a story about speed is that the speed is only usable if the foundation holds up under it.

More in App Building Tutorials