Request a service

This is now the first functional request and quote submission shell. It currently falls back to seeded behavior unless a D1 binding is present, but the route and data shape are aligned to the v2 direction. Request submission now also enforces a real follow-up contact path so accepted quotes do not dead-end.

Optional, but helpful for providers deciding whether to respond.

Required because email is your preferred contact method.

Optional unless you prefer phone. Add at least one contact path before submitting.

Contact details stay with your request so the provider you accept can follow up directly using your preferred channel. Requests now require a real contact path that matches your preference, the visible required fields now follow the contact method you selected, malformed email/phone values are rejected instead of being saved as dead-end contact rails, request drafts now infer a saner default preferred contact method from preserved handoff data when one was not explicitly set, targeted provider requests now lock visible category/city fields only when the resolved provider actually supplies those values so incomplete storefront metadata does not trap the form in a blank read-only state, and a successful submit now clears the old query-prefilled draft without wiping the requester contact defaults you just used.

Your requests

Signed-in requesters can now see their own submitted requests, review provider quotes, and mark one accepted or declined. Targeted requests waiting on one provider now stay surfaced ahead of broader open requests, while non-actionable quote states still remain visible for context.

No accepted coordination threads yet.

Sign in to track responsesSubmitted requests can now resolve against your account. Sign in or create an account first if you want a requester-side history and quote view.