Service Blueprint

Based on: research/icp.md, research/competitive-analysis.md, README/product boundary, and observed implementation files

Date: 2026-06-20

Methodology: Shostack Service Blueprint

Mode: Product-Exists (grounded by code, still customer-feedback-limited)

Summary

FormForge's current service is strongest from "describe the needed intake form" through "publish a public link" and "receive structured submissions." The visible product loop already supports AI-generated fields, visual editing, conditional logic, immutable published snapshots, public submission, response review, basic response status, analytics, notification email, and CSV export.

The highest operational risk is after the respondent submits. ICP and competitive evidence both say the value of intake depends on reducing back-and-forth and moving answers into client work systems. The observed implementation currently provides response review, status labels, email notification, and CSV export, but no native Sheets/Notion/CRM/Zapier/Make/webhook/project-doc handoff. That makes post-submission routing the biggest service blueprint gap for the approved ICP.

Service Stages

Stage Customer Action Evidence/Touchpoint Backstage Action Support Process
Trigger and evaluationConsultant, coach, or agency realizes they need a client intake form for a new client, service, cohort, or project.ICP trigger events: new client signed, new offer launches, onboarding delays, desire for more professional form than Google Forms. Competitive analysis frames the gap as deeper than generic form builders but lighter than client-management suites.FormForge must make the first-use promise legible: describe, generate, edit, publish, submit, review/export.Product positioning and onboarding content are not represented in code evidence; demand signal is research-backed, not customer-validated.
Sign-up and workspace entryUser creates or accesses an account and enters dashboard.Auth routes exist under src/app/(auth)/...; dashboard routes exist under src/app/(dashboard)/dashboard/page.tsx.Protected tRPC procedures associate forms with the authenticated user.Clerk-authenticated user context and database user records support ownership; plan limits are checked in form creation.
AI-assisted draft creationUser describes the intake form they need.README defines the core loop as "describe a form, review generated fields, edit visually, publish a public link, receive submissions, and review/export responses." src/server/ai/generate-form.ts accepts a natural-language prompt and returns title, description, field types, options, validations, required flags, and conditional-logic hints.OpenAI call parses JSON into a schema; generated form and fields are persisted with a draft status and unique slug.OpenAI API, database writes, field schema validation, slug generation, and plan-limit enforcement.
Visual edit and form configurationUser adjusts fields, required flags, conditional logic, settings, theme, and publication readiness.Editor, field palette, conditional-logic builder, properties panel, settings page, and theme routes/components exist. src/server/trpc/routers/form.ts supports updates, duplicate, AI regeneration, publish, close, and settings including notifications, response limit, close date, redirect URL, success message, and GDPR consent.Field records, form settings, and optional themes are updated. AI regeneration can replace a form definition.Drizzle schema stores fields, validation, conditional logic, settings, theme, and status. Tests cover AI regeneration, settings, themes, and field types.
Publish and shareUser publishes and sends the link to a client/respondent.publish requires at least one field, creates a version snapshot, and marks the form published. Public route src/app/f/[slug]/... renders the respondent-facing form.Immutable form version snapshots preserve what respondents saw when they submitted.formVersions stores title, description, settings, theme, and fields snapshot; public route resolves latest/submitted version.
Respondent completionExternal client completes the intake without being a FormForge buyer.src/app/f/[slug]/client.tsx renders the public form, applies theme, includes Turnstile when configured, tracks completion start time, and handles redirect after success. src/app/api/submit/[slug]/route.ts validates published status, Turnstile, rate limits, close date, response limit, visible conditional fields, localized validation, and submission persistence.API stores response and field responses; notification email is sent when configured.Rate limiter, Turnstile, conditional logic evaluator, localized field validator, database inserts, notification email service.
Response review and triageUser reviews submitted intake answers, marks status, exports, and decides next client-work step.src/server/trpc/routers/response.ts supports list, get by ID, stats, analytics, status update, bulk status update, delete, and CSV export. Schema supports response statuses: new, read, starred, archived.Dashboard queries aggregate response counts, statuses, completion time, analytics, and field response values.Database relations, analytics builder, CSV export builder with a 10,000-row cap and truncation flag.
Handoff into service deliveryUser copies or exports answers into project docs, CRM, Notion, Sheets, kickoff notes, or client workspace.ICP says manual copy/paste after submission is high-severity and high-frequency; competitive analysis says integrations and handoff are a major battleground. Observed product boundary includes review/export but defers provider integrations and webhooks in README.Current product can export CSV and send notification emails, but does not complete native handoff to project systems.CSV builder, notification email, and manual user process. No native webhook, CRM, Sheets, Notion, Zapier/Make, or project-management routing observed.
Retention and reuseUser duplicates, edits, regenerates, reuses, and monitors forms across clients/offers.duplicate, regenerateWithAI, close, statuses, analytics, themes, and response review exist. ICP expects reuse/adaptation across clients and offers.Form records and fields can be cloned or regenerated; response history remains tied to form and version snapshots.Database ownership, versioning, response analytics, plan-limit checks, and theme validation.
Billing and expansionUser may hit limits or choose paid features after repeated use.README describes Stripe-powered subscription billing and billing routes exist. users.plan and getPlanLimits are used for form-limit enforcement.Checkout/webhook flow updates customer/subscription metadata and plan state.Stripe integration, webhook handling, user plan records. README also says defer Stripe billing until the core loop is validated, so billing is present but not the journey's validation center.
Support and failure recoveryUser or respondent encounters validation, bot, limit, version, or submission errors.Public submit route returns errors for bot check, invalid Turnstile, form not found, not accepting, version missing, response limit, close date, validation failure, and internal error. Dashboard error route exists.Errors are localized in submit path; server logs internal submission errors.i18n utilities, error pages, validation, rate limit, Turnstile, and server logging. No customer-support workflow evidence exists.

