PITCH_SECTIONS=["Company name","One-line thesis","Problem","ICP","Why now","Product / service","Business model","Pricing","Route to first customer","Validation plan","$50 capital allocation proposal","Time to first dollar","Path to $500 net cash","Competition","Differentiation","Build requirements","Distribution requirements","Risks","What would falsify the thesis","Confidence"]
AI_NATIVE_POLICY={"preference":"Prefer AI-native opportunities where Artifex can build or deliver most value with existing agents, local inference, and owned workflow capabilities.","preferred_classes":["AI wrapper platforms","AI-enabled services","AI infrastructure / developer tools","AI research / intelligence products","AI automation for SMB / enterprise workflows"],"soft_portfolio_targets":{"ai_wrapper_platforms":"40-50%","ai_enabled_services":"20-30%","developer_infrastructure_intelligence":"10-20%","non_ai_economic_outliers":"10-20%"},"penalize_concentration":["Shopify/ecommerce","generic audits","emergency fix services","one-off consulting","identical outbound-led service models"],"do_not":"Do not let AI novelty outweigh customer demand."}
evidence.append({"type":"capability_gap","source":"internal","summary":"Public web market research is not configured; demand/competitor evidence is unverified.","fallback_evidence":True})
self._artifact(proposal,mandate,"STANDARDIZED_COMPANY_PITCH","Standardized Company Pitch",pitch,self.readable_pitch(pitch),"Company Brain/Sol"ifsource=="sol"else"deterministic_fallback",graph_run=graph_run)
response=self.router.complete(ModelRequestContract(purpose=ModelCapability.REASONING,model_hint=self.research_model_hint,prompt="Bounded public web market research for exactly one startup pitch. Return JSON with keys: sources (list of {url,title,category,summary}), findings (object keyed by competitors, pricing, customer_pain, market_alternatives, regulatory_platform_risks), and coverage (object with each required key true/false). Do not fabricate URLs. If a category has no source, mark coverage false. Pitch: "+json.dumps(proposal.pitch,default=str)))
proposal.market_evidence=[*self._as_list(proposal.market_evidence),*research.get("sources",[]),{"type":"research_coverage","source":"venture_research","summary":f"Source-linked research coverage: {round(coverage_ratio*100)}%","coverage":coverage,"unverified_categories":research["unverified_categories"]}]
self._artifact(proposal,proposal.mandate,"MARKET_RESEARCH","Bounded Public Market Research",research,self._readable_research(research),"Luna/web research"ifresearch.get("provider")else"research_gap",graph_run=graph_run)
"CEO":["Mandate fit is strongest if validation sells a narrow paid audit before product build.","Keep the first dollar path service-led, not SaaS-led."],
"CTO":["Build can use existing Artifex analysis, reporting, and frontend capabilities.","Avoid integrations until willingness-to-pay evidence exists."],
"CFO":["$50 cap is adequate only for lightweight landing page/listing tests, not paid acquisition learning.","High margin is plausible because delivery is mostly labor/compute already available."],
"CRO":["Founder/operator communities are reachable manually, but V0 cannot contact customers.","Pricing must start as a paid diagnostic to avoid long SaaS evaluation cycles."],
"Independent Director":["Demand evidence is weak without public research or customer conversations.","The company must prove urgency before building automation."],
}
weaknesses=["No customer outreach or paid test has occurred.","Public web research is unavailable, so market evidence remains partial.","First customers may require trust and examples before paying."]
revisions=["Frame offer as a productized validation audit with optional Artifex-assisted build plan.","Make falsification criteria explicit before spend."]
pitch=dict(proposal.pitch)
pitch["What would falsify the thesis"]="Fewer than 5 credible target-customer responses or zero willingness-to-pay signals after a compliant validation test."
review=CompanyBoardReview.objects.create(proposal=proposal,observations=observations,strengths=["Service-led revenue path can precede product build.","Uses current Artifex planning, engineering, and review capabilities.","Small validation budget aligns with a narrow paid offer."],weaknesses=weaknesses,key_assumptions=["Target customers feel enough urgency to pay for validation clarity.","Manual outbound or community posting can generate credible responses without spam.","Artifex can produce a differentiated audit faster than generic consultants."],required_revisions=revisions,recommendation="PROCEED_TO_IC_WITH_REVISIONS",revised_pitch=pitch,metadata={"roles":list(observations),"company_does_not_grade_itself":True,"identity_validation":identity})
self._artifact(proposal,proposal.mandate,"IC_FIRST_PASS","IC First-Pass Review",{"status":diligence.status,"initial_concerns":["Demand evidence is unverified.","Distribution assumptions need evidence.","Need validation gate before any spend."]},"IC first pass: proceed to evidence-seeking questions; do not score final decision yet.","Independent IC",graph_run=graph_run)
challenge={"concerns":["The offer may be perceived as generic consulting unless anchored to a painful, immediate decision.","Without public research or customer contact, demand remains a hypothesis.","Manual distribution could fail if the target audience distrusts AI-generated audits."],"required_final_response":["Narrow ICP further.","Specify willingness-to-pay proof.","Define hard kill criteria."],"recommendation":"continue_to_final_response"}
self._artifact(diligence.proposal,diligence.proposal.mandate,"IC_RED_TEAM","IC Red-Team Challenge",challenge,"Red-team concerns:\n"+"\n".join(f"- {c}"forcinchallenge["concerns"]),"Independent IC Red Team",graph_run=graph_run)
response={"narrowed_icp":diligence.proposal.target_customer,"revised_validation_gate":"Before any spend, collect 5 credible target-customer responses or 1 explicit willingness-to-pay signal through compliant non-spam channels.","kill_criteria":["No credible responses after 10 targeted, compliant conversations/posts once outreach is approved.","No willingness-to-pay signal at $49-$99.","Customers only want free advice, not a paid report."],"pitch_changes":{"ICP":"Preserve canonical proposal ICP.","Validation plan":"Gate spend behind credible response/willingness-to-pay evidence."}}
self._artifact(diligence.proposal,diligence.proposal.mandate,"IC_FINAL_RESPONSE","Final Company Response",response,json.dumps(response,indent=2),"Company reasoning roles",graph_run=graph_run)
decision=ICDecision.objects.create(diligence=diligence,decision=decision_type,component_scores=scores,composite_score=composite,probability_500_within_30_days=scores["Probability of Reaching $500"],initial_tranche=tranche,validation_condition="Obtain 5 credible target-customer responses or 1 explicit willingness-to-pay signal before any build or further spend.",evidence_required=["response transcripts or public thread URLs","proof of willingness-to-pay signal","no-spam/no-fabrication compliance note"],recommended_allocation={"initial_tranche":float(trancheor0),"remaining_reserved":50-float(trancheor0),"no_spend_in_v0":True},kill_criteria=diligence.final_response.get("kill_criteria",[]),next_decision_point="After validation evidence is collected and before any real spend or customer delivery.",metadata={"decision_vocabulary":[item.valueforiteminICDecisionType],"no_actual_funding":True,"score_basis":"source_linked_research_and_pitch_attributes","probability_calibration":calibration},evidence_tier=diligence.proposal.evidence_tier,raw_probability_500_within_30_days=calibration["raw_probability"],evidence_ceiling=calibration["evidence_ceiling"],probability_explanation=calibration["explanation"],score_definitions=SCORE_DEFINITIONS)
self._artifact(diligence.proposal,diligence.proposal.mandate,"IC_FINAL_SCORE","IC Final Scoring and Decision",{"scores":scores,"score_definitions":SCORE_DEFINITIONS,"decision":decision.decision,"composite_score":composite,"conditional_funding":{"initial_tranche":str(decision.initial_tranche),"condition":decision.validation_condition},"score_basis":decision.metadata["score_basis"],"probability_calibration":calibration},self._readable_score(decision),"Independent IC",graph_run=graph_run)
memo={"Company":proposal.title,"Thesis":proposal.pitch["One-line thesis"],"Mandate":proposal.mandate.objective,"Requested capital":str(proposal.capital_requested),"Recommended allocation":decision.recommended_allocation,"IC decision":decision.decision,"Key metrics":{"P($500 within 30 days)":decision.probability_500_within_30_days,"raw P($500 within 30 days)":decision.raw_probability_500_within_30_days,"evidence ceiling":decision.evidence_ceiling,"evidence tier":decision.evidence_tier,"AI leverage":decision.component_scores.get("AI Leverage"),"platformization potential":decision.component_scores.get("Platformization Potential"),"estimated time to first dollar":proposal.time_to_first_dollar_estimate,"expected gross margin":proposal.expected_margin,"validation cost":"$10-$20 initial tranche; $50 maximum after approval","build effort":proposal.build_complexity,"distribution feasibility":decision.component_scores["Distribution Feasibility"]},"Research evidence":proposal.pitch.get("Research evidence",{}),"Why it may work":["Revenue path starts with a paid diagnostic, not a full SaaS build.","Artifex has planning, engineering, frontend, review, graph, and agent-control capabilities already.","Validation budget can be gated behind evidence."],"Why it may fail":diligence.red_team_challenge.get("concerns",[]),"Diligence questions":[q.questionforqindiligence.questions.all()],"Company responses":[r.answerforrinICResponse.objects.filter(question__diligence=diligence)],"Red-team concerns":diligence.red_team_challenge.get("concerns",[]),"IC scoring":decision.component_scores,"Score definitions":decision.score_definitions,"Capital recommendation":decision.recommended_allocation,"Validation gates":[decision.validation_condition],"Kill criteria":decision.kill_criteria,"Next decision point":decision.next_decision_point,"Capability gap":{"available":gap.available,"partial":gap.partial,"missing":gap.missing}}
returnself._artifact(proposal,proposal.mandate,"FINAL_INVESTMENT_MEMO","Final IC Investment Memo",memo,self._readable_memo(memo),"Independent IC",graph_run=graph_run)
return{"raw_probability":float(raw_probability),"evidence_adjusted_probability":adjusted,"evidence_ceiling":ceiling,"evidence_tier":tier,"explanation":f"{tier} caps P($500/30d) at {ceiling}%; IC uses {adjusted}%."}
return{"classification":classification,"similarity_score":score,"overlapping_dimensions":overlap,"explanation":f"Overlap {overlap}; text similarity {text_score:.2f}."}
response=self.router.complete(ModelRequestContract(purpose=ModelCapability.PLANNING,model_hint="sol",prompt="Generate exactly ONE startup idea for Venture Discovery V0. Return a single JSON object, not a list. Respect no spend and no outreach in V0. Keep the $50 to $500 in 30 days mandate. Prefer, but do not require, AI-native businesses where Artifex can deliver most value using agents/local inference: AI wrapper platforms, AI-enabled services, AI infrastructure/developer tools, AI intelligence products, or SMB/enterprise workflow automation. Do not let AI novelty outweigh customer demand. Penalize generic audits, emergency fix services, one-off consulting, Shopify/ecommerce concentration, and identical outbound-led service models unless exceptional. Include title, one_line_thesis, description, problem, target_customer, proposed_solution, business_model, pricing_hypothesis, acquisition_strategy, validation_plan, capital_requested, time_to_first_dollar_estimate, expected_margin, build_complexity, market_evidence, differentiation, major_risks, confidence."+slot+" Mandate: "+json.dumps({"objective":mandate.objective,"constraints":mandate.constraints,"optimization_targets":mandate.optimization_targets,"ai_native_policy":AI_NATIVE_POLICY})))
payload["market_evidence"]=[{"type":"fallback_hypothesis","source":"deterministic_fallback","summary":"No Sol/web research was used; this is an internal hypothesis for test/resilience only.","fallback_evidence":True}]
return{"title":"LaunchLens","one_line_thesis":"A productized validation audit helps solo builders decide whether an AI-enabled microbusiness is worth pursuing before they spend weeks building.","description":"LaunchLens sells a concise validation and launch-readiness report for one microbusiness idea.","problem":"Solo technical founders often overbuild AI products before proving willingness to pay.","target_customer":"Solo technical founders and small service operators considering an AI-assisted microbusiness.","proposed_solution":"A fixed-scope paid audit that evaluates ICP, first-dollar route, validation gates, build plan, risks, and Artifex capability gaps.","business_model":"Productized service first, with optional later software tooling if demand is proven.","pricing_hypothesis":"$49-$99 per audit, with a higher-touch $250 implementation planning upsell after validation.","acquisition_strategy":"Compliant founder-community posts, personal network asks, and content showing anonymized example audits after outreach is approved.","validation_plan":"Before any build, seek 5 credible target-customer responses or 1 willingness-to-pay signal through compliant channels once approved.","capital_requested":"50","time_to_first_dollar_estimate":"3-10 days after outreach is approved","expected_margin":"70-85% gross margin after manual delivery time","build_complexity":"LOW","market_evidence":[],"differentiation":"Combines venture IC-style diligence with Artifex's software/agent execution awareness and explicit capability-gap reporting.","major_risks":["Demand may be consulting-like and hard to differentiate.","Manual distribution may not produce urgent buyers.","No V0 customer evidence exists yet."],"confidence":0.52}
pitch={"Company name":payload["title"],"One-line thesis":payload["one_line_thesis"],"Problem":payload["problem"],"ICP":payload["target_customer"],"Why now":"AI tooling lowers build cost, increasing the risk that founders overbuild before validating demand.","Product / service":payload["proposed_solution"],"Business model":payload["business_model"],"Pricing":payload["pricing_hypothesis"],"Route to first customer":payload["acquisition_strategy"],"Validation plan":payload["validation_plan"],"$50 capital allocation proposal":{"initial":"$10 only after approval","reserved":"$40 held until evidence gate","v0_spend":"$0"},"Time to first dollar":payload["time_to_first_dollar_estimate"],"Path to $500 net cash":"Sell 6-10 fixed-scope audits at $49-$99 while keeping delivery manual and using sunk Artifex compute.","Competition":"Generic startup consultants, founder communities, AI business idea tools, and DIY validation templates. Public competitor research is unverified unless web research is configured.","Differentiation":payload["differentiation"],"Build requirements":["report template","intake form","manual analysis workflow","optional landing page after validation approval"],"Distribution requirements":["compliant outreach plan","community/content channels","CRM-lite tracking before first customers"],"Risks":payload["major_risks"],"What would falsify the thesis":"No willingness-to-pay signal at $49-$99 or fewer than 5 credible target-customer responses after approved compliant validation.","Confidence":payload["confidence"],"Evidence caveat":"Deterministic fallback evidence only; not equivalent to Sol or public web research."iffallbackelse"Generated by Sol; public web research still only included if sources are present."}
return[{"category":"demand","question":f"What evidence supports demand for {pitch['Company name']} among the stated ICP?"},{"category":"urgency","question":"Why will this customer pay now instead of using free templates or advice?"},{"category":"distribution","question":"How do you reach the first 10 customers without spam or fake traction?"},{"category":"validation","question":"Can this be validated before building the full product?"},{"category":"business_model","question":"Why a productized service first instead of SaaS?"},{"category":"falsification","question":"What would falsify the thesis within the $50 and 30-day mandate?"},{"category":"economics","question":"What happens if acquisition cost or manual delivery time is 3x the estimate?"},{"category":"competition","question":"What is the main competitive threat and why is this worth funding over selling an existing Artifex capability?"}]
evidence.append({"source":"capability_gap","summary":"Public web research unavailable; demand/competition claims remain uncertain.","fallback_evidence":True})
answers={"demand":"Demand is not proven. The strongest V0 claim is that the problem is plausible and cheap to test, not that demand exists.","urgency":"The buyer pays only if the report saves them build time or prevents wasted spend; urgency is weakest before a concrete launch decision.","distribution":"After approval, use targeted compliant posts/conversations and track responses manually; V0 performs no outreach.","validation":"Yes. The paid diagnostic can be validated with responses and willingness-to-pay before software build.","business_model":"Service first reduces build risk and can reach first cash faster than SaaS; software should follow only if repeated demand appears.","falsification":"Failure to collect credible responses or willingness-to-pay within the mandate falsifies near-term viability.","economics":"If acquisition or delivery is 3x harder, the company should stop or raise price before building tooling.","competition":"Main threat is generic consulting/free templates. The reason to fund this over selling raw Artifex capability is packaging a buyer-specific outcome."}
return{"answer":answers.get(question.category,"The assumption remains uncertain and must be tested before spend."),"evidence":evidence,"uncertainty":"High until public research and customer evidence are available.","pitch_changes":{"confidence_adjustment":"reduced/held due missing external evidence"}ifquestion.categoryin{"demand","competition"}else{}}
{"category":"Company Brain","status":CapabilityStatus.PARTIAL,"rationale":"Venture reasoning exists in V0 but is not a persistent operating brain.","priority":CapabilityPriority.BEFORE_SCALING,"evidence":{}},
{"category":"Board","status":CapabilityStatus.AVAILABLE,"rationale":"Structured CEO/CTO/CFO/CRO/Independent Director review exists for V0.","priority":CapabilityPriority.BEFORE_VALIDATION,"evidence":{}},
{"category":"IC","status":CapabilityStatus.AVAILABLE,"rationale":"Bounded IC diligence, questions, scoring, and decision vocabulary exist.","priority":CapabilityPriority.BEFORE_VALIDATION,"evidence":{}},
{"category":"WEB_MARKET_RESEARCH","status":web_status,"rationale":"Bounded source-linked web research exists only when configured and category coverage is complete.","priority":CapabilityPriority.BEFORE_VALIDATION,"evidence":{"web_research_available":self.web_research_available,**research}},
{"category":"software build","status":CapabilityStatus.AVAILABLE,"rationale":"Task execution, coding, review, tests, and graph runtime exist.","priority":CapabilityPriority.BEFORE_FIRST_CUSTOMER,"evidence":{}},
{"category":"frontend design","status":CapabilityStatus.AVAILABLE,"rationale":"Frontend agents and Django UI path exist.","priority":CapabilityPriority.BEFORE_FIRST_CUSTOMER,"evidence":{}},
{"category":"deployment","status":CapabilityStatus.PARTIAL,"rationale":"Deployment planning exists, but company-specific production deployment workflow is not implemented.","priority":CapabilityPriority.BEFORE_FIRST_CUSTOMER,"evidence":{}},
{"category":"outbound sales","status":CapabilityStatus.MISSING,"rationale":"No compliant outreach/sequence/customer contact system exists and V0 forbids outreach.","priority":CapabilityPriority.BEFORE_VALIDATION,"evidence":{}},
{"category":"payments","status":CapabilityStatus.MISSING,"rationale":"No payment collection system exists.","priority":CapabilityPriority.BEFORE_FIRST_CUSTOMER,"evidence":{}},
{"category":"customer support","status":CapabilityStatus.MISSING,"rationale":"No support inbox or customer service workflow exists.","priority":CapabilityPriority.BEFORE_SCALING,"evidence":{}},