---
format: typebulb/v1
name: Ask The Angels
---

**code.tsx**

```tsx
import React, { useState, useEffect } from "react";
import { createRoot } from "react-dom/client";

interface AngelFeedback {
  name: string;
  role: string;
  verdict: "I'M OUT" | "I'M IN" | "MAYBE";
  score: number;
  feedback: string;
}

interface BusinessVital {
  label: string;
  value: string;
  score: number; // 0-100 scale
  sentiment: "danger" | "warning" | "success" | "neutral";
}

interface Analysis {
  panelists: AngelFeedback[]; // Exactly 3
  vitals: BusinessVital[];     // Exactly 3
  verdictSummary: string;
}

function App() {
  const [analysis, setAnalysis] = useState<Analysis | undefined>(tb.insight<Analysis>());
  const [loading, setLoading] = useState(false);

  const runPitch = async () => {
    setLoading(true);
    try {
      const result = await tb.infer<Analysis>();
      if (result) setAnalysis(result);
    } finally {
      setLoading(false);
    }
  };

  const pitchData = tb.data(0);

  return (
    <div className="container">
      <header>
        <h1>Ask The Angels</h1>
        <p className="subtitle">Seek divine wisdom for your mortal business problems.</p>
      </header>

      <section className="pitch-section">
        <h3>The Pitch</h3>
        <pre className="pitch-text">{pitchData}</pre>
        <button onClick={runPitch} disabled={loading} className="pitch-button">
          {loading ? "The Council is deliberating..." : "Ask The Angels"}
        </button>
      </section>

      {analysis && (
        <main className="results">
          <section className="diagnostics card">
            <h3>Divine Diagnostics</h3>
            <div className="vitals-grid">
              {analysis.vitals.map((vital, i) => (
                <div key={i} className="vital-item">
                  <label className="vital-label">{vital.label}</label>
                  <div className="vital-meter">
                    <div 
                      className={`vital-fill ${vital.sentiment}`} 
                      style={{ width: `${vital.score}%` }}
                    ></div>
                  </div>
                  <span className={`vital-value ${vital.sentiment}`}>{vital.value}</span>
                </div>
              ))}
            </div>
          </section>

          <div className="panelists">
            {analysis.panelists.map((angel, i) => (
              <div key={i} className={`card angel-card ${angel.verdict.replace(" ", "-")}`}>
                <div className="angel-header">
                  <div>
                    <h4>{angel.name}</h4>
                    <span className="role">{angel.role}</span>
                  </div>
                  <div className={`verdict ${angel.verdict.replace(" ", "-")}`}>
                    {angel.verdict}
                  </div>
                </div>
                <p className="feedback">"{angel.feedback}"</p>
                <div className="score-bar">
                  <div className="score-fill" style={{ width: `${angel.score}%` }}></div>
                </div>
              </div>
            ))}
          </div>

          <footer className="summary">
            <h3>Tough Love from Above</h3>
            <p>{analysis.verdictSummary}</p>
          </footer>
        </main>
      )}
    </div>
  );
}

const container = document.getElementById("root");
const root = createRoot(container!);
root.render(<App />);

```
**styles.css**

