terra-images is a first-party web application for a Dataset Owner — a hands-on practitioner who already possesses a labeled image dataset and wants a machine learning model built from it that labels images. The product's intent is a workshop, not a marketplace: the owner brings raw material (labeled images), the application plainly tells them what else it still needs from them, they supply it, and the application returns a trained image-labeling model as a built artifact.
The audience is a single practitioner role who works with their own gear and their own data, values being told plainly what is missing before work begins, and expects the resulting model to be traceable to the dataset it was trained on. The product's governing constraint is stated by the user directly: if anything is required from the owner, it must be requested from them first so they can provide it — nothing is silently assumed, and no training proceeds on incomplete inputs.
terra-images is delivered as a custom first-party web application with an application-owned identity boundary and a shared backend that performs durable dataset storage, requirement tracking, and model training/inference work.
Current actors
Accepted behavior in scope
Narrow exclusions
terra-images is a current, single-tenant-per-owner, application-owned product. The owner's datasets, outstanding requirements, and trained models are durable, private, owner-specific state; therefore the application owns identity: an anonymous visitor can read the public entry surface, and must establish or verify identity before reaching Datasets, Requirements, or Models. Identity establishment is self-service (Sign Up) with returning verification (Login); there is no invitation, provisioning, or deployment-bootstrap path, and no differentiated roles or permissions — every authenticated user is a Dataset Owner acting only on their own state.
The delivery boundary is deliberately narrow. The application owns the human workflow end to end: intake of the labeled dataset, the explicit request-for-inputs loop, training initiation, and delivery of the trained model. Heavy computation (training and inference) is a backend responsibility of the same application, not a separate product surface. Nothing in the current scope is deferred to a future horizon; the automotive-plastic inspection domain described in the uploaded proposal is explicitly not part of this product's current or future delivery boundary — it is context for why image-labeling models matter, not a requirement.
Not applicable — no reference directive in this request declares a content_source.
The page inventory is the supplied final page contract, preserved exactly and in order: Landing, Login, Sign Up, Datasets, Requirements, Models.
FR-1 — Self-service enrollment As a Dataset Owner, I should be able to create my own account so that my datasets, requirements, and models are durably and privately mine.
required_inference (identity continuity for durable owner-specific state).FR-2 — Returning verification As a Dataset Owner, I should be able to verify my identity on return so that I can reach my existing datasets, requirements, and models.
required_inference.FR-3 — Provide a labeled image dataset As a Dataset Owner, I should be able to upload my labeled images — images together with their labels — so that the application has the training material it needs.
explicit (user states they have labeled data with images and can provide it).FR-4 — Revisit and review a dataset As a Dataset Owner, I should be able to reopen a dataset and see its images, labels, and completeness so that I can confirm it is the right material before training.
required_inference (the owner must be able to verify the input they supplied).FR-5 — Surface every additional required input As a Dataset Owner, I should be told plainly, before training, everything else the application needs from me so that I can provide it rather than discovering gaps later.
explicit (user: "if you required any thing first tell me so that i can provide as well") plus required_inference for the concrete requirement kinds.FR-6 — Supply required inputs As a Dataset Owner, I should be able to provide each requested input — confirming the dataset is fully labeled and matched, naming the label classes, selecting the task type, confirming the train/validation split, and any other input the workflow asks for — so that training can proceed on complete information.
required_inference (indispensable mechanics for FR-5's accepted outcome).FR-7 — Start training As a Dataset Owner, I should be able to start training on a dataset whose requirements are all satisfied so that a model is built from my labeled images.
explicit (build the machine learning model from the labeled image data).FR-8 — Obtain the trained image-labeling model As a Dataset Owner, I should receive the trained model produced from my labeled data, with its metrics and a downloadable artifact, so that I have the built artifact I came for.
explicit (the model must label images, trained on the owner's own labeled data).FR-9 — Ask before assuming As a Dataset Owner, I should never have an input silently assumed on my behalf when the workflow needs it, so that the model is built on information I actually supplied.
explicit (hard constraint).Product context. The Dataset Owner is a hands-on practitioner who already holds a labeled image dataset — images plus their labels — and wants a machine learning model built from it that labels images. They are not arriving to annotate; they are arriving with finished raw material and a specific expectation: that the tool will tell them plainly what else it needs before it starts work. They judge the product by whether it is honest about gaps and whether the artifact it hands back is traceable to what they gave it.
Primary goal. Turn their own labeled images into a trained image-labeling model, without discovering missing inputs after the fact.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which dataset to train on; whether the uploaded material is complete and correctly matched; the label classes present; the task type the labels represent; the train/validation split; whether to retry a failed run or amend requirements and start a new one.
Interactions with other accepted participants. The Dataset Owner is the sole human actor. Their counterpart is the application's training/inference engine, which consumes the dataset and returns a model; the owner's side of that exchange is starting the run and reading its outcome, and the engine's side is producing status, metrics, and the artifact. There is no second human participant, no reviewer, and no approver in the accepted scope.
Observable success. The owner sees their dataset listed as ready with accurate counts, sees every requirement either Action needed or Provided, and receives a model marked Trained with a metrics table and a downloadable artifact tied to their dataset and configuration.
Muse and headline. Aaron Draplin — bold, honest, hand-built field-guide typography for a working image-labeling model. The register is sturdy workshop craft with a bit of pride: printed, not floated; plain talk, not marketing gloss.
Mode. Light mode only.
Color tokens (exact hex, by role).
| Role | Hex | Use |
|---|---|---|
| Background | #F2E9D8 | Kraft/field-notes cream page ground |
| Surface | #FBF6EC | Lighter paper panels and ruled tables |
| Text | #1F1B16 | Near-black ink for all body and headings |
| Primary | #1E4B3A | Forest green — rules, badge fills, active nav, panel headers, active workflow step |
| Accent | #E4572E | Single hot signal — CTAs, Action needed state, stamp marks, completed-step checks |
| Muted | #6B5E4C | Secondary labels and metadata |
| Tertiary | #D9A441 | Mustard, only as a tag/badge tint |
Balance: roughly 60% cream, 25% ink/green structure, 10% surface panels, 5% orange. Never a white-first layout; no indigo or Bootstrap blue anywhere.
Typography.
clamp(2.5rem, 8vw, 6rem) (40→96px); h2 28→48px; h3 20→28px; body 16→18px; label 12→13px all-caps. Numerals tabular throughout tables and metrics.Shape language. Chunky 2px–3px ink borders; hard 4px corners, never pill; ruled panels and label/value rows; circular and shield badge/stamp motifs; halftone and hazard-stripe accents; thick-line icons. Buttons are rectangular with a solid offset shadow (2px 2px 0 ink) that presses flat on click.
Layout. Poster-like vertical rhythm on a strict 12-column grid with visible hairline rules between sections. Generous outer margins, dense but ordered interiors. Dashboards use ruled label/value tables, not floating cards.
Imagery. Thick-line vector pictograms (camera, tag, stack, gear, stamp); halftone-treated photographic crops of the owner's labeled image thumbnails arranged like a contact sheet; badge and sticker marks; ruled diagram panels. No glossy 3D, no gradient blobs, no stock people.
Accessibility and fit. All readable text and controls stay whole inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling via clamp; decoration and imagery may bleed, rotate, or overlap but never cover readable text or controls. Contrast of ink #1F1B16 on cream #F2E9D8 and on surface #FBF6EC is high; orange #E4572E is used for accents and large/bold text, with ink text on orange fills.
The Field-Tested Contact Sheet. The Landing page is a printed poster, not a centred SaaS hero. On the left, a two-line Alfa Slab One headline — "TRAIN A MODEL ON YOUR OWN LABELED IMAGES" — sits flush-left at clamp(2.5rem, 8vw, 6rem), stacked over a solid forest-green #1E4B3A block holding a short plain-talk line about bringing your own labeled images and being told what's still missing, with the primary orange #E4572E CTA "Start with your dataset" pinned beneath it. On the right, a rotated contact sheet of halftone-treated image thumbnails with green tick and tag pictograms stamped across them bleeds off the right edge. A circular "FIELD-TESTED ML" badge, rotated -8°, overlaps the headline block's corner. The top navigation is a ruled ink bar with all-caps Oswald labels and a small badge wordmark. Beneath the hero, the numbered 01 Datasets → 02 Requirements → 03 Models band renders as ruled badge panels with step 01 filled forest green. The same circular stamp reappears as the "model trained" seal on Models, closing the loop between the promise on the poster and the artifact the owner receives.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief.
explicit. Rationale: the user's stated constraint.required_inference. Rationale: durable owner-specific state requires binding to the correct participant. This is ownership scoping, not differentiated permissions.required_inference.required_inference.required_inference.explicit (creative direction).prefers-reduced-motion. Provenance: explicit (creative direction).[Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user]explicit.required_inference from the closed persona catalog.required_inference from the planning scope's delivery shape.required_inference bounded by the explicit ask-before-assume constraint.explicit scope boundary.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!