feat(deck): ask offers two entry points ($400k/10% and $900k/25%)

$400k for 10% gets things started; $900k for 25% funds full execution.
The Ask slide now shows both as side-by-side options, each with its
annual profit share on SolLunar's recomputed node profit. Slide 7
(ownership) stays the base $400k/10% structure, matching the 45/45/10 bar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Patrick Mulligan 2026-08-01 01:11:15 +02:00
commit 321d4dc840
2 changed files with 53 additions and 28 deletions

View file

@ -462,12 +462,23 @@ export const buildings = [
},
]
/** The investor ask. */
/** The investor ask — two entry points into SolLunar Society. */
export const investorAsk = {
amount: 400_000,
equity: 0.1,
valuation: 4_000_000,
scenarios: [0.1, 0.25], // profit-share scenarios on the recomputed yearly profit
options: [
{
amount: 400_000,
equity: 0.1,
label: 'Get started',
blurb: 'Seeds the launch — sign the lease, fit out the space and open the doors.',
},
{
amount: 900_000,
equity: 0.25,
label: 'Full execution',
blurb: 'Funds the full build-out and the first operating year end to end.',
featured: true,
},
],
}
/** Roadmap / replication story. SolLunar Society first, then the network. */

View file

@ -4,39 +4,53 @@ import Icon from '../components/Icon.vue'
import { brand, investorAsk, pnl, fmtUsd } from '../data'
const pct = (n: number) => Math.round(n * 100)
// annual profit-share per scenario, on the recomputed yearly profit
const shares = investorAsk.scenarios.map((s) => ({ equity: s, annual: Math.round(pnl.yearlyProfit * s) }))
// annual profit share per option, on the recomputed yearly profit
const options = investorAsk.options.map((o) => ({ ...o, annual: Math.round(pnl.yearlyProfit * o.equity) }))
</script>
<template>
<SlideFrame center>
<p class="text-xs font-semibold uppercase tracking-[0.3em] text-amber">The ask</p>
<h2 class="mt-4 font-display text-4xl font-semibold text-fg sm:text-5xl">
{{ fmtUsd(investorAsk.amount) }} for {{ pct(investorAsk.equity) }}% of SolLunar Society
</h2>
<p class="mt-3 text-fg-muted">
{{ fmtUsd(investorAsk.valuation) }} valuation · the first node, open in Austin
</p>
<h2 class="mt-4 font-display text-4xl font-semibold text-fg sm:text-5xl">Two ways in</h2>
<p class="mt-3 text-fg-muted">Invest in SolLunar Society the first node, opening in Austin.</p>
<!-- profit-share scenarios -->
<div class="mt-8 flex flex-wrap items-stretch justify-center gap-4">
<!-- the two options -->
<div class="mx-auto mt-9 grid w-full max-w-2xl gap-5 sm:grid-cols-2">
<div
v-for="s in shares"
:key="s.equity"
class="rounded-2xl border border-line bg-surface px-6 py-4"
v-for="o in options"
:key="o.label"
class="relative flex flex-col rounded-2xl border p-6 text-left"
:class="o.featured ? 'border-indigo-500/50 bg-indigo-500/[0.07]' : 'border-line bg-surface'"
>
<p class="text-xs uppercase tracking-wider text-fg-muted">{{ pct(s.equity) }}% share</p>
<p class="mt-1 font-display text-3xl font-bold text-fg">{{ fmtUsd(s.annual) }}</p>
<p class="text-xs text-fg-muted">/ yr profit</p>
</div>
<div class="rounded-2xl border border-pine-500/40 bg-pine-500/[0.07] px-6 py-4">
<p class="text-xs uppercase tracking-wider text-pine">Node profit</p>
<p class="mt-1 font-display text-3xl font-bold text-fg">{{ fmtUsd(pnl.yearlyProfit) }}</p>
<p class="text-xs text-fg-muted">/ yr (recomputed)</p>
<span
v-if="o.featured"
class="absolute -top-3 left-6 rounded-full bg-indigo-400 px-3 py-0.5 text-[11px] font-semibold uppercase tracking-wider text-on-accent"
>
Full build
</span>
<p
class="text-xs font-semibold uppercase tracking-wider"
:class="o.featured ? 'text-indigo' : 'text-fg-muted'"
>
{{ o.label }}
</p>
<div class="mt-1 flex items-baseline gap-2">
<span class="font-display text-4xl font-bold text-fg">{{ fmtUsd(o.amount) }}</span>
<span class="text-sm text-fg-muted">for {{ pct(o.equity) }}%</span>
</div>
<p class="mt-2 flex-1 text-sm text-fg-muted">{{ o.blurb }}</p>
<p class="mt-4 border-t border-line pt-3 text-sm text-fg">
~<span class="font-semibold">{{ fmtUsd(o.annual) }}</span
><span class="text-fg-muted"> / yr profit share</span>
</p>
</div>
</div>
<div class="mt-9 flex flex-col items-center gap-3 sm:flex-row">
<p class="mt-5 text-xs text-fg-muted">
Both on SolLunar Societys ~{{ fmtUsd(pnl.yearlyProfit) }}/yr node profit (recomputed).
</p>
<div class="mt-8 flex flex-col items-center gap-3 sm:flex-row">
<a
:href="`mailto:${brand.contactEmail}`"
class="inline-flex items-center gap-2 rounded-full bg-amber-400 px-6 py-3 font-semibold text-on-accent transition hover:bg-amber-300"
@ -52,7 +66,7 @@ const shares = investorAsk.scenarios.map((s) => ({ equity: s, annual: Math.round
</button>
</div>
<p class="mt-9 max-w-xl text-sm text-fg-muted">
<p class="mt-8 max-w-xl text-sm text-fg-muted">
Prove the model in Austin, then replicate it on Lab 484 the summit gathering and the farm are next.
</p>
</SlideFrame>