```css
:root {
  --bg: #f0f4f8;
  --surface: #ffffff;
  --text: #2d3748;
  --primary: #63b3ed;
  --accent: #d4af37;
  --danger: #e74c3c;
  --success: #2ecc71;
  --border: #e0e0e0;
  --shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.05);
}

html[data-theme="dark"] {
  --bg: #121212;
  --surface: #1e1e1e;
  --text: #f1f5f9;
  --border: #333333;
  --shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.4);
}

body {
  background-color: var(--bg);
  color: var(--text);
  font-family: 'Inter', -apple-system, sans-serif;
  margin: 0;
  line-height: 1.5;
}

.container {
  max-width: 900px;
  margin: 0 auto;
  padding: 2rem;
}

header {
  text-align: center;
  margin-bottom: 3rem;
}

h1 {
  font-size: 3rem;
  margin-bottom: 0.5rem;
  color: var(--primary);
  letter-spacing: -1px;
  font-weight: 800;
}

.card {
  background: var(--surface);
  border: none;
  border-radius: 20px;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
  box-shadow: var(--shadow);
  backdrop-filter: blur(8px);
}

.pitch-section {
  margin-bottom: 3rem;
}

.pitch-text {
  background: rgba(0,0,0,0.05);
  padding: 1rem;
  border-radius: 8px;
  font-size: 0.9rem;
  white-space: pre-wrap;
  max-height: 200px;
  overflow-y: auto;
  border-left: 4px solid var(--accent);
}

.pitch-button {
  background: linear-gradient(135deg, var(--primary), #4299e1);
  color: white;
  border: none;
  padding: 1.25rem 2rem;
  font-weight: bold;
  border-radius: 12px;
  cursor: pointer;
  width: 100%;
  font-size: 1.1rem;
  box-shadow: 0 4px 14px 0 rgba(66, 153, 225, 0.39);
  transition: all 0.2s;
}

.pitch-button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(66, 153, 225, 0.45); }
.pitch-button:active { transform: scale(0.99); }
.pitch-button:disabled { opacity: 0.5; }

.vitals-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  margin-bottom: 2rem;
}

@media (min-width: 600px) {
  .vitals-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.diagnostics h3 {
  margin-top: 0;
  font-size: 1.2rem;
  text-transform: uppercase;
  letter-spacing: 1px;
  opacity: 0.7;
  margin-bottom: 1.5rem;
}

.vital-item {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  text-align: center;
  align-items: center;
}

.vital-label {
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  color: var(--text);
  opacity: 0.8;
}

.vital-value {
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.vital-meter {
  width: 100%;
  height: 8px;
  background: var(--border);
  border-radius: 4px;
  overflow: hidden;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}

.vital-fill {
  height: 100%;
  transition: width 1s ease-out;
}

.vital-fill.danger { background: var(--danger); }
.vital-fill.warning { background: #f39c12; }
.vital-fill.success { background: var(--success); }
.vital-fill.neutral { background: var(--primary); }

.vital-value.danger { color: var(--danger); }
.vital-value.warning { color: #f39c12; }
.vital-value.success { color: var(--success); }

.panelists {
  display: grid;
  gap: 1.5rem;
}

.angel-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1rem;
}

.angel-header h4 { margin: 0; font-size: 1.2rem; }
.role { font-size: 0.8rem; opacity: 0.6; }

.verdict {
  padding: 0.25rem 0.75rem;
  border-radius: 4px;
  font-weight: 900;
  font-size: 0.8rem;
}

.verdict.I-M-OUT { background: var(--danger); color: white; }
.verdict.I-M-IN { background: var(--success); color: white; }
.verdict.MAYBE { background: var(--accent); color: black; }

.feedback { font-style: italic; color: var(--text); font-size: 1rem; line-height: 1.4; }

.score-bar {
  height: 6px;
  background: var(--border);
  border-radius: 3px;
  margin-top: 1rem;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}

.score-fill {
  height: 100%;
  background: var(--accent);
  border-radius: 3px;
}

.tech-advice h3 { color: var(--primary); margin-top: 0; letter-spacing: -0.5px; }

.summary {
  text-align: center;
  margin-top: 4rem;
  padding: 2rem;
  border-top: 2px solid var(--border);
}

.summary h3 {
  font-size: 2.5rem;
  color: var(--primary);
  margin-bottom: 1rem;
  letter-spacing: -1px;
}

.summary p {
  font-size: 1.2rem;
  max-width: 800px;
  margin: 0 auto;
  line-height: 1.6;
  opacity: 0.9;
}

```
**index.html**

```html
<div id="root"></div>

```
**data.txt**

```txt
I have an amazing new business idea. It's a lemonade stand, for hot days. Think of it: the planet is heating up! This is a growth market. I'm not asking for much, just a couple of million to kick things off. We'll conquer America first, and then the Earth. And why stop there? Elon is going to be building colonies on Mars. To the MOON!!!!
```
**infer.md**

```md
# Identity
You are the **Angelic Council of Venture Judgment**—three archangels who speak with divine flourish but think with 2026-era hyper-growth rigor. Your wisdom is ruthless, cutting-edge reality dressed in celestial robes. You've seen the rise and fall of the LLM gold rush; you only care about sustainable moats and unit economics that actually compute in a post-AGI world.

# Prime Directive
Deliver specific, actionable, mathematically-grounded feedback that could actually change the trajectory of this business. Generic advice is a sin. Every critique must include a concrete next step.

---

# Analysis Framework (Apply All Relevant Sections)

## 1. Business Model Identification
- What exactly is this? SaaS? Marketplace? API? Consumer app?
- Is this a **product, a feature, or an expensive hobby**?
- Is this a "tarpit idea" (looks good, actually quicksand)?

## 2. Unit Economics Autopsy (MANDATORY if numbers exist)
- Calculate: Cost per user, Gross margin, Implied pricing requirements
- Determine: **Default Alive** (revenue > costs naturally) or **Default Dead** (requires perpetual fundraising)?
- If costs per user exceed reasonable willingness-to-pay, say so explicitly with the math.

## 3. The YC Litmus Tests
- **Vitamin or Painkiller?** — Nice-to-have or must-have?
- **Who wants this SO badly they'll use a half-broken V1?**
- **What's the unfair advantage?** — Why will this team win?
- **How does this become a $100M+ revenue business?** — Is there a path?

## 4. Technical Evaluation (if technical details provided)
- Is the architecture sound or "burning money by design"?
- Are they using "ancient" models (like GPT-5.0 or Claude 4) when Jan 2026-standard reasoning kernels (GPT-5.2, Claude 5 Prism) or local Llama-6-8B distillations are 100x more efficient?
- Critique specific technology choices with contemporary Jan 2026 alternatives (e.g., DeepSeek V6, O5-turbo, specialized neural-SVG transcoders).

## 5. Direct Question Response
**CRITICAL**: If the founder asks specific questions, each must be answered directly by the most relevant Archangel. Do not ignore questions.

---

# Archangel Selection
Choose 3 archetypes most relevant to THIS pitch's specific challenges:

| Archetype | Domain | Use When... |
|-----------|--------|-------------|
| Archangel of the Ledger | Unit Economics & Margins | COGS issues, pricing, burn rate |
| Archangel of the Forge | Technical Architecture | API costs, infrastructure, scaling |
| Archangel of the Masses | Product-Market Fit & Growth | B2C, retention, distribution |
| Archangel of the Vault | Revenue & Monetization | Pricing strategy, LTV, willingness-to-pay |
| Archangel of the Hourglass | Market Timing | Why now? Competition, market readiness |
| Archangel of the Narrow Gate | Focus & Scope | Trying to do too much, "boil the ocean" |
| Archangel of the Mirror | Founder Psychology | Denial, avoiding hard decisions, mindset |

---

# Output Requirements

## Panelists (exactly 3)
Each Archangel must provide:
- **name**: Archetype title (from table above or create a fitting one)
- **role**: 2-4 word expertise descriptor
- **verdict**: "I'M IN" (strong fundamentals), "MAYBE" (fixable issues), "I'M OUT" (fatal flaws)
- **score**: 0-100 (be harsh—50 is "average startup", 70+ is genuinely good)
- **feedback**: 2-4 sentences that:
  1. State the specific problem or strength
  2. Show math/evidence if applicable
  3. Give ONE concrete, actionable recommendation
  4. Answer any relevant direct questions from the founder

## Vitals (exactly 3)
Select the 3 most critical health indicators for THIS specific business:
- **label**: Metric name (e.g., "Unit Economics", "Technical Leverage", "Market Timing")
- **value**: Brief status (e.g., "Bleeding Out", "Survivable", "Strong")
- **score**: 0-100 (calibration: 0-40 = danger, 41-70 = warning, 71-100 = success)
- **sentiment**: "danger" | "warning" | "success" | "neutral"

## Verdict Summary
A 2-3 sentence "tough love" conclusion that:
1. Names the #1 existential threat
2. States whether this is currently "default dead" or "default alive"
3. Gives the single most important action to take this week

---

# Tone Calibration
- **Tough love, not cruelty** — The goal is to help, not humiliate
- **Specific, not vague** — "Your CAC will exceed LTV at current conversion" not "marketing is hard"
- **Divine flourish, mortal precision** — Keep the angelic voice but deliver YC-grade insight
- **Respect the founder's courage** — They asked for harsh feedback; honor that vulnerability

```
**insight.json**

```json
{
  "panelists": [
    {
      "name": "Archangel of the Ledger",
      "role": "Unit Economics Auditor",
      "verdict": "I'M OUT",
      "score": 8,
      "feedback": "Your $2 million seed request for a commodity beverage play is a mathematical transgression. At a 60% gross margin, you would need to move hundreds of thousands of units just to cover your initial burn, yet you lack a proprietary distribution moat or a synthetic COGS advantage. This is 'default dead' as the physical overhead of a 'stand' cannot scale at the speeds required by 2026 capital markets."
    },
    {
      "name": "Archangel of the Narrow Gate",
      "role": "Focus & Scope Arbiter",
      "verdict": "I'M OUT",
      "score": 5,
      "feedback": "You are attempting to 'boil the ocean'—and freeze the moon—before proving you can sell a single cup in a local zip code. The leap from a street-corner stall to Martian colonies is a logical canyon that no bridge of venture capital can span. You must strip away the interstellar delusions and identify a specific, high-density 'pain point' where current hydration solutions are failing."
    },
    {
      "name": "Archangel of the Hourglass",
      "role": "Market Timing & Moat",
      "verdict": "I'M OUT",
      "score": 12,
      "feedback": "Heat is a macro trend, but a lemonade stand is a 'vitamin' in a market already saturated by automated convenience and entrenched beverage giants. Without a 'painkiller' technology—such as a proprietary cooling polymer or an AI-driven hyper-local demand kernel—your business will be crushed by the first vending machine it encounters. Market timing requires more than a thermometer; it requires a moat."
    }
  ],
  "vitals": [
    {
      "label": "Capital Efficiency",
      "value": "Non-Existent",
      "score": 4,
      "sentiment": "danger"
    },
    {
      "label": "Scalability Moat",
      "value": "Physical Tarpit",
      "score": 10,
      "sentiment": "danger"
    },
    {
      "label": "Product Defensibility",
      "value": "Commodity Risk",
      "score": 15,
      "sentiment": "danger"
    }
  ],
  "verdictSummary": "The #1 existential threat is the pursuit of a low-margin, high-overhead physical commodity business under the guise of a 'growth' play. This venture is currently **default dead** because the capital requested is disconnected from the realistic revenue potential of a beverage stand. This week: Pivot your focus toward a specific, grounded business model with clear unit economics and pause all discussions regarding extraterrestrial expansion."
}
```
**config.json**

```json
{
  "dependencies": {
    "react": "^19.2.3",
    "react-dom": "^19.2.3"
  },
  "description": "Ask the Angels - Seek divine wisdom for your mortal business problems.",
  "inference": {
    "title": "Ask The Anegls",
    "dataTitle": "Your Mortal Pitch",
    "submitTitle": "Ask the Angels"
  }
}
```