Skip to content

Development notes

Why product work is more than building the interface

Following the project inquiry form on this site through problem definition, required and optional fields, submission messages and follow-up, including the decisions and checks beyond the interface.

林予晴
Published
  • Product development
  • Requirements
  • Forms
  • Frontend development

This article records the inquiry form and flow used on October 23, 2026. Current commissions cover graphic design, UI/UX, and frontend development, quoted by confirmed scope; see the services page.

A project inquiry form has a name field, an email field, a few text fields and a submit button. It is easy to describe that as a job of building a page layout. But the deliverable is not those components arranged on a screen. It is a way for someone with a need to explain their situation, and for the person taking over to get enough information to decide what comes next.

What the fields ask, which answers can remain unknown, and what the message after submission means all affect whether that work can happen. Those decisions do not make themselves once the interface is built.

The example here is the project inquiry form this site used on October 23, 2026. I will follow the path of one inquiry, separating what the page already provided at that point from the receipt and follow-up that still needed separate confirmation.

First, define what the form should help people do

The Chinese-language page for prospective collaborations opened by saying, in translation, “You do not need a complete proposal to get started.” Accordingly, the form first asked where things were stuck, what the visitor wanted to move forward first, and what resources and constraints they already had. It did not ask them to arrive with a complete specification.

This is more than a matter of making a few labels sound friendlier. It determines what information the first contact should gather: understanding the problem and the resources available comes before discussing which part is worth taking on.

If a page invites people to bring needs they have not yet clarified, but the fields require everyone to provide an exact budget, a fixed schedule and a complete feature list, the invitation and the requirements conflict. A visitor may have to pick an arbitrary answer, leaving the person receiving it to guess how certain it is.

I would start by making clear which decision this interaction needs to support, then review the fields. Space on the screen is not a reason to add another question simply because its answer could be collected.

Required and optional fields determine when a conversation can begin

In that version, the form required a name, an email address, a description of where things were stuck, the first priority, and the resources already available. The type of collaboration, reference links, timing and budget were optional. The type of collaboration, timing and budget also allowed answers that were uncertain or needed discussion first.

The fields can be read in terms of the work their answers are meant to support:

Information Work it is meant to support What it must not be taken to mean
Name and email Knowing how to address and contact the person Their identity has been verified, or email is guaranteed to reach them
Situation, priorities and resources Assessing the problem, the scope that can be started, and the constraints A complete requirements specification has already been confirmed
Type of collaboration, schedule and budget Providing context for discussion A quote, delivery date or collaboration commitment has been accepted

This table describes the responsibilities of the fields. It is not user research or a measurement of effectiveness. Whether this set of required fields is right for every visitor still needs actual use and feedback; adding required in the code cannot replace that product judgment.

“Not yet decided” should also count as a meaningful state. It means more discussion is needed. It should not quietly turn into a seemingly settled date or amount when someone organizes the information later.

Connect the fields on screen to the data actually sent

The site’s form used a native form to send a POST request to an external form endpoint. The visible labels were associated with their controls, and the fields retained their name attributes, including stuckPoint, firstPriority and availableResources. The questions on screen could therefore map to names in the submitted data, rather than remaining a set of laid-out text.

That relationship needs protection during changes. If a question is reworded as “What would you like to finish first?” but the receiving side still interprets the answer as a specification for the entire project, the handoff can go wrong even when the interface looks intact.

Native required and type="email" attributes can help the browser check that required fields are filled and that the format is valid. They do not verify the sender’s identity or whether email can reach that address. MDN also explicitly notes that browser-side validation cannot replace server-side data and security checks.[4]

Using an external service to receive submissions creates an implementation boundary. It does not make validation, notifications or the subsequent use of the data disappear. If the service side has not been checked, those outcomes should remain unconfirmed rather than being inferred from HTML attributes.

A success message can only represent what the page actually knows

The form in the observed version was configured to return visitors to the collaboration page after submission, using form=success or form=error to select the status to display. When the page script read success, it hid the form and showed a success message; when it read error, it showed a failure message.

But that display decision only read a URL parameter. Opening the collaboration page directly with form=success would produce the same state. That did not give the page verified proof of receipt.

“The success message appeared,” “the external service received the submission,” “the notification reached the inbox” and “someone has read the inquiry and is preparing to reply” need separate confirmation. A read-only inspection can establish how the page displays success or failure. It cannot also vouch for the service or the recipient.

The observations behind this article did not include an actual test submission, a check of the service’s received data, or an email inbox inspection. What this article can describe is the basis for the page’s status decision in that version. Confirming the entire submission path would still require an authorized test and a check that a clearly identified set of test data had actually arrived.

Without JavaScript, the native form still retained the HTML structure for submitting data, but a script controlled these URL-parameter status messages. “The form is not client-only” was not evidence that every part of the no-JavaScript feedback had been handled.

Deliver a working part of the process first, without pretending it is all automated

In this example, the site was not a project management system. The form was intended to collect collaboration inquiries, and the page copy said they would be read and answered by email. That did not mean the system could automatically calculate a quote, schedule work or commit to a collaboration.

If the first version only needs to let both sides start a discussion, there is no reason to add unsupported instant quotes or automated delivery-status displays just to make it look complete. But there still needs to be clear responsibility for who handles an inquiry after receipt and what must be confirmed before replying. That work should not disappear simply because it has not been drawn as a management interface.

I would assess a first version by following one inquiry through that stretch of work: the visitor knows what to write, the data is sent under recognizable field names, the result message stays within the evidence, and the person taking over knows how to proceed. Any step that still needs a person, or has not yet been verified, should remain identified at the point where it belongs.

That is product work beyond the screen. It does not require every frontend developer to take on every role alone. It requires identifying the decisions the work depends on and asking the people with the responsibility and information to confirm them. Otherwise, a form that looks finished may only move the unresolved problem one step further down the process.

Sources

[4] https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/Form_validation — MDN — Client-side form validation