Business Validation Framework
A repeatable, AI-driven method for validating and launching businesses.
Core Idea
Every new business — whether dropshipping, SaaS, info product, or service — answers the same fundamental question: will people pay for this? This framework answers that question in 4 weeks for ~$2-5k using AI agents to do the work that would take a team of humans months.
The framework is business-model-agnostic. The first four stages are identical regardless of what you’re selling. Only the “fulfillment backend” changes.
The Method
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1. RESEARCH │ ──→ │ 2. PRESENCE │ ──→ │ 3. TRAFFIC │ ──→ │ 4. VALIDATE │
│ (AI agent) │ │ (storefront) │ │ (paid ads) │ │ (metrics) │
└─────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
│
┌────────┴────────┐
│ GO / ITERATE │
│ / KILL │
└─────────────────┘
Stage 1: Research (Days 1-3)
Input: A business idea or niche keyword. Output: Structured market report with GO/NO-GO recommendation.
The research agent:
- Market sizing — search volume, TAM estimates, competition density
- Customer discovery — scrape Reddit, Amazon reviews, forums, Quora for pain points, objections, buying triggers, demographics
- Competitive landscape — who else is in the space, their pricing, positioning, weaknesses
- Persona generation — 3-5 buyer personas with demographics, pain points, and messaging angles
- Positioning recommendation — how to differentiate, what angles to test
- Unit economics estimate — expected CPA range, margin analysis, break-even scenarios
Tools (existing in Omni): WebSearch (Kagi), WebReader, Http, Browser, LLM reasoning via Agent/Op framework.
New build required: A composable research workflow/skill that chains these tools together with structured LLM prompts. Output is a JSON/markdown report.
Stage 2: Presence (Days 3-7)
Input: Research report. Output: A live web presence (landing page or storefront) optimized for conversion.
The agent generates and deploys:
- Headlines, copy, CTAs derived from research personas
- Product/service description
- Pricing
- Checkout or lead capture mechanism
Presence backends (pluggable):
| Business Type | Backend | Checkout | Notes |
|---|---|---|---|
| Physical product (dropship) | Shopify store | Shopify checkout | Shopify GraphQL Admin API for programmatic product creation |
| SaaS | Custom landing page (Lucid/HTML) | Stripe Checkout | Already built for StreetSignal, PIL |
| Info product / newsletter | Landing page | Stripe or Gumroad | Minimal — email capture + payment |
| Service | Landing page + booking | Calendly or Cal.com embed | Lead capture + qualification |
Key design constraint: The landing page must be generatable by an LLM. This means templated HTML (Lucid, Jinja, or a headless CMS) where the agent fills in copy, images, and pricing from the research report. Not hand-coded per business.
Tools (existing): Lucid HTML (Haskell), Servant web framework, Stripe billing (PIL), Omni/Deploy. New build required: Landing page template system — a set of HTML templates the LLM populates. Shopify API client (for physical products only).
Stage 3: Traffic (Days 7-21)
Input: Landing page URL, research report (for targeting), ad copy variants. Output: Live ad campaigns driving traffic to the presence.
The agent:
- Generates ad copy — platform-specific formats from research personas
- Google RSA: 15 headlines (30 chars) × 4 descriptions (90 chars)
- Meta: primary text + headline + description + image, per persona
- Creates campaigns — programmatically via platform APIs
- Sets budgets and bidding — start with maximize-conversions, fixed daily budget
- Monitors performance — daily pulls of impressions, clicks, CTR, conversions, CPA
Ad copy generation is pure LLM work — structured prompt that takes the research report and outputs correctly-formatted ad variants. This can be a skill/workflow, no API integration needed.
Platform integrations:
| Platform | API | Auth | Difficulty | Notes |
|---|---|---|---|---|
| Google Ads | REST/gRPC, google-ads Python lib |
OAuth2 service account, developer token (Basic Access) | Medium | Best for intent-based search. Need manager account + Cloud project. |
| Meta Ads | REST Marketing API | System User token via Business Manager | Medium | Best for awareness/interest targeting. No App Review for own account. |
| TikTok Ads | Marketing API | Developer access + OAuth | Medium | Good for younger demos, viral products. |
| Reddit Ads | Ads API | OAuth | Low | Good for niche communities. Lower volume. |
Minimum viable: Google Ads alone is sufficient for validation. Meta adds reach. TikTok/Reddit are optional for specific niches.
New build required: Google Ads API client, Meta Ads API client, ad copy generation workflow.
Stage 4: Validate (Days 21-28)
Input: Campaign performance data (14+ days). Output: GO / ITERATE / KILL decision with confidence level.
Core metrics:
- CPA (cost per acquisition) — what does each customer cost?
- CVR (conversion rate) — landing page effectiveness
- ROAS (return on ad spend) — revenue / ad cost (if taking real orders)
- CTR (click-through rate) — ad creative quality signal
- Statistical significance — enough data to trust?
Decision matrix:
| Signal | Action |
|---|---|
| CPA < margin AND CVR > 2% AND n > 50 conversions | GO — scale budget, source product/build product |
| CPA close to margin OR low n | ITERATE — new ad copy, different angles, adjust targeting |
| CPA > 2× margin after $2k+ spend | KILL — abandon this niche, test next one |
| High CTR but low CVR | Landing page problem — iterate on copy/design, not ads |
| Low CTR | Ad creative problem — generate new variants |
New build required: Metrics aggregation script, unit economics calculator, significance test. Can start as a spreadsheet/script, formalize into a dashboard later.
What Exists in Omni Today
| Component | Status | Location | Notes |
|---|---|---|---|
| Web search (Kagi) | ✅ Ready | Omni/Agent/Tools/WebSearch.hs | Core research tool |
| Web scraping/reading | ✅ Ready | Omni/Agent/Tools/WebReader.hs, Browser.hs | Content extraction |
| HTTP client | ✅ Ready | Omni/Agent/Tools/Http.hs | API calls |
| Agent Op framework | ✅ Ready | Omni/Agent/Op.hs | Composable agent programs |
| Lucid HTML templating | ✅ Ready | Used in StreetSignal, other sites | Landing page generation |
| Stripe billing | ✅ Ready | Biz/PodcastItLater/ | Checkout, webhooks, subs |
| Deploy pipeline | ✅ Ready | Omni/Deploy | Ship to biz host |
| Process supervisor | ✅ Ready | Omni/Agentd | Run background jobs |
| Vision tool | ✅ Ready | Omni/Agent/Tools/Vision.hs | Image analysis |
| LLM providers | ✅ Ready | Omni/Agent/Provider.hs | Claude, GPT, etc. |
| Component | Status | Notes |
|---|---|---|
| Research workflow | 🔨 Build | Compose existing tools into structured pipeline |
| Landing page templates | 🔨 Build | Parameterized HTML that LLM populates |
| Ad copy generator | 🔨 Build | Structured LLM prompt → platform-formatted output |
| Shopify API client | 🔨 Build | GraphQL, Python or Haskell |
| Google Ads API client | 🔨 Build | Python google-ads library |
| Meta Ads API client | 🔨 Build | Python REST client |
| Validation dashboard | 🔨 Build | Metrics aggregation + decision engine |
Application: StreetSignal
StreetSignal is a SaaS product — hyperlocal crime analysis for Columbus RE investors.
Current state:
- Business model canvas done (~/omni/ava/Biz/StreetSignal.md)
- Landing page built (Haskell/Lucid/Servant, ~/omni/ava/Biz/StreetSignal/Web.hs)
- Sample report generated for German Village
- Stripe checkout link (placeholder)
- Key hypotheses identified (H1-H6), none validated
Applying the framework:
| Stage | StreetSignal specifics |
|---|---|
| Research | Partially done (BMC exists). Gaps: no systematic scrape of Columbus RE investor forums, no keyword volume data for “Columbus crime data” / “Columbus neighborhood safety” searches. Run the research agent to fill gaps. |
| Presence | Landing page exists but needs polish. Stripe link is placeholder. Deploy to real domain. Make the sample report compelling. |
| Traffic | Run $1-2k in Google Ads: “Columbus crime data”, “Columbus neighborhood safety”, “Columbus real estate investment research”. Target Columbus metro, interests = real estate investing. |
| Validate | Measure: landing page → Stripe checkout conversion rate. If >2% CVR at <$50 CPA, GO. If <1% after $1k spend, probably KILL or pivot the framing. |
StreetSignal-specific open questions:
- H1 (will they pay $150/mo?) can be directly tested via this framework
- H6 (retention) cannot be tested pre-launch — but initial conversion validates demand
- The $150/mo price point means you only need ~20 subscribers to cover costs
Application: High-Ticket Dropshipping
Current state: No niche selected. Framework for execution outlined (~/ava/ben/business/dropship-agent-plan.md).
Applying the framework:
| Stage | Dropship specifics |
|---|---|
| Research | Run research agent on candidate niches: infrared saunas, ice baths, standing desks, outdoor pizza ovens, e-bikes. Pick the one with best TAM / competition ratio. |
| Presence | Shopify store. Agent creates product listing from research report. Need Shopify API client. |
| Traffic | Google Shopping Ads + Meta Ads. Higher budget needed (~$5k) because physical product conversion is lower than SaaS trial. |
| Validate | CPA < product margin. For a $3k sauna with 30% margin ($900), CPA must be <$900. Realistically want CPA <$200 for healthy unit economics. |
Implementation Plan
Phase 1: Research Agent (Week 1)
Build the niche research workflow as an Ava skill or Agent Op program.
Tasks:
- Design the research prompt chain (keyword → searches → scrape → synthesize → report)
- Build structured output format (JSON schema for market report)
- Test on 2-3 niches to calibrate quality
- Test on StreetSignal’s market to validate against known information
Deliverable: research_niche("keyword") → structured market report
Phase 2: Presence Layer (Week 1-2)
Build the landing page template system + Shopify client.
Tasks:
- Create parameterized HTML landing page template (Lucid or Jinja) — takes: headline, subhead, body copy, CTA text, price, product image URL, testimonials
- Build Shopify GraphQL API client (for dropship path)
- Deploy StreetSignal landing page to real domain with real Stripe link
- Test: research report → landing page generation → live URL
Deliverable: create_presence(research_report, business_type) → live URL
Phase 3: Ad System (Week 2-3)
Build ad copy generation + platform API clients.
Tasks:
- Ad copy generation prompt (research report → platform-formatted ad variants)
- Google Ads API: account setup, developer token, Python client, campaign creation
- Meta Ads API: Business Manager setup, System User token, Python client
- Campaign launch automation: takes ad variants + budget + targeting → live campaigns
- Daily metrics pull + storage
Deliverable: launch_campaign(ads, platform, budget) → campaign_id + daily metrics
Phase 4: Validation Engine (Week 3-4)
Build metrics aggregation and decision logic.
Tasks:
- Metrics aggregation: pull from Google + Meta APIs, normalize
- Unit economics calculator: CPA vs margin → profitability
- Statistical significance test: enough conversions to trust the signal?
- Decision recommendation: GO / ITERATE / KILL with explanation
- Simple reporting (markdown report or web dashboard)
Deliverable: validate(campaign_ids) → {verdict, metrics, confidence, recommendation}
Budget per Niche Test
| Item | SaaS (StreetSignal) | Dropship | Notes |
|---|---|---|---|
| Domain | $12/yr | $12/yr | |
| Hosting / Shopify | ~$0 (existing infra) | $39/mo | SaaS uses existing deploy; dropship uses Shopify |
| Google Ads | $1,000-1,500 | $2,500 | 2 weeks of testing |
| Meta Ads | $500-1,000 | $2,500 | Optional for SaaS, important for dropship |
| LLM API | ~$20 | ~$20 | Research + copy generation |
| Total | $1,500-2,500 | $5,000-5,100 |
Timeline
| Week | Milestone |
|---|---|
| 1 | Research agent working. StreetSignal landing page deployed with real Stripe link. |
| 2 | Ad copy generator done. Google Ads API client. First StreetSignal ads live. |
| 3 | Meta Ads API client. Shopify API client. StreetSignal validation data coming in. |
| 4 | Validation engine. StreetSignal GO/KILL decision. Pick first dropship niche. |
| 5+ | If StreetSignal GO: build product. If KILL: run dropship niche through same pipeline. Repeat. |
Open Questions
- StreetSignal first or dropship first? StreetSignal is further along (landing page exists, sample report exists, domain knowledge is deep). Lower validation cost. Recommend starting here.
- Repo location:
Biz/Validation/for the framework,Biz/StreetSignal/andBiz/Dropship/for business-specific code? - How many niches to test in parallel? One at a time keeps focus. Two if you want to hedge.
- Legal structure: LLC before taking real money. Can validate with “waitlist” / “coming soon” flow to avoid needing LLC for initial ad test.
- Your friend’s deal flow / angel investing — orthogonal to this. Learn his ad methods, apply them here. The validation framework is the general version of what he does for saunas.
Principles
- Spend money to learn, not to launch. The $2-5k is tuition, not investment. You’re buying information about whether the business works.
- Kill fast. If the numbers don’t work after 2 weeks of ads, stop. Don’t optimize a bad idea.
- Automate the boring parts. Research, copy generation, campaign setup — these are AI tasks. Your time goes to judgment calls: niche selection, positioning decisions, GO/KILL.
- One framework, many businesses. Every new idea goes through the same 4-stage pipeline. The framework gets better with each iteration.
- Validate before building. Don’t write code, don’t source products, don’t build features until the ads prove demand exists.