Client Portal Counterproposal
[!NOTE] Decision input — not the current plan. This critique challenged the initial proposal and informed the revised plan. It is preserved to show the alternatives and tradeoffs considered.
Executive position
The initial client portal plan is technically coherent, but it risks solving too many infrastructure problems before the consultancy has validated its operating process or acquired enough clients to justify a custom transaction platform.
The plan combines four different objectives:
- Deliver a professional client experience.
- Operate proposals, agreements, signatures, invoices, and communications reliably.
- Learn AWS application architecture.
- Learn human-in-the-loop agentic AI workflows that can support the consultancy’s services.
Those objectives are related, but they do not need to be implemented in the same system or at the same time. Authentication, document storage, electronic signatures, invoice collection, email delivery, cloud infrastructure, and AI orchestration each introduce a separate security and operational burden. Building all of them creates substantial work before the differentiating AI workflow exists.
The recommended counterproposal is to build a thin, custom collaboration portal around managed transaction systems, while developing the AI workflow capability as a bounded, human-gated subsystem. This preserves the opportunity to learn and demonstrate agentic workflows without making experimental code responsible for the legal and financial parts of the client relationship.
What the original plan gets right
Several decisions should survive any redesign:
- Start with a small review hub rather than attempting the complete transaction flow immediately.
- Keep clients separated by organization and enforce authorization outside the UI.
- Use immutable document versions and preserve review history.
- Keep AI-generated work behind explicit human review and approval.
- Run meaningful development and tests locally.
- Use one repository with clear domain boundaries rather than starting with microservices.
- Treat email, SMS, signature, payment, storage, and AI integrations as replaceable providers.
- Avoid ECS/Fargate, NAT Gateways, load balancers, and always-on workers until usage requires them.
- Preserve the existing human-gated GitHub/Codex governance model where its controls are useful.
The critique is therefore not that the original plan is poorly designed. It is that the design may be premature relative to the business evidence available.
Primary challenges to the initial plan
1. It builds a platform before confirming the workflow
The proposed data model already assumes organizations, engagements, document participants, bilateral signers, review decisions, invoice states, notifications, and audit events. Those are reasonable abstractions, but the actual consultancy workflow may change after the first few paying engagements.
Examples of unresolved business questions include:
- Whether clients want a portal or prefer email and familiar document links.
- Whether proposals are negotiated collaboratively or mainly revised by Todd after a call.
- Whether an agreement belongs inside the proposal or follows it as a separate step.
- Whether invoices should come from the portal, Stripe, or an accounting system that becomes the financial system of record.
- Whether a client’s procurement process requires its own contract or e-signature platform.
Encoding assumptions too early creates schema and user-interface churn. A commercial clientflow product already combines portals, proposals, contracts, invoices, payments, and workflows; Dubsado and HoneyBook are examples of the category. Dubsado capabilities, HoneyBook proposal workflow
2. The AWS design is more bespoke than it appears
Amplify Hosting plus CDK plus Cognito plus Aurora Serverless v2 plus the Data API is not a simple Amplify application. It is a custom AWS system that happens to use Amplify for web hosting.
Specific friction includes:
- Amplify’s supported Next.js version can lag the current framework release.
- Production uses Aurora through the Data API while local development uses a direct PostgreSQL connection. The two paths can differ in transaction, migration, type, and query behavior.
- Production authentication uses Cognito while local authentication uses a custom development adapter.
- Production files and email use S3 and SES while local development uses MinIO and Mailpit.
- Aurora auto-pause minimizes idle cost but intentionally introduces cold-start latency into a client-facing workflow.
- CDK, GitHub OIDC, Amplify deployment sequencing, database migrations, IAM, SES approval, and recovery procedures all need operational ownership.
Each substitution is defensible. Together, they weaken the claim that local testing exercises the production system and create several boundaries that must be tested twice.
3. PostgreSQL is useful, but Aurora may be premature
PostgreSQL is a strong fit for tenants, documents, comments, status transitions, invoices, and audit history. The critique is not the database model; it is choosing Aurora and the Data API before workload or availability requirements justify them.
Aurora introduces AWS-specific deployment, connection, wake-up, backup, and cost behavior. A managed PostgreSQL platform such as Supabase can provide PostgreSQL, authentication, storage, migrations, and a local Docker-based stack together. Its CLI runs local Postgres, Auth, Storage, and SMTP-related development services, reducing the number of custom local substitutes. Supabase local development
The tradeoff is greater dependency on one managed platform, less AWS-specific learning, and a future migration if AWS consolidation becomes important.
4. Hand-rolled signing has unfavorable risk-to-learning value
Capturing consent text, identity, document hashes, timestamps, IP addresses, and user agents is a useful engineering exercise. It does not by itself create the operational, legal, identity-verification, delivery, retention, and evidentiary maturity of a specialized e-signature product.
For an early consultancy, signatures are a business-control function rather than a likely differentiator. The portal can still show agreement status and retain a provider’s envelope or agreement identifier while a qualified provider owns the signing ceremony.
What is lost by using a provider:
- Complete control over the signing experience and data model.
- The opportunity to learn document hashing and consent evidence implementation firsthand.
- A seamless single-vendor visual experience unless embedded signing is purchased and configured.
- Potentially lower marginal cost at high signing volume.
What is gained:
- A mature signing workflow clients and procurement teams recognize.
- Less legal and security ambiguity.
- Delivery, reminders, signer identity options, audit evidence, and completed-document handling.
- More time for proposal quality and AI-assisted collaboration.
Until an external provider is selected, v1 should call its internal action approval or acknowledgment, not an electronic signature.
5. Custom invoicing duplicates commodity capability
Invoice numbers, payment state, hosted payment pages, receipts, reminders, reconciliation, payment-method security, disputes, taxes, and accounting exports form a product category of their own.
Stripe can create and send invoices without custom code, and its Hosted Invoice Page lets clients view status, pay, and download invoice or receipt PDFs. The portal can display synchronized invoice status and link to that hosted experience rather than becoming the financial system of record. Stripe Invoicing, Stripe Hosted Invoice Page
What is lost:
- A completely native invoice and payment experience.
- Full control over page layout and invoice lifecycle rules.
- Provider independence and some access to underlying payment behavior.
What is gained:
- Faster launch and automatic reconciliation.
- Mature payment authentication and receipt behavior.
- Less sensitive payment scope in the custom application.
- A clean system of record that can later integrate with bookkeeping.
6. The plan prepays for AI flexibility without delivering AI value
Provider interfaces and a future WorkflowRunner are sensible, but the first release deliberately contains no production AI workflow. That means the initial engineering effort is concentrated on commodity portal infrastructure while the consultancy’s stated learning objective remains deferred.
The more valuable learning for an agentic-AI consultancy is likely to be:
- Modeling durable workflow state.
- Designing human review and interruption points.
- Handling prompt injection and untrusted client content.
- Tool authorization and least privilege.
- Evaluation, observability, token budgets, and failure recovery.
- Separating a generated draft from an authorized external action.
- Measuring whether AI materially improves proposal quality or turnaround time.
Building authentication screens, S3 presigned uploads, invoice state machines, or signature evidence can be useful engineering experience, but it is less directly connected to advising clients about agentic systems.
7. The repository automation may be disproportionate at inception
The existing Codex label automation is a strong governance demonstration. Porting its full credential separation, replay protection, state machine, issue labels, and publishing workflow into an empty portal repository adds setup and maintenance before the first product feedback.
A lighter initial version could preserve the essential human controls:
- An issue and approved plan before implementation.
- Explicit AI-build authorization.
- A draft pull request with required CI.
- Human review, deployment, and merge.
Advanced replay handling and automated label transitions can be ported once the repository has enough change volume to demonstrate their value. The lost benefit is exact consistency with the public website’s automation demonstration; the gain is less bootstrap work and fewer credentials to configure.
Alternatives
Alternative A — Buy the complete clientflow
Use a specialized platform such as Dubsado or HoneyBook for the client-facing proposal, agreement, invoice, payment, communication, and portal workflow. Use its supported integrations or webhooks to feed a separate AI experimentation environment.
Strengths
- Fastest path to a polished, complete client journey.
- Mature proposals, contracts, e-signatures, invoices, payments, reminders, and client access.
- Lowest custom security and operational burden.
- Real client workflow evidence can be gathered immediately.
Losses
- Minimal control over interaction design and workflow semantics.
- Vendor lock-in and recurring subscription/transaction fees.
- Limited opportunity to demonstrate custom application architecture.
- AI integrations may be constrained by available APIs, webhooks, and export formats.
- Less AWS, identity, database, and multi-tenant application learning.
Best use
Choose this if the primary goal is acquiring and serving clients quickly. Treat the clientflow system as a source of real workflow events for a separate agentic-AI laboratory.
Alternative B — Thin custom portal on a managed application backend
Build the branded Next.js client workspace, but use a managed PostgreSQL application platform for database, authentication, and storage; Stripe for invoices/payments; and an external provider for signatures. Keep AI workflow state and review screens in the custom portal.
One concrete version is:
- Next.js on Vercel, Amplify Hosting, or another managed web host.
- Supabase PostgreSQL, Auth, Storage, row-level security, migrations, and local development stack.
- Stripe Invoicing as the financial system of record.
- DocuSign, Adobe Sign, Dropbox Sign, or a client-required provider for agreements.
- Resend, Postmark, or SES for portal notifications.
- LangGraph worker invoked through a durable job table and queue.
Strengths
- Preserves a custom client experience and PostgreSQL data model.
- Much stronger local/hosted parity for database, auth, and storage.
- Removes Aurora Data API, Cognito, CDK, and several AWS deployment concerns from v1.
- Keeps the distinctive AI draft/review/approve experience inside the product.
- Faster route to testing with real clients.
Losses
- Less AWS architecture and IAM experience.
- More third-party vendors and data-processing relationships.
- Platform-specific auth/storage conventions and row-level-security complexity.
- A later AWS migration may require identity, storage, and deployment work.
- The client moves between branded portal, signature, and payment experiences unless those products are embedded.
Best use
This is the recommended balance if the portal itself should be a consultancy asset and learning project, but transaction correctness should not depend on homegrown implementations.
Alternative C — AWS-native serverless without PostgreSQL or LangGraph
Use Amplify, Cognito, DynamoDB, S3, Lambda, SES, and Step Functions. Model proposal and agreement workflows as Step Functions executions with callback task tokens for human decisions. AWS documents this human-approval pattern directly. Step Functions human approval
Strengths
- Strong AWS-native learning and operational integration.
- No Aurora cold start, SQL connection, or migration system.
- Pay-per-use infrastructure at low volume.
- Durable orchestration, retries, timeouts, and human callbacks are managed services.
Losses
- DynamoDB access patterns are less natural for evolving relational business data and ad hoc reporting.
- Step Functions is useful orchestration experience but does not teach LangGraph’s model-centric state and interrupt patterns.
- Local parity is weaker and integration testing depends more heavily on AWS.
- State-machine and service count can become difficult to navigate for a small application.
- Moving to PostgreSQL later would be a meaningful data migration.
Best use
Choose this if AWS serverless consulting expertise is more important than PostgreSQL portability or LangGraph learning.
Alternative D — Workflow-first internal tool, portal later
Keep client interaction in familiar tools—email, shared documents, a signature provider, and hosted invoices—while building an internal AI operations console for Todd.
The internal tool drafts proposals, summarizes feedback, extracts obligations, prepares invoice data, and queues communications for human approval. A custom client portal is built only after repeated client feedback identifies a clear experience gap.
Strengths
- Directly targets agentic-AI learning and internal productivity.
- Avoids exposing immature software to clients.
- Produces evidence about which workflow steps deserve productization.
- Can be built with lower security and availability expectations while still protecting client data appropriately.
Losses
- Clients receive a fragmented experience across email, documents, signature, and payment systems.
- No branded collaboration hub or single activity history.
- Less experience with client-facing identity, authorization, and multi-tenancy.
- Later portal work may duplicate some internal interfaces.
Best use
Choose this if the immediate strategic priority is learning and demonstrating agentic workflows rather than creating a software product.
Comparative view
| Approach | Speed to real client use | Custom client experience | Transaction risk | AWS learning | Agentic-AI learning | Long-term control |
|---|---|---|---|---|---|---|
| Original plan | Slow | High | Medium to high initially | High | Deferred, then high | High |
| A. Complete clientflow SaaS | Fastest | Low to medium | Lowest | Low | Medium, API-dependent | Low |
| B. Thin custom portal | Fast | High where it matters | Low to medium | Low to medium | High | Medium to high |
| C. AWS-native serverless | Medium | High | Medium | Highest | Medium | High, AWS-specific |
| D. Internal workflow first | Fast for internal value | Low | Low | Optional | Highest earliest | Medium |
Recommended counterproposal
Adopt a staged combination of Alternatives B and D: build a thin custom portal and a separate, bounded AI workflow capability while delegating legal signature and payment execution to specialized systems.
Stage 1 — Observe and codify the real business process
- Run one to three fictional or low-risk pilot engagements using shared documents, an established signature provider, and Stripe-hosted invoices.
- Record every state transition, exception, revision loop, reminder, and manual decision.
- Interview pilot users about whether a portal would improve their experience.
- Treat these observations as requirements evidence rather than assuming the original workflow is final.
Deliverable: a short service blueprint and event vocabulary such as proposal_drafted, client_requested_changes, agreement_completed, invoice_paid, and engagement_started.
Stage 2 — Build the thin collaboration portal
- Use Next.js and a managed PostgreSQL backend with local Postgres/Auth/Storage support.
- Implement organizations, memberships, engagements, document links/versions, comments, activity history, and human review tasks.
- Show signature and invoice status by synchronizing external-provider events.
- Link or embed external signing and hosted invoice experiences rather than recreating them.
- Send portal notifications without making the portal the authoritative delivery record for legal or financial artifacts.
Deliverable: a branded client workspace that improves context and collaboration while relying on proven transaction rails.
Stage 3 — Introduce one valuable agentic workflow early
- Implement proposal drafting or client-message drafting with LangGraph.
- Store durable workflow runs, revisions, reviewer feedback, model/tool metadata, and token usage.
- Require authenticated human approval before publishing or sending anything.
- Evaluate draft quality, time saved, edit distance, failure modes, and client outcome.
- Keep the worker deployable independently so it can run locally, in Lambda where appropriate, or as a Fargate task when duration requires it.
Deliverable: an authentic consultancy demonstration of durable state, human interrupts, controlled tool use, evaluation, and safe external action.
Stage 4 — Reassess AWS and custom transaction infrastructure
Move a component to AWS or build it internally only when at least one of these is true:
- A paying client requirement cannot be met by the current provider.
- Vendor cost exceeds the measured cost of ownership.
- Provider limitations materially damage the client experience.
- Data residency, security, availability, or integration requirements demand it.
- The component is itself a deliberate consultancy learning artifact with a defined demonstration goal.
At that point, Aurora, Cognito, S3, SES, Step Functions, Lambda, or Fargate can be introduced individually rather than as one architectural commitment.
What this recommendation sacrifices
The counterproposal is not free of compromise. Compared with the original plan, it sacrifices:
- A single AWS-centered architecture and billing relationship.
- Full visual and behavioral control over signing and payment.
- Early experience with Cognito, IAM, CDK, Aurora Data API, S3, and SES integration.
- A completely self-contained local simulation of every portal capability.
- The ability to claim the entire transaction workflow was engineered in-house.
- Some portability because managed backend, signature, and invoice providers introduce their own conventions.
Those losses matter if the primary purpose is broad AWS application-architecture practice. They matter less if the purpose is to serve clients reliably and develop credible agentic-workflow expertise.
What remains a valuable learning platform
The recommended approach still provides substantial and more focused consultancy-relevant learning:
- Multi-tenant authorization and client data boundaries.
- Durable workflow state and event-driven integration.
- Human-in-the-loop drafting, revision, and approval.
- Safe model and tool invocation.
- Prompt-injection defenses around uploaded client material.
- Model selection, evaluation, tracing, and cost attribution.
- Idempotent webhooks and reconciliation with external systems.
- Failure recovery across AI and conventional workflow steps.
- Designing clear boundaries between suggestions, approvals, and legally/financially consequential actions.
These are transferable patterns for helping customers adopt agentic workflows. They do not depend on also implementing an identity provider, signature ceremony, or payment processor.
Final recommendation
Do not discard the initial plan; retain it as the maximum-control AWS architecture and a useful description of where the product could evolve.
For the first implementation, adopt the thin-portal counterproposal:
- Validate the engagement workflow with existing tools.
- Build the branded collaboration and activity experience.
- Delegate signatures and invoicing/payment to mature providers.
- Add one LangGraph human-review workflow earlier than the original plan.
- Add AWS components only in response to measured business, learning, security, or scale requirements.
This sequence reduces business risk without abandoning the original motivation. It intentionally spends custom engineering effort on the part most likely to differentiate the consultancy: practical, observable, human-controlled AI workflow automation.