Lines Of Interaction

Line Of Interaction

The primary visible boundary runs between:

The service succeeds when both sides feel low-friction: the buyer creates a useful intake form quickly, and the respondent completes it without account friction.

Line Of Visibility

Visible to buyer/user:

Visible to respondent:

Not visible or weakly visible:

Line Of Internal Interaction

Backstage processes depend on:

The main internal handoff is from published form snapshot to response records. The current service does not have an internal handoff from response records into external client-work systems.

Line Of Implementation

Implementation infrastructure includes:

Deferred or absent infrastructure relevant to the service blueprint:

Operational Gap Analysis

Gap Type Stage Description Severity Evidence
Evidence gapTrigger and evaluationThe repo has strong desk research and product code but no direct customer-feedback file, interviews, win/loss notes, analytics, or support tickets.HighMissing research/customer-feedback.md; ICP and competitive analysis both flag customer-validation gaps.
Fail pointAI-assisted draft creationAI-generated forms may omit service-specific intake details, ask weak questions, or produce conditional logic that needs human correction.Mediumgenerate-form.ts uses schema validation and conditional-logic hints, but there is no customer-quality evidence for generated intake forms.
Fail pointPublish and sharePublishing requires a form snapshot and at least one field, but the blueprint lacks evidence for pre-publish quality checks against the ICP's completeness job.Mediumpublish checks non-empty fields and snapshots; ICP pain is missing details/assets, not only missing fields.
Wait pointRespondent completionTurnstile, required fields, file-upload expectations, conditional logic, or validation can slow completion, especially on mobile or for external clients.MediumPublic submit path validates Turnstile, visible fields, required rules, limits, and close date; ICP says respondent friction matters.
BottleneckResponse review and triageThe owner-operator still has to inspect new submissions and decide whether they are ready for kickoff.HighResponse statuses exist, but no automated completeness scoring, missing-asset workflow, or follow-up loop is observed.
Handoff gapHandoff into service deliveryCSV export and notification email do not by themselves move answers into the buyer's project docs, CRM, Notion, Sheets, kickoff notes, or task system.HighICP rates manual copy/paste high severity/high frequency; competitive analysis calls integrations and handoff a battleground; README defers provider integrations and webhooks.
Evidence gapHandoff into service deliveryThe service does not expose status that a submission has been transferred, assigned, reconciled, or used in kickoff.HighSchema tracks response status only as new/read/starred/archived; no downstream sync or work-system state is visible in observed code.
Fail pointNotification and supportNotification email is fire-and-forget and caught with console.error, so a missed notification may not be surfaced to the user.MediumSubmit route sends notification asynchronously and catches errors with console.error; no retry/support path observed.
BottleneckBilling and expansionBilling exists in README/code, but README says billing should be deferred until core loop validation. Premature billing emphasis could distract from journey validation.Low-mediumREADME Fresh Start Bootstrap Note says defer Stripe billing until the core loop is validated.

Evidence Matrix

Claim Evidence Source Evidence Type Confidence
The active ICP needs client intake/onboarding, not generic form creation.research/icp.md primary ICP and trigger events.Approved researchHigh
FormForge's current product loop covers describe, generate, edit, publish, submit, review, and export.README Fresh Start Bootstrap Note; observed routes and routers.Observed plus stated product boundaryHigh
AI generation creates structured form definitions with field types, validation, required flags, options, and conditional logic hints.src/server/ai/generate-form.ts.Observed codeHigh
Published forms use immutable snapshots, protecting response interpretation after later edits.src/server/trpc/routers/form.ts; src/server/db/schema.ts; submit route version lookup.Observed codeHigh
Public submission has meaningful reliability controls.Submit route uses rate limiting, Turnstile, status checks, close/response limits, conditional logic, localized validation, and persistence.Observed codeHigh
Response review exists but downstream workflow handoff is thin.Response router supports statuses, analytics, CSV export; README defers integrations/webhooks; no native CRM/Sheets/Notion/Zapier/Make routing observed.Observed code plus product boundaryHigh
Handoff is the most important service gap for the ICP.ICP pain map rates manual copy/paste high severity/high frequency; competitive analysis says integrations and handoff are a major battleground.Approved research plus inferenceMedium-high
Customer success and generated-form quality remain unvalidated.No research/customer-feedback.md; competitive analysis source gaps; no usage analytics or interviews.Source absenceHigh

Assumptions And Confidence Register

Assumption Status Confidence What Would Change It
Product-exists mode is appropriate for this run.Approved in YAML and supported by production code evidence.HighUser changes mode or product boundary.
The highest-value journey is client intake for consultants, coaches, and small agencies.Approved ICP.HighNew ICP approval or customer evidence contradicting Candidate A.
Post-submission handoff is more operationally important than billing for the first validated loop.Inferred from ICP, competitive analysis, and README deferral note.Medium-highCustomer interviews showing paid conversion fails before handoff matters, or usage showing exports are enough.
CSV/email notification is enough for initial validation but not enough for durable differentiation.Inferred from current product boundary and competitor integration breadth.MediumBuyers validate CSV/email as sufficient for repeated paid use.
AI-generated first drafts reduce blank-page work but need human review.Supported by code and ICP pain, but not customer validated.MediumUsability tests or interviews showing generated output is consistently ready-to-send, or often unusable.

Source Coverage Gaps