OnboardMap: One Sentence Becomes a Whole Client Onboarding screenshot

OnboardMap: One Sentence Becomes a Whole Client Onboarding

A serverless AI SaaS where one sentence becomes a complete client onboarding, delivered to each client as a single magic link with no account and no password.

2026 / Founder / conceived, designed and built the entire product, front end, backend and AI pipeline, solo and outside of work

SaaSAI GenerationServerlessAWS LambdaDynamoDBReact0→1 Delivery
22
Paying customers
Service businesses onboarding their clients through it
3 days
To a working product
AI pipeline, serverless backend and client portal
<$3/mo
To run the whole platform
Fully serverless, 22 tenants, no idle cost
TLDR

Client onboarding at service businesses lives in email threads, and the real work is chasing: the signed W9, the intake answers, the one document blocking everything else. OnboardMap replaces the thread. You describe the engagement in a sentence, the model builds the whole flow, and each client gets one magic link with no account to create. Built solo and outside of work in three days, now running 22 paying customers on serverless infrastructure that costs under $3 a month. The interesting engineering is not the model call, it is the async jobs, schema sanitization and deterministic mock provider that make a slow, non-deterministic system dependable enough to sell.

Deep dive
01Context & StakesRead moreHide

Bookkeepers, agencies, consultants, financial advisors, law firms and MSPs all run the same process dozens of times a year: get a new client from "signed" to "actually able to work with." It is a known, repeatable sequence, and almost nobody has it written down anywhere except in the head of whoever does it.

So it happens in email. The business sends a welcome note with four attachments and six questions. The client answers two of them. Three days later someone sends a follow-up. The W9 arrives in a reply-all that buries the intake form.

Where are we with this client?

In a thread, nobody can answer that. This is what replaces it, and it is the flow generated by the one sentence at the top of this page: the client opens a single link with no account and no password, works their steps in order, and watches a progress bar fill in. The business sees the same state without asking anyone.

OnboardMap client portal showing a bookkeeping onboarding at one of four steps complete, with a completed client details step and an open documents step requesting a tax return and bank statements.
Tax return, bank statements, QuickBooks access, address confirmation: the four steps that one sentence asked for.

"The product is not a checklist. It is the removal of the chasing."

The cost is real on both sides. The business burns senior hours on administrative follow-up and pushes back the date it can start billing. The client's very first experience of a firm they just hired is being nagged. Time to first value is the metric that matters, and email is actively hostile to it.

The tools that exist do not fit. Asana, Notion and Monday are generic project tools that require the client to have an account and learn a workspace, which is a non-starter for someone who just wants to send you a tax document. The purpose-built onboarding tools are largely template libraries: they still expect you to build every flow by hand.

02Problem → InsightRead moreHide

Each decision in the product traces back to a specific reason the existing approach fails.

ProblemInsight
Building an onboarding flow by hand is real work, so people never do it and fall back to email.The setup cost has to go to nearly zero. If describing the engagement in one sentence produces a usable flow, the tool gets adopted on the first try instead of sitting empty.
Every tool that asks the client to create an account loses a meaningful share of clients at that step.Clients get a magic link and never authenticate. This is a hard product constraint, not a convenience: a password is a wall between you and the document you need.
Businesses already have their onboarding written down, just as a Word doc or a PDF nobody reads.Let them attach it. The generator reads the extracted text and turns existing paperwork into a working flow, so migrating costs nothing.
Generated output is never quite right, and a regenerate button throws away everything good along with the bad.Make editing conversational. Ask for a step to be added or a question reworded and it applies to the live structure, so refinement is additive rather than destructive.
Reviewing a finished onboarding still means opening a folder of attachments and re-reading form answers.Close the loop with the model on the way out too: summarize what the client actually submitted so the owner reads a paragraph instead of doing discovery.
This audience handles tax documents, bank details and legal paperwork, so a security incident is existential.Files never travel by email, links expire and can be revoked, everything is encrypted at rest, and every onboarding keeps an append-only audit log.
03The AI Generation PipelineRead moreHide

The core interaction is deliberately small. You type something like "onboard a new bookkeeping client for monthly close" and the model returns a complete, structured onboarding: an ordered checklist, intake forms with the right questions for that engagement, and the specific document requests it implies.

Critically, the model does not generate a document or a blob of text. It generates a structured schema the product already knows how to render, which is what keeps the output inside the guardrails of the app rather than becoming free-form content nobody can act on.

  • Generate from a prompt. One sentence, optionally seeded from an existing template, becomes the full block structure.
  • Generate from your existing paperwork. Attachments are text-extracted on the client, clamped, and folded into the prompt, so a process you already run on paper becomes a working flow without retyping it.
  • Edit by conversation. Ask for a step to be added, a task split, or a question rewritten, and the edit applies to the live structure. Edits stage the identical job shape as generations, so a single poll handler serves both paths.
  • Summarize on the way out. When a client finishes, the model reads what was actually submitted and writes the owner a plain summary of it.

The product framing that made this work is that AI is the setup cost eliminator, not the product itself. The durable value is the portal, the tracking and the automated reminders. AI is what gets you to a populated, correct flow in fifteen seconds instead of forty minutes, which is the difference between a tool someone tries once and a tool someone adopts.

04Approach & ExecutionRead moreHide

I built the product to be fully usable with the AI turned off, and only then made the AI good. That ordering was the single most useful decision in the project.

  • Ship the boring core first. Templates, onboarding instances, the magic-link client portal, file uploads, reminders and the activity log all work with no model involved. AI accelerates that core; it is not load-bearing for it.
  • Build a deterministic mock provider. The whole product runs end to end with no API key, which keeps local development and the test suite fast, free and repeatable.
  • Then make generation real. Swap the provider by environment variable, with the model and its reasoning effort configurable the same way, so tuning never requires a code change.
  • Design for the model being slow and wrong. Async jobs for the latency, schema sanitization for the correctness, per-tenant rate limits for the cost.
  • Test the parts that have right answers. Fourteen backend service suites plus nine Playwright end-to-end specs covering auth, the client portal, the dashboard, responsiveness and accessibility.
05Design & Technical HighlightsRead moreHide

Everything is serverless, single region, and deliberately simple to operate for one person.

LayerChoiceWhy it mattered
AI orchestrationAsync job pattern: start a job, run it on a dedicated Lambda with a 900 second timeout, poll for the result.API Gateway hard-stops a request at 29 seconds. A reasoning model can legitimately take longer, so a synchronous design would have capped how good the generation was allowed to be.
Model outputSanitized into the stored schema before anything is persisted.The model is treated as an untrusted input. A malformed response degrades gracefully instead of corrupting an onboarding or breaking a render.
ProviderInterface with a deterministic mock and a live implementation, selected by environment variable.The product is developable and testable with no key and no spend, and the live model can be swapped without touching code.
DataA single DynamoDB table with GSIs, single-table design.One table, transactional consistency and no join layer, sized honestly for tens to low-thousands of tenants rather than an imagined scale.
Client accessMagic-link tokens entirely separate from the internal Cognito user pool.Clients never get an account, which removes the biggest drop-off point in the funnel and shrinks the security surface.
FilesPre-signed S3 uploads, metadata stored against the step.Documents never pass through email or a Lambda, which is both the safe answer and the cheap one.
TrustExpiring and revocable links, encryption at rest, and an append-only activity log per onboarding.This audience handles tax and legal documents. Security is a primary buying criterion, not a compliance checkbox.
06ImpactRead moreHide

OnboardMap is live at onboardmap.com with 22 paying customers. I built it solo and outside of work, and the whole thing, the AI pipeline, the serverless backend, the React application and the marketing site, went from empty repository to a working product in three days.

What shipped
DimensionDetail
Customers22 service businesses paying to onboard their clients through it
TimelineEmpty repository to a working product in three days
Cost to operateUnder $3 a month for the entire multi-tenant platform, all 22 tenants included
ScopeAI pipeline, serverless backend, client portal, admin app and marketing site in one codebase
The honest read

Twenty-two customers is validation, not a business. What I take from it is narrower and more useful: people in this category will pay for a tool that removes the chasing, and they will do it without a sales call. The number I actually watch is whether an owner sends a second onboarding after their first one, because that is the only signal that the product beat the email thread it replaced.

What the product changes
BeforeAfter
Onboarding lives in an email thread nobody can audit.One portal per client with an append-only activity log.
Building a reusable flow is an hour of work, so it never happens.A sentence produces a complete flow in seconds.
The client needs an account, and some never make one.One magic link, no password, no signup.
Someone on the team manually chases every outstanding item.The system sends the reminders and surfaces what is stalled.
OnboardMap owner dashboard listing onboardings with status, progress and dates, one expanded to show completed steps, a downloadable PDF and tabs for details, messages, files and activity.
The owner side: every onboarding, its status and its progress in one list, with the activity log and files for each one underneath. Answering "where are we with this client?" is a glance, not a thread.
A second experiment in AI leverage

The marketing site is its own proof point. An unattended agent researches, writes and publishes a new article to it every morning, which has built a library of 159 pieces of organic search content without me writing them. It is the same thesis as the product, pointed at distribution instead of setup: use the model to erase the cost of the work that otherwise simply does not get done.

07Making AI Dependable Enough to SellRead moreHide

This is the part I would want to talk through in an interview, because calling a model is trivial and everything else is not. A generation is slow, non-deterministic, occasionally malformed, and costs money per call. A business that pays for the product needs it to feel as dependable as a form.

  • Latency is an architecture problem, not a spinner problem. The 29 second API Gateway ceiling is a hard wall. Moving generation onto a background Lambda with a long timeout and a polling contract meant model quality was never constrained by an HTTP limit.
  • Treat model output exactly like user input. It gets validated and coerced into the schema before it is stored. Nothing the model returns is trusted enough to persist directly.
  • One job shape for every async AI action. Edits stage the same record as generations, so the poll handler reads both verbatim. Adding a third AI action costs almost nothing.
  • A mock provider is a first-class feature. Being able to run and test the entire product with no model is what kept the AI from becoming a hard dependency for every developer, test run and CI job.
  • Rate limit before you need to. Per-tenant limits existed before launch, because the failure mode of a metered dependency in a multi-tenant product is a bill, not an error page.
  • Keep the model swappable. Model choice and reasoning effort are environment configuration. This category moves monthly, and anything that requires a deploy to change will not get changed.

Worth being precise about what the AI did and did not do here. Claude wrote most of this code, and it compressed what would have been a week of building into three days. That is a real multiplier, but it is a multiplier on something. None of the decisions above came from a model. Choosing to make the product fully usable with the AI switched off, deciding the generator must emit a constrained schema rather than prose, recognizing that a 29 second gateway limit was an architecture problem rather than a UX one, and setting per-tenant limits before the first customer arrived, are all judgment calls about what a paying business needs. The implementation got cheap. Knowing what to implement did not. That is the part I would be hired for.

08Risks & MitigationsRead moreHide
RiskHow it showed upMitigation
A wrong generated flow damages the client relationshipA hallucinated or badly scoped onboarding gets sent to a real paying client of the business.The generation is a starting draft the owner reviews and edits conversationally before anything is sent. Nothing reaches a client without a human sending it.
Model latency or downtime blocks the productThe AI provider is slow or unavailable and the app appears broken.Every core workflow runs without AI. Generation is an accelerator on top of manual template building, so an outage degrades the product rather than stopping it.
Unbounded AI cost in a multi-tenant SaaSOne tenant, or one bad actor, runs generation in a loop.Per-tenant rate limiting, prompt and attachment-text clamping, and a usage model tied to plan limits.
Handling sensitive client documentsThe audience uploads tax, banking and legal paperwork, so a breach is existential for their business and mine.Pre-signed uploads straight to S3, files kept out of email entirely, encryption at rest, expiring and revocable links, and an append-only audit log.
Magic links as an auth modelA forwarded or leaked link is access, since there is no password behind it.Scoped, expiring, revocable tokens with a client access model kept entirely separate from the internal Cognito pool, so a client link can never reach tenant data.
Solo operational burdenOne person supporting a multi-tenant SaaS with billing, email and file storage.Fully serverless with no servers to patch, a single-table data model, managed services for mail and payments, and end-to-end tests covering the paths a customer actually walks.
09Aftermath & LessonsRead moreHide

The clearest lesson is that AI belongs on the setup cost, not on the core loop. The temptation with a generative feature is to make it the product. Here it works precisely because it is not: the durable value is the portal and the chasing, and the model exists to get you to a populated flow before you lose interest. That framing also makes the product resilient, because the model can fail without the business stopping.

The second is that the mock provider paid for itself many times over. Building the deterministic implementation first felt like a detour and turned out to be the reason the test suite is fast, the local loop is free, and the live model could be swapped late without fear.

What's next
  • Conditional flows. The current onboarding is a flat ordered list. Branching on a client's answers is the most requested shape and the natural next use of the generator.
  • Push further into the review side. Summarization is the least developed AI surface and probably the one with the most remaining value, since it targets the owner's time rather than the client's.
  • Verticalize the templates. The generator is general, but the buying decision is made by someone who wants to see their own profession reflected back at them on the first screen.
  • Keep compounding the content engine. The daily agent is the cheapest distribution I have, and this category is won on search rather than ad spend.
10CreditsRead moreHide

Everything: Austin Spaeth: product, design, front end, backend, infrastructure and go to market

Engineering partner: Claude, used throughout the build and running the daily content agent unattended

Architecture and product judgment: Austin Spaeth. The schema, the trust model, the async job design and the decision to make the product work with the AI switched off were mine; the model filled in the structure I defined

One link. They do the rest.