glacial-househelp is an on-demand househelp application: a household can get help with a household need at any time, and a househelp provider can find and take on that work. The product intent is a two-sided marketplace with a single, honest promise — help is available whenever it is needed, and the people who provide it are real, accountable workers who accept and complete the job.
The audience is everyday households in India who need household help on demand (cleaning, laundry, ironing, mopping, and similar household tasks) and the househelp providers who offer that labor. The application is built for both sides of that exchange: requesters who browse services, submit a request for a specific household need, and track it to completion; and providers who review incoming requests, accept the ones they can serve, and mark the work done.
This document is the System Requirements Document for the product. It defines the current delivery, the two accepted personas, the seven-page information architecture, the functional requirements, the end-to-end flows, and the visual and technical direction.
glacial-househelp is delivered as a custom React web application backed by a shared FastAPI service and a MariaDB database. The application owns identity: requesters and providers self-enroll with a role, verify themselves on return, and then reach role-restricted working surfaces. All durable state — requests, their status, and the jobs providers accept — is application-owned and persisted.
Actors
Accepted behavior at a glance
Delivery shape
Removed from scope
The product is a first-party, application-owned marketplace. Both sides of the exchange — the household asking for help and the provider doing the work — are served by the same application, and the application itself holds the durable record of every request and job. There is no external provider surface and no headless delivery: the request lifecycle lives entirely inside glacial-househelp.
Access is split into two boundaries. The anonymous boundary covers Landing, Login, and Sign Up: a visitor can learn what the product does, and a new or returning requester or provider can establish or verify identity and choose a role. The protected boundary covers Services, My Requests, Incoming Requests, and My Jobs, each restricted to the role that owns that work. A requester never sees provider job surfaces, and a provider never sees another household's request history.
The current horizon is the complete request-to-completion loop described in this document. Nothing beyond that loop — payments, ratings, scheduling calendars, messaging, or provider verification workflows — is part of the current delivery, and none is implied by the pages below.
FR-1 — On-demand availability (explicit) As a Household Requester, I should be able to get househelp at any time, so that a household need is never blocked by the hour.
FR-2 — Browse services and request help for a specific need (explicit) As a Household Requester, I should be able to browse available househelp services and request help for a specific household need, so that the right kind of help is sent for my situation.
FR-3 — Provider views and accepts incoming requests (explicit) As a Househelp Provider, I should be able to view incoming requests and accept one to fulfill the household work, so that I can take on work I can serve.
FR-4 — Provider marks accepted jobs completed (required_inference) As a Househelp Provider, I should be able to mark an accepted job as completed, so that the household knows the work is done and the request closes.
FR-5 — Self-service enrollment with role selection (required_inference) As a visitor, I should be able to enroll myself and choose whether I am a Household Requester or a Househelp Provider, so that I reach the right working surface.
FR-6 — Returning verification (required_inference) As a returning Household Requester or Househelp Provider, I should verify my identity before reaching my protected request or job state, so that my requests and jobs stay private to me.
FR-7 — Requester identity binds requests (required_inference) As a Household Requester, I should have my submitted requests bound to my identity, so that I can submit and track only my own requests.
FR-8 — Provider identity and role bind jobs (required_inference) As a Househelp Provider, I should have my accepted jobs bound to my identity and role, so that I can view incoming requests and mark only my own accepted jobs completed.
The visual register is bold, honest, hand-built househelp — a local workwear brand or neighborhood co-op, not a gig-economy startup. The muse is Aaron Draplin: thick lines, badge-and-stamp language, kraft paper, and sturdy type.
Color tokens (light mode)
| Role | Hex | Use |
|---|---|---|
| Background | #F2E9D8 | Kraft-paper cream ground across all pages |
| Surface | #FBF5E9 | Warm off-white panels, cards, form fields |
| Text | #1B1A17 | Ink-black type and thick rules/borders |
| Primary | #1B1A17 | Solid ink buttons and primary structural elements |
| Accent | #E4571E | Signal orange for primary CTAs, active states, REQUESTED stamp, and the "ANY HOUR" headline line |
| Muted | #6E6558 | Secondary labels and supporting text |
| Badge — mustard | #D9A21B | ACCEPTED stamp and secondary badge codes |
| Badge — forest | #2F5D46 | DONE stamp and secondary badge codes |
Orange stays under 10% of any screen so it lands like a stamp, not a wash. No blue or indigo appears as a primary or accent color.
Typography
Shape language
Layout
Imagery
Accessibility and fit
clamp(...) to fit; no element covers any part of them.prefers-reduced-motion, everything appears instantly with no rotation.The public entry is a full-bleed kraft ground (#F2E9D8) carrying a giant Alfa Slab One headline — "HELP, ANY HOUR." — set at clamp(44px, 9vw, 96px), stacked flush-left across seven of twelve columns, with "ANY HOUR" on its own line in signal orange (#E4571E). To its right sits a thick 2px-ink-bordered "service ticket" card on off-white (#FBF5E9) with a perforated dashed top edge, an all-caps Oswald "REQUEST HOUSEHELP" label, a stamped 24/7 badge rotated −4°, and a solid ink CTA with a hard 3px offset shadow. Underneath, a ruled strip of trade-badge icons (broom, bucket, iron, mop, laundry basket) runs as a static badge row, cut by the viewport edge and wrapping on mobile. There is no centered stack, no gradient, and no floating card. The concept recomposes only accepted content — the product promise, the entry paths, and the service categories — into a single poster-like lockup.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion, all content appears instantly with no rotation, and any horizontally arranged strip wraps or scrolls so each item can be brought fully into view.backend, database, and frontend services; feature APIs extend the shared backend rather than adding new services.
glacial-househelp
Househelp on demand for everyday households — and honest work for the people who do it. Request help any time; providers take on the jobs they can serve.
Request Househelp
Cleaning · Laundry · Ironing · Mopping
No service categories are listed right now.
For Households
Request help for a specific need and track it to done — from the request you send to the moment the work is finished.
Section 01 — RequesterFor Providers
See incoming requests, accept the work you can serve, and mark it complete — honest work, taken on your terms.
Section 02 — ProviderHelp is available at any hour.

glacial-househelp
Househelp on demand for everyday households — and honest work for the people who do it. Request help any time; providers take on the jobs they can serve.
Request Househelp
Cleaning · Laundry · Ironing · Mopping
No service categories are listed right now.
For Households
Request help for a specific need and track it to done — from the request you send to the moment the work is finished.
Section 01 — RequesterFor Providers
See incoming requests, accept the work you can serve, and mark it complete — honest work, taken on your terms.
Section 02 — ProviderHelp is available at any hour.
No comments yet. Be the first!