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:
parent
9f71d346e9
commit
321d4dc840
2 changed files with 53 additions and 28 deletions
|
|
@ -462,12 +462,23 @@ export const buildings = [
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
/** The investor ask. */
|
/** The investor ask — two entry points into SolLunar Society. */
|
||||||
export const investorAsk = {
|
export const investorAsk = {
|
||||||
|
options: [
|
||||||
|
{
|
||||||
amount: 400_000,
|
amount: 400_000,
|
||||||
equity: 0.1,
|
equity: 0.1,
|
||||||
valuation: 4_000_000,
|
label: 'Get started',
|
||||||
scenarios: [0.1, 0.25], // profit-share scenarios on the recomputed yearly profit
|
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. */
|
/** Roadmap / replication story. SolLunar Society first, then the network. */
|
||||||
|
|
|
||||||
|
|
@ -4,39 +4,53 @@ import Icon from '../components/Icon.vue'
|
||||||
import { brand, investorAsk, pnl, fmtUsd } from '../data'
|
import { brand, investorAsk, pnl, fmtUsd } from '../data'
|
||||||
|
|
||||||
const pct = (n: number) => Math.round(n * 100)
|
const pct = (n: number) => Math.round(n * 100)
|
||||||
// annual profit-share per scenario, on the recomputed yearly profit
|
// annual profit share per option, on the recomputed yearly profit
|
||||||
const shares = investorAsk.scenarios.map((s) => ({ equity: s, annual: Math.round(pnl.yearlyProfit * s) }))
|
const options = investorAsk.options.map((o) => ({ ...o, annual: Math.round(pnl.yearlyProfit * o.equity) }))
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<SlideFrame center>
|
<SlideFrame center>
|
||||||
<p class="text-xs font-semibold uppercase tracking-[0.3em] text-amber">The ask</p>
|
<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">
|
<h2 class="mt-4 font-display text-4xl font-semibold text-fg sm:text-5xl">Two ways in</h2>
|
||||||
{{ fmtUsd(investorAsk.amount) }} for {{ pct(investorAsk.equity) }}% of SolLunar Society
|
<p class="mt-3 text-fg-muted">Invest in SolLunar Society — the first node, opening in Austin.</p>
|
||||||
</h2>
|
|
||||||
<p class="mt-3 text-fg-muted">
|
<!-- the two options -->
|
||||||
{{ fmtUsd(investorAsk.valuation) }} valuation · the first node, open in Austin
|
<div class="mx-auto mt-9 grid w-full max-w-2xl gap-5 sm:grid-cols-2">
|
||||||
|
<div
|
||||||
|
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'"
|
||||||
|
>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<p class="mt-5 text-xs text-fg-muted">
|
||||||
|
Both on SolLunar Society’s ~{{ fmtUsd(pnl.yearlyProfit) }}/yr node profit (recomputed).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- profit-share scenarios -->
|
<div class="mt-8 flex flex-col items-center gap-3 sm:flex-row">
|
||||||
<div class="mt-8 flex flex-wrap items-stretch justify-center gap-4">
|
|
||||||
<div
|
|
||||||
v-for="s in shares"
|
|
||||||
:key="s.equity"
|
|
||||||
class="rounded-2xl border border-line bg-surface px-6 py-4"
|
|
||||||
>
|
|
||||||
<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>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mt-9 flex flex-col items-center gap-3 sm:flex-row">
|
|
||||||
<a
|
<a
|
||||||
:href="`mailto:${brand.contactEmail}`"
|
: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"
|
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>
|
</button>
|
||||||
</div>
|
</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.
|
Prove the model in Austin, then replicate it on Lab 484 — the summit gathering and the farm are next.
|
||||||
</p>
|
</p>
|
||||||
</SlideFrame>
|
</SlideFrame>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue