A balcony that pays
you back — what
do you actually build?
A Saturday morning in late August. Alex picks the last of the season's tomatoes from his city balcony. The entire harvest fits in one small bowl. Months of watering, feeding and worrying — and roughly $150 of soil, seeds and supplies — for produce he could have bought for $20.Second year running. The disappointment is the product opportunity.
MAP found a defensible niche — container yield optimization — but a financial model that runs out of cash in month 19. Caution, 6/10.
Can this be built with the specs and capacity you have? MVP spec, user stories, screen blueprints, architecture, and a 30-day sprint.
A clear ICP, a 'Yield Maximizer' wedge, 5 MUST features, 14 stories and 9 screens — all dev-ready.
Architecture returned no_build: the core value risk is behavioural, and a concierge test proves it for the cost of ten PDFs.
The financial plan is underfunded for its own headcount assumptions — resolve before committing to a full build.
That urban gardeners will trust and follow a prescriptive, algorithmically-generated planting plan over their own trial and error.
Everything downstream — the engine, the wizard, the schedule — is worthless if the plan gets read and ignored.
The yield-optimization algorithm may not beat a gardener's intuition by a margin anyone can feel.
Complex to develop, hard to prove. If the concierge test passes and the algorithm still can't outperform instinct, the value proposition collapses at the second hurdle.
Why it moved. SCAN anchored this at Pivot, 4/10 — real pain, but an undifferentiated feature in a hyper-competitive market. MAP revised it upward: the ‘Yield Maximizer’ wedge creates a category — container yield optimization — that generalist competitors are not incentivized to serve. The pain SCAN found did not change; the shape of the offer against the field did, and that is a positioning finding rather than a new fact about demand.
Cash goes negative in month 23 despite $750,000 — the plan runs out of money before the model breaks even; TAM is 153× the SAM, so it is describing a different market than the product serves. Size against the SAM, or widen the SAM's definition.
Architecture says no_build — the cheapest real-world test comes before an MVP.
No blockers.
Don't build yet.
Test the riskiest assumption with a cheaper test first.
The core value risk is whether gardeners will trust and follow prescriptive plans. A concierge test — manually generating and delivering plans — is the cheapest way to validate it. Building custom software now is premature.
The MVP in one line.
A tool that generates a prescriptive, yield-optimized planting plan and succession schedule for urban gardeners, based on their specific container dimensions and desired crops.
Evidence, not code.
Secure commitments from 10 'Enthusiastic Urban Novices' — recruited from r/BalconyGardening — to join the concierge yield-maximization test by submitting their container and crop details.
Fewer than 2 of 10 participants plant according to the plan. That is low willingness to follow prescriptive advice — and it invalidates the core value proposition.
Where each tier stands.
Cash goes negative in month 23 despite $750,000 — the plan runs out of money before the model breaks even. TAM is 153× the SAM.
Architecture says no_build — the cheapest real-world test comes before an MVP.
No blockers.
Each tier answers only its own question. An idea can be a PIVOT overall and still be perfectly buildable.
Don't build yet.
Prove that gardeners follow the plan before you write the code that generates it.
The core value risk is behavioural, not technical. A concierge test — manually generating and delivering plans — is the cheapest way to validate it. The kill threshold determines whether engineering investment is warranted at all.
Recruit 10 balcony gardeners from Reddit. Collect exact planter dimensions, sun exposure and desired vegetables via a simple form. Create and email each a hyper-optimized PDF planting map and a 3-month succession schedule. Support by email.
Watch for: a photo of their container planted to the map within 3 weeks.
Kill at: fewer than 2 of 10 plant according to the plan.
Everything downstream in this report — timings, sprint, screens — describes what an MVP would take if the concierge test proves the assumption. Nothing here is a schedule to start this week.
Not assessed — not applicable on the no_build path. Both are scoped after the concierge test returns a build signal.
What it is, and what it refuses to be.
Health-conscious urban gardeners frequently achieve disappointing yields on their balconies. They struggle to adapt traditional gardening methods to containers — inefficient plant density, suboptimal rotation, meagre harvests that don't justify the time. The result is frustration and a sense that the effort was meaningless.
80% of enthusiastic urban novice gardeners can increase their edible harvest by a measurable amount using the Yield Maximizer.
Enthusiastic urban novice gardeners growing edible plants in containers on balconies. They are also the buyer — an individual consumer, not a business.
- When
- I am planning my small balcony garden and realize generic advice doesn't apply to my containers, leading to consistent low yields,
- I want
- a clear, visual plan tailored to my exact planter dimensions and specific crops, to maximize the food I can grow,
- So I can
- confidently achieve a significant, meaningful harvest from my limited space.
Maintains a hyper-niche focus on container-specific yield maximization.
Avoids feature bloat; leverages existing knowledge bases elsewhere.
Keeps focus on planting strategy, away from technical complexity for novices.
Prevents procurement risk; core planning stays the product.
Keeps initial scope tight.
Prioritizes core functionality over engagement metrics.
These segments have low urgency for yield optimization.
- Target ICP — new or relatively new urban dwellers (typically Gen Z/Millennials) living in apartments and condos with balconies, motivated to grow food but frustrated by low container yields.
- Positioning wedge — a tool exclusively focused on the tangible outcome of getting more food from small spaces, de-emphasizing 'planning' and emphasizing 'harvesting'.
Three differentiators, five features.
Unlike generic planners built for garden beds, the engine optimizes density, companion planting and succession specifically for the constraints of common container sizes — maximizing edible yield per square foot.
Eliminates the blank canvas. Users input their constraints and receive one optimized plan to follow, cutting cognitive load and decision fatigue.
Steers users toward high-value, high-yield crops that repay the effort and space — directly addressing the 'not worth it' harvest.
Container-First Setup
Users define their garden by picking standard container types and dimensions — a 10-inch round pot, a 24×12 rectangular planter — not by drawing an abstract plot. Builds the core experience around real physical constraints.
Optimized Planting Map Generator
Generates a visual, top-down grid for each container showing optimal placement for each plant. The core deliverable and the 'aha' moment.
Guided Plan Wizard
A three-step flow — add containers, select plants, get plan — that turns planning from a creative task into a simple input/output.
Automated Succession Schedule
A time-based list of key actions for continuous harvesting: Week 8 — harvest lettuce, plant bush beans in the empty slot. Extends optimization across the season.
High-Value Crop Selector
Visual cues in plant selection highlight crops that offer high yield and value in containers, so choices are strategic upfront.
Five MUSTs, one override.
Automatically generates a visual, top-down grid for each container showing optimal placement for each plant.
UI uses visual cues to highlight crops that offer high yield and value for container gardening.
A step-by-step flow — add containers, select plants, get plan — that generates the planting map.
Users define their garden by selecting from a list of standard container types and dimensions.
Generates a simple, time-based list of key actions for continuous harvesting.
Scores assume 1,000 target users in year one. The Optimized Planting Map Generator ranks last on raw RICE because of its 10-week effort — but the product does not exist without it, so it is promoted to rank 1 as a JTBD anchor override. The Automated Succession Schedule stays MUST with a blocking dependency: it delivers the 'maximize food' half of the job over a full season.
- #1 Optimized Planting Map Generator — the core 'aha' moment and direct fulfilment of the JTBD. Priority overridden to rank 1 despite the lower raw score.
- #2 High-Value Crop Selector — high impact for low effort; carries the Harvest ROI Guidance differentiator. Ranks highest by raw RICE.
- #3 Guided Plan Wizard — essential for ease of use and reducing cognitive load; supports Prescriptive Plan Generation.
- #4 Container-First Setup — foundational for the Container-Native Yield Engine. Every user must complete it to reach the core functionality.
- #5 Automated Succession Schedule — supports continuous harvesting and maximizes yield over time; essential to the MVP's proposition despite a moderate score.
Three journeys, end to end.
1 · New user onboarding & initial garden setup
Trigger — user successfully registers or logs in for the first time.
| # | User action | System response | UI state |
|---|---|---|---|
| 1 | Clicks 'Get Started' on the welcome screen. | Initiates guided setup sequence for garden context. | Step 1/3 — balcony dimensions (width, depth, Next). |
| 2 | Enters balcony width and depth and clicks Next. | Validates numeric input; stores balcony size on the profile. | Step 2/3 — planter type selection with visual examples. |
| 3 | Selects 'Rectangular', enters dimensions, clicks Add Planter. | Validates dimensions; adds planter to the virtual garden inventory. | Step 3/3 — planter list, Add Another, Finish Setup. |
| 4 | Clicks Finish Setup. | Completes the onboarding flag; navigates to the dashboard. | Dashboard empty state · CTA 'Create Your First Planting Plan'. |
User sees their personalized garden dashboard with a prompt to create their first planting plan.
- Invalid dimensions entered — inline error 'Please enter valid measurements (e.g. 2.5m or 8ft)' and Next disabled.
- Proceeding with no planters — toast 'Please add at least one planter to get started'; navigation prevented.
- Out-of-range input — 'Invalid dimension: please enter a positive number' → user corrects input.
- Network error during persistence — 'Could not save garden details. Please try again.' → user retries or refreshes.
2 · Create and view a yield-optimized planting plan
Trigger — user clicks 'Create New Planting Plan' from the dashboard.
| # | User action | System response | UI state |
|---|---|---|---|
| 1 | Clicks 'Create New Planting Plan'. | Navigates to the plan creation workflow. | Step 1/3 — select planters (checkbox list, Add New Planter). |
| 2 | Selects one or more saved planters, clicks Next. | Stores selected planters for the current plan. | Step 2/3 — choose crops (search, icon list, checkboxes). |
| 3 | Searches 'Tomato' and 'Basil', selects both, clicks Next. | Validates compatibility and season; starts plan generation. | Loading — 'Generating your optimal planting plan…' |
| 4 | System progresses automatically. | Runs the yield maximization algorithm on density and companion planting; persists the plan. | Plan view — grid placement, expected yield, Print/Export. |
User views a detailed, visual, yield-optimized planting plan for their selected planters and crops.
- Incompatible crops in one planter — 'Some selected crops may not be ideal companions. We've optimized as best as possible, but consider separate planters.'
- Crops exceed the planter's realistic capacity — 'Limited space for optimal growth: consider fewer crops or larger planters', with suggestions.
- No crops selected — 'Please select at least one crop to create a plan.'
- Algorithm/backend failure — 'Oops! We encountered an issue generating your plan. Please try again later.' with retry.
- Network error on retrieval — 'Could not load plan. Check your internet connection.'
3 · Add or edit planter details
Trigger — user opens 'My Planters', or clicks 'Add New Planter' from the plan creation flow.
| # | User action | System response | UI state |
|---|---|---|---|
| 1 | Opens 'My Planters' or clicks 'Add New Planter'. | Displays existing planters, or a form to add one. | Planter list — grid of planters with name, dimensions, Edit. |
| 2 | Clicks Add New Planter. | Opens the planter input form. | Modal step 1/2 — planter type radio group with visuals. |
| 3 | Selects 'Round', clicks Next. | Configures the next step's fields for the chosen type. | Modal step 2/2 — name, diameter, depth, Save Planter. |
| 4 | Enters name and dimensions, clicks Save Planter. | Validates, stores, closes the modal. | Planter list updated · success toast. |
The planter's details are saved and available for use in creating planting plans.
- Duplicate planter name — 'Planter name already exists. Please choose a unique name.'
- Zero or negative dimensions — 'Dimension must be a positive number.'
- Missing required fields — 'Please fill in all required fields.'
- Backend storage error — 'Could not save planter. Please try again.'
Coverage — These three flows carry the essential journey: initial setup, defining the core planting assets, and using the primary feature to generate a yield-optimized plan.
Fourteen stories, four epics.
Onboarding & account setup
1 story · 1 mustEnables new users to register and provide initial high-level garden context.
As an Enthusiastic Urban Novice, I want to provide my balcony dimensions during initial setup, so the system understands my overall garden space constraints for future planning.
- Width and depth are validated as positive numeric values before proceeding.
- Valid dimensions are persisted to the user profile.
- Invalid input shows 'Please enter valid measurements (e.g. 2.5m or 8ft)' and Next stays disabled.
- Valid input advances automatically to the 'Add Planter' step.
- Only authenticated users can access this flow.
Planter management
4 stories · 2 must · 2 shouldDefining, viewing and managing the physical containers — the fundamental assets for the yield optimization engine.
Add a new planter by selecting its type and entering its dimensions, so the system can use it for tailored plans.
- Dimensions matching the selected type are validated as positive numeric values.
- Type, dimensions and optional name persist to the user's inventory.
- Missing or invalid fields show 'Dimension must be a positive number' and block saving.
- Saving closes the modal and refreshes the Planter List View.
- Only the authenticated user can add to their own inventory.
View a list of all my planters, so I can manage them or select specific ones for a new plan.
- The list shows name, type and key dimensions for each planter.
- Empty state reads 'No planters yet! Add your first one to get started.'
- Each entry carries an Edit affordance.
- Only planters belonging to the authenticated account are shown.
Be prevented from proceeding to plan creation without at least one planter.
- Attempting to proceed shows 'Please add at least one planter to get started'.
- Next / Finish Setup stays disabled until a valid planter exists.
- The user remains on the current step until the condition is met.
Be notified if a planter name already exists, so container identifiers stay unique.
- Duplicate names show 'Planter name already exists. Please choose a unique name.'
- Save Planter is disabled until the name is unique.
- Uniqueness is checked only within the authenticated user's own planters.
Core yield optimization engine
8 stories · 4 must · 4 shouldThe primary value proposition: personalized, yield-optimized planting maps and the guidance for continuous harvesting.
Select specific planters from my inventory for a new plan, so the plan is tailored to my chosen containers.
- All saved planters appear with checkboxes for multi-selection.
- At least one selection is required to enable Next.
- Only the authenticated user's planters are selectable.
Select crops and see which are high-value, so I maximize edible yield in limited space.
- A search bar and a curated list of edible crops with icons is shown.
- High-value container crops are visually highlighted with a badge or distinct styling.
- At least one crop is required to enable generation.
- Zero selections show 'Please select at least one crop to create a plan.'
Receive a visual, yield-optimized planting map, so I have clear, prescriptive instructions for plant placement.
- Generation shows 'Generating your optimal planting plan…' with a progress indicator.
- The plan persists and renders as a top-down grid per selected planter.
- The map shows optimal spacing and placement per crop, factoring density and companion planting.
- An estimated yield accompanies the layout.
Receive an automated succession schedule alongside the map, so I can harvest continuously all season.
- A dated action list is included, e.g. 'Week 8: harvest lettuce, plant bush beans in the empty slot'.
- The schedule derives from crops, planter dimensions and local growing season data.
- It is reachable directly from the main Plan View.
- Basic crop rotation principles are respected.
Be warned if selected crops are incompatible or sub-optimal for shared planters.
- Incompatibility triggers the companion warning message.
- The warning appears on the Plan View or during crop selection.
- It offers actionable suggestions such as separate planters.
Be informed if my planters have limited space for optimal growth, so I can manage expectations.
- Severe space constraints show 'Limited space for optimal growth: consider fewer crops or larger planters.'
- The message appears prominently after generation or during selection.
- The system still generates the most optimal plan it can.
Download or print my planting plan, so I can use it while gardening without being online.
- A prominent Print/Export Plan button sits on the Plan View.
- It generates a downloadable PDF of the visual plan and succession schedule.
- The export carries layout, crop placement, expected yield and schedule.
Retry generating a plan if a backend error occurs, so a temporary failure doesn't cost me my inputs.
- Failures show 'Oops! We encountered an issue generating your plan. Please try again later.'
- A clear Retry button re-initiates generation without losing selections.
- The app does not crash and preserves input state.
General system & error handling
1 story · 1 shouldApplication-wide concerns around data persistence and user feedback during network issues.
Be notified of network issues during saving or retrieval, so I understand what happened and what to do.
- Network errors show 'Could not save/load data. Check your internet connection.'
- The failed action can be retried once connectivity returns.
- Form input and selections are retained where technically feasible.
- Handling applies consistently across all persistence and retrieval points.
Coverage — Onboarding, planter management and the central yield optimization features. All critical flow steps, edge cases and error states are converted into dev-ready stories, scoped to address the riskiest assumption: user trust in algorithmically-generated plans.
Nine screens, all MVP-critical.
Greets new users and prompts them to begin the initial garden setup, capturing their enthusiasm to start maximizing their harvest.
Guides new users through defining balcony dimensions and adding initial planters — the backbone of Container-First Setup.
The home screen after onboarding, with one clear call to action to create the first planting plan.
An overview of active planting plans, for quick access or creating new ones.
Choose which planters this plan covers — the entry to the Guided Plan Wizard.
Choose crops, with the High-Value Crop Selector visually highlighting recommended options.
Displays the Optimized Planting Map and Automated Succession Schedule — the core value delivery.
Central place to view, add, edit and manage all defined planters.
A reusable interface for adding or modifying planters, with fields that adapt to the container type.
A persistent top-nav bar carries 'Dashboard' and 'My Planters'. Onboarding and plan creation are linear wizards with Next / Back / Finish. Adding and editing planters happens in a modal overlay.
Desktop-first but fully responsive to mobile. Card grids collapse to single column; wizards and modals stay readable, with modals converting to full-screen flows on very small viewports.
'Warm Consumer Minimalism' — grid-based layout with generous white space; Lexend for headers, Inter for body; primary #1A472A for backgrounds and accents, secondary #D87D4A for highlights, accent #FDE68A for interactive elements and badges. Simple line-art iconography. Card grids for planters and crops, primary buttons for key actions, text inputs throughout. Carried directly from the MAP-tier brand work.
Welcome to Plot
/welcomeGreets new users and prompts them to begin initial garden setup, capturing their enthusiasm to start maximizing their harvest.
Single-page layout: centred content block, logo, one prominent call to action.
- Plot logo — Brand mark for recognition.
- Welcome headline — States the app’s purpose in one line.
- Get Started button — Navigates to Onboarding: Garden Setup.
- default — Welcome message and Get Started button, ready for interaction.
- initial_load — Brief spinner while the page loads.
- Get Started must be clearly visible and clickable.
- Clicking it must navigate to the garden setup flow.
- The screen appears for first-time users on successful registration.
Onboarding: Garden Setup
/onboarding/garden-setupGuides new users through defining balcony dimensions and adding initial planters — the backbone of Container-First Setup.
Full-screen wizard: progress indicator at top, input area in the middle, navigation at the bottom.
- Progress indicator — Shows the current step, e.g. Step 1/3.
- Width & depth inputs — Numeric, validated for positive values.
- Planter type radios — Rectangular, round, self-watering trough — changes the dimension fields below.
- Planter dimensions group — Length/width/depth for rectangular; diameter/depth for round.
- Add Planter — Adds to a temporary list and clears the fields for another.
- Finish Setup — Completes onboarding; disabled until at least one planter is added.
- step_1_balcony_dimensions — Width and depth; Next enabled only on valid input.
- step_2_planter_type_selection — Radio group with visual examples; Add New Planter CTA visible.
- step_3_planter_details_and_list — Type-specific dimensions plus the list of planters added so far.
- invalid_input_error — Inline ‘Please enter valid measurements (e.g. 2.5m or 8ft)’ under the field.
- User can move through every step of the wizard.
- Inputs validate numeric entries and reject non-positive values.
- Finish Setup stays disabled until at least one planter is added.
- Visual feedback confirms each planter added to the list.
Dashboard — empty state
/dashboardThe home screen after onboarding, with one clear call to action to create the first planting plan.
Top nav (Dashboard, My Planters); main area shows the planters added during onboarding and a single prominent CTA.
- Top navigation bar — Links to Dashboard and My Planters.
- Planter list overview — Summary of planters from onboarding with names and dimensions.
- Create First Planting Plan — Starts the plan wizard at Select Planters.
- empty — Planter list plus a clear call to action to create the first plan.
- loading — Skeleton or spinner over the content area while planter data loads.
- The list of initial planters is visible on the dashboard.
- Create Your First Planting Plan is the most prominent action.
- Clicking it correctly starts the planting plan wizard.
Dashboard — populated
/dashboardAn overview of active planting plans, for quick access or creating new ones once data exists.
Top nav; a section for active plans as cards, and a smaller planter-count overview beneath.
- Top navigation bar — Links to Dashboard and My Planters.
- Active plans list — Card grid; each card links through to /plans/:planId.
- Create New Planting Plan — Starts the wizard at Select Planters.
- Planter count overview — A simple count of all defined planters.
- populated — Existing plans listed, with the option to view or create.
- loading — Skeleton over the plan list and overview while fetching.
- All active plans are listed with their names and associated planters.
- Clicking a plan card navigates to that plan’s detail view.
- Create New Planting Plan is easily accessible.
- The planter count accurately reflects the number defined.
Create Plan Wizard: Select Planters
/plans/new/select-plantersLets the user choose which planters this plan covers — the entry point to the Guided Plan Wizard.
Full-screen wizard: progress indicator, a grid of selectable planter cards, Back and Next at the bottom.
- Progress indicator — Current step within the plan creation wizard.
- Planter selection cards — One card per planter with a checkbox; selection updates the plan.
- Add New Planter link — Opens the Add/Edit Planter modal to define one on the fly.
- Next — Proceeds to Select Crops; disabled if nothing is selected.
- Back — Returns to the dashboard.
- default — All available planters shown as selectable cards; Next disabled.
- planter_selected — One or more checked; Next enabled.
- empty_planter_list — ‘No planters found. Please add a planter to continue.’ with a prominent Add New Planter button.
- All user-defined planters appear as selectable options.
- Multiple planters can be selected for a single plan.
- Next is active only when at least one planter is selected.
- Add New Planter opens the planter creation modal.
Create Plan Wizard: Select Crops
/plans/new/select-cropsLets users choose crops, with the High-Value Crop Selector visually highlighting recommended options.
Full-screen wizard: progress indicator, a search bar, a scrollable grid of crop cards, Back and Next.
- Progress indicator — Current step within the wizard.
- Crop search input — Filters the crop cards by name.
- Crop selection cards — Checkbox per crop; high-value crops carry a ‘Yield+’ badge.
- Next — Proceeds to plan generation; disabled if nothing is selected.
- Back — Returns to Select Planters.
- default — A curated crop list with high-value crops visually distinct; Next disabled.
- crops_selected — One or more checked; Next enabled.
- search_results — Filtered cards, high-value indicators preserved.
- no_crops_selected_error — Toast: ‘Please select at least one crop to create a plan.’
- Users can search for crops by name.
- High-value crops carry a distinct visual indicator.
- Multiple crops can be selected.
- Next is active only when at least one crop is selected.
Planting Plan View
/plans/:planIdDisplays the Optimized Planting Map and the Automated Succession Schedule — the core value delivery of the whole product.
Top nav; plan title; a top-down visual grid per selected planter; expected yield readout; succession schedule list; export action.
- Per-planter grid map — Top-down placement of each crop, showing optimal spacing and density.
- Expected yield readout — Estimated yield for the selected crops under this layout.
- Succession schedule — Dated action list, e.g. ‘Week 8: harvest lettuce, plant bush beans in the empty slot.’
- Print / Export Plan — Generates a downloadable PDF of the map and schedule.
- generated — Full plan rendered: map, yield and schedule.
- generating — ‘Generating your optimal planting plan…’ with an indeterminate progress indicator.
- companion_warning — Selected crops may not be ideal companions — suggests separate planters.
- space_constrained — ‘Limited space for optimal growth: consider fewer crops or larger planters.’
- generation_error — ‘Oops! We encountered an issue generating your plan.’ with a Retry action.
- All elements of the plan — map, yield and schedule — must be visible and easily understandable.
My Planters
/plantersA central place to view, add, edit and manage all defined planters — supporting Container-First Setup.
Top nav; a grid of planter cards with a prominent Add New Planter button above them.
- Top navigation bar — Links to Dashboard and My Planters.
- Page title — Names the current section.
- Add New Planter — Opens the Add/Edit Planter modal to create one.
- Planter cards — Card grid showing name, dimensions, Edit and Delete.
- Edit — Opens the modal pre-filled with that planter’s details.
- Delete — Removes the planter after a confirmation prompt.
- populated — Grid of all planters with add, edit and delete options.
- empty — ‘You haven’t added any planters yet!’ with a prominent Add New Planter button.
- deleting_confirmation — A modal or toast confirming before permanent deletion.
- All planters are listed with names and dimensions.
- Add New Planter is clearly visible and functional.
- Users can edit an existing planter’s details.
- Users can delete a planter, with a confirmation step.
Add / Edit Planter modal
/planters/add-edit-modalA reusable interface for adding or modifying planters, with fields that adapt to the container type.
Centred modal dialog over the current screen, with a form that adjusts its inputs to the selected planter type.
- Modal title — Reads ‘Add New Planter’ or ‘Edit Planter: [name]’.
- Planter type radios — Rectangular, round and others — changes the visible dimension fields.
- Name input — Required; validated for uniqueness within the user’s own planters.
- Dimension inputs — Dynamic by type: length/width/depth, or diameter/depth. Positive numbers only.
- Save Planter — Validates, persists, closes the modal.
- Cancel — Closes without saving.
- new_planter_form — Empty fields; planter type selection active.
- edit_planter_form — Pre-filled with existing details; type may be locked.
- invalid_input_error — Inline ‘Planter name already exists’ or ‘Dimension must be a positive number.’
- saving_processing — Spinner on the Save button while submitting.
- The modal allows a name and dimensions to be entered.
- Dimension fields adjust dynamically to the planter type.
- Save stays disabled until all required fields are valid.
- A successful save closes the modal and refreshes the parent screen.
- The modal offers a way to cancel and discard changes.
A software product, not a landscaping one.
Though the industry classifier put this under Building Services & Landscaping, the offering is a mobile software application. The real exposure is data privacy and consumer protection for SaaS — GDPR, CCPA/CPRA, and general business and IP protections — not urban agriculture regulation.
Thirty days of evidence.
Validate the core behavioural hypothesis: will urban gardeners trust and consistently follow a bespoke, prescriptive container planting plan? This concierge test gathers real market evidence to determine whether a software build is justified — or a pivot is required.
Validate before build
Days 1–14Determine if enthusiastic urban novices will follow a custom, prescriptive container gardening plan when manually provided — without any product code.
- Create an online form collecting planter dimensions, sun exposure and desired vegetables.
- Draft a Reddit post for r/BalconyGardening and r/UrbanGardening offering free hyper-optimized custom planting plans.
- Build a customizable PDF template for the planting map and 3-month succession schedule.
- Set up a dedicated email address for participant communication.
Done when — form live, Reddit posts published, 10 participants registered.
Kill signal — fewer than 5 sign-ups within 7 days.
- Analyze input from the first 10 participants on containers, sun exposure and desired plants.
- Manually create personalized PDF planting maps and 3-month succession schedules for each.
- Email each plan with clear next steps and a request for a photo once planted.
- Log interactions, delivery dates and follow-up reminders in a spreadsheet.
Done when — all 10 participants have their plans by Day 14.
Kill signal — the manual process can't deliver all 10 by Day 14, invalidating concierge feasibility.
Alpha test + polish
Days 15–30Measure actual adherence to the concierge plans, gather feedback on perceived value, and make a go/no-go decision on a software build.
- Follow up with participants who haven't sent photos; give light email support.
- Run 5-minute video calls with 3–5 participants on perceived value, clarity and implementation challenges.
- Track how many send photos of containers planted to the map.
- Document qualitative feedback — especially reasons for non-adherence.
Done when — at least 2 participants (20%) send photos by Day 22.
Kill signal — fewer than 2 photos by Day 22: low willingness to follow prescriptive advice.
- Review all adherence data and interview feedback.
- Identify common points of confusion; sketch software features that would address them.
- Refine the messaging hook and draft preliminary pricing tiers for a future app.
- Present a clear Build vs No-Build recommendation with the evidence behind it.
Done when — evidence supports a definitive go/no-go, with refined messaging and a rough pricing concept.
Kill signal — no clear signal after 30 days; an inconclusive test needs further validation or a pivot.
- Urban novice gardeners struggle enough with yield to seek and value prescriptive guidance.
- The perceived value of a hyper-optimized plan outweighs the effort of following it.
- Reddit communities are an effective, low-cost channel for recruiting this segment.
- Manual generation of 10 bespoke plans is feasible within 7 days for a solo founder.
- Participants will supply photos as evidence of adherence.
- Time — 20 hours/week for 30 days, solo founder.
- Tools — Google Forms, Canva, email client, Reddit.
- Budget — $0–50, mostly for optional Reddit boosts if organic reach falls short.
- Alpha target — Enthusiastic Urban Novice, Gen Z/Millennial, growing food on balconies.
Spec in hand. LAUNCH needs a channel.
Run the concierge test first — the build is gated on it. But LAUNCH is the one tier with no blockers: if 2+ of 10 gardeners plant to the map, you already know your channel, your offer, and who to send it to. Scope the go-to-market before you scope the sprint.
- ·Offer design & pricing
- ·Messaging & headlines
- ·Ranked channel strategy
- ·30-day launch calendar
- ·Metrics plan & triggers
- ·Landing pages & social
This measures how well-sourced the analysis is — not how promising the idea is; that is the score in the verdict. Each section is rated by confidence: High (primary sources) counts fully, Medium (secondary) 60%, Low (estimates) 30%; the average gives the overall score. This analysis rests on secondary research and AI synthesis — validate key assumptions before making major decisions.