nextAction and nextActionInput; this is what that sequence looks like.
1
OAuth handshake
The host signs the user in to doola (or sends them to sign up at the web app). See Authentication.
2
get_company_onboarding_status
Find the suggested next step. For a new customer with no company, it points to
start_formation.3
start_formation
{ firstName, lastName } with the founder’s legal name as it appears on their ID, only when the profile lacks it. Sign-up can create an account from an email alone, and Google SSO does not always supply a surname.4
start_formation
{ countryOfResidence }: where the founder personally lives (ISO 3166-1 alpha-3).5
start_formation
{ companyName }: the primary name, without the LLC suffix.6
start_formation
{ state, entityType }: where to form and whether as an LLC or a C-Corp. {} forms a Wyoming LLC, the default. The answers in these four steps can go in one call when the founder gives them together.7
create_checkout_session
{}: accepts the Terms of Service and returns live pricing with the Stripe checkout. Quote pricing.summary (the first-year list price) and chargeSummary (what Stripe charges today) verbatim, share the checkoutUrl, and keep checkoutSessionId.8
User pays
The founder completes the Stripe checkout and returns saying “I paid”.
9
verify_payment
{ checkoutSessionId }. Wait for paymentStatus=Complete before asking any post-payment question.10
search_industries, then save_company_details
Fetch the list, match the founder’s description, let them pick a verbatim entry, then save
{ industry, description, sellingPlatform? }. Keep description to 50 characters or fewer.11
save_company_details
{ alternateNames: [ ... ] }: up to two backup names. The primary name stays as saved.12
save_company_details
{ registeredAddress: { provider: "registeredAgent" } }: usually doola’s registered agent (included).13
save_company_details
{ mailingAddress: { provider: "registeredAgent" } } uses the doola registered agent address. It is the default, and the only option for a founder without a US address.14
save_company_details
{ members: [{ legalFirstName, legalLastName, ownershipPercent: 100, address }] }. Solo founder: auto-fill the name from the profile and ask only for the phone and address. Ownership is saved with the members.15
save_company_details
{ responsibleParty: { legalFirstName, legalLastName, email, address } }. Offer the members (or a C-Corp’s officers) as the choices, defaulting to the sole member or the President, and accept anyone else the founder names. Confirm the email, since the SS-4 and Form 8821 are sent there.16
request_ssn_entry_link
{}, only when nextAction asks for it: the responsible party lives in the US and doola has no SSN for them yet. The founder signs in to doola with the same account and types the SSN on a doola-hosted page, opened through URL elicitation or from the ssnEntryUrl the agent pastes, never in the chat. Optional: a founder who skips it gets the SS-4 by email as before.17
Confirm
Present a complete markdown summary table of everything collected. Ask the user to reply “submit”.
18
submit_formation
{ userConfirmed: true } files the formation. Irreversible.