Skip to content
KENNAN · DISPATCH · 2026.06.28 · NYC · LON · FRA

AI workspace for analyst work · Pre-launch

Kennan is the analyst seat on your team.

Kennan does what an analyst does: pulling data from files, conducting the research, building the business case, producing the presentation. A week's work, finished in hours.

Try the slider. Services growth moves the cash flow and the memo with it.

kennan / halcyon / fy26-28-planv.02 · draft
§ 2 · Plan

The FY26–FY28 operating plan, anchored to the FY25 close¹ and the FY26 budget, projects free cash flow rising from $81M in FY26 to $111M² in FY28 — driven by the mix shift to services as the recurring tail outgrows the equipment line.

The plan turns on the services ramp. At an FY26–FY28 services CAGR of 15.0%, FCF lands at $111M; each percentage point lifts FCF by ~$3.7M. Equipment held at 5% per the channel forecast; the plan pack carries the upside and downside cases.

¹HAL_FY25_close.xlsx · Segments tab · audited
²halcyon_plan_v1.py · stored program

The problem Kennan solves

Analysts are hired to think. Most of the week goes to everything else.

Before anyone can think, the numbers have to be pulled together, the model built, the presentation produced. By the time that is done the week is mostly gone, and the thinking gets whatever is left.

01 · Clean data~ days

Sales by market in CSV. Payroll as PDFs with merged cells for titles. All to be consolidated and extracted before the model can start.

02 · Modeling× every scenario

Revenue is built from drivers, by business line and by market — not one growth rate. Three scenarios means three Excel files; comparing them means a fourth tab.

03 · Present~ a day

The model finally settles after many ping-pong iterations. Then the deck: graphs from Excel, boxes aligned in think-cell or PowerPoint, commentary written by hand.

Where the analyst week goes100% of one week

The work the case turns on is the smallest slice, because everything to its left has to happen first.

Then the strategy meeting hits: “what if the average price users are willing to pay is 20% lower?” The answer comes hours later, or from a calculator on the table.

And that assumes you have an analyst at all.

Most people making real decisions don't. So the case gets done badly on a spreadsheet, made on instinct, or sent to a bank or consulting firm at a steep price. Rigorous analysis has always been gated, by the team you staff or the firm you hire.

Data analytics, research, modeling, presentation

What the agent delivers.

The work behind a real business case is hours of pulling numbers out of messy PDFs and Excel files, reading long filings, running a dozen web searches, and rebuilding the model whenever we need a different scenario. Kennan is a browser workspace built around that work. You bring your files, set the assumptions, the agent gives you back the business case.

01·

Data

Pulls data out of PDFs, Excel files, PowerPoint decks, and websites. Normalizes the result into clean, typed rows.

02·

Research

Reads long documents and runs web searches across multiple rounds. Every figure it surfaces has a source attached.

03·

Modeling

Builds the model once and runs your scenarios off the same code. Change a single assumption and the model recalculates in under two seconds.

04·

Presentation

Writes the memo or builds the deck for whichever audience you're presenting to. Every number cites a source; every assumption you set is listed.


§ 1 · The workspace

Where the project lives, across sessions.

Projects on the left, the agent's working thread in the middle, your deliverables on the right — one workspace per piece of work. Pick up where you left off; scroll back through the agent's reasoning; hand the project to a colleague without losing the audit trail.

Kennan
Good signal — Klaviyo has already reported Q1 FY26 and the FY25 10-K is filed (Feb 2026). Let me pull the latest disclosures.
Web researchdone
query: Klaviyo Q1 2026 earnings results 28% revenue growth customer count guidance
Web researchdone
query: Klaviyo fiscal year 2025 full year revenue results 10-K February 2026
Web fetcherror
url: https://investors.klaviyo.com/financials/quarterly-results/default.aspx
Kennan
Web researchdone
query: "Klaviyo" Q1 2026 results revenue $290 million guidance
Web researchdone
query: KVYO Klaviyo Q4 2025 earnings press release revenue annual
Web researchdone
query: Klaviyo 10-K 2024 customer count 167000 ARPA net revenue retention
Kennan
Web fetcherror
url: https://investors.klaviyo.com/news/news-details/2025/Klaviyo-Announces-Fourth-Quarter-and-Fiscal-Year-2024-Financial-Results/default.aspx
Web fetcherror
url: https://s203.q4cdn.com/135375496/files/doc_financials/2024/q4/KVYO-Q4-2024-Investor-Presentation.pdf
Web researchdone
query: Klaviyo Q1 Q2 Q3 2025 quarterly revenue customer count guidance progression
Kennan
Web fetcherror
url: https://investors.klaviyo.com/news/news-details/2026/Klaviyo-Delivers-Outstanding-2025-Results-32-Revenue-Growth-Record-Fourth-Quarter-and-…
Web fetcherror
url: https://investors.klaviyo.com/news/news-details/2025/Klaviyo-Delivers-Outstanding-Third-Quarter-with-32-Revenue-Growth-Raises-Full-Year-Gui…
Web fetcherror
url: https://www.investing.com/news/transcripts/earnings-call-transcript-klaviyo-q1-2026-exceeds-expectations-raises-guidance-93CH-4661332
Kennan
Web researchdone
query: "Klaviyo" "fiscal year 2025" revenue $1.23 OR $1.24 billion 193000 customers
Web researchdone
query: Klaviyo 2025 annual revenue gross margin operating income non-GAAP EBITDA
Web researchdone
query: Klaviyo Q3 2025 NRR 113 customer growth large customer enterprise mid-market
Kennan
Web fetchdone
url: https://finance.yahoo.com/news/klaviyo-inc-kvyo-q4-2025-050202009.html
Web fetchdone
url: https://finance.yahoo.com/news/klaviyo-inc-kvyo-q3-2025-050651109.html
Web researchdone
query: Klaviyo Q1 2026 customer count 197000 198000 ARR run rate revenue
Kennan
I have enough sourced data to build a high-fidelity model. Let me check the workspace setup, then construct the assumptions and code.
Readdone
{"file_path":"/workspace/INDEX.md"}
Web researchdone
query: Klaviyo Q1 2026 196000 customers $50K ARR 4175 Q2 guidance $359 $363
Kennan
I have all the inputs sourced. Building the model now — taxonomy first, then assumptions with provenance, then the calculation script.
Readdone
{"limit":50,"file_path":"/workspace/lib/manifest_helper.py"}
Kennan
I have the full input set. Writing the taxonomy first, then assumptions with provenance, then the calculation script.
Writedone
{"content":"{\n \"purpose\": \"Klaviyo bottom-up operating model — FY26-FY28\",\n \"purposeRationale\": \"Three-year forward P&L for Klaviyo (NASDAQ: KVYO) a…
Kennan
Writedone
{"content":"{\n \"revenue_fy24_actual\": {\n \"label\": \"Revenue FY24 actual\",\n \"value\": 937500000,\n \"type\": \"currency\",\n \"category\":…
Kennan
Now the calculation script. This is the single program — reads assumptions, builds quarterly + annual + sensitivity, emits manifest.
Writedone
{"content":"\"\"\"Klaviyo (KVYO) bottom-up operating model — FY26-FY28.\n\nBuild sequence:\n 1. Read assumptions (FY24, FY25 actuals + Q1 FY26 actual + Q2 FY2…
Kennan
Python · executedone
{"description":"Run the Klaviyo bottom-up operating model — emits manifest with metrics, tables, charts, schedules, narratives.","output_mode":"hybrid"}
Kennan
`assumptions` in the Python runtime is the flat values map (per contract), so `v.get('source')` fails on the floats. Let me hardcode the default count — I know the construction.
Editdone
{"file_path":"/workspace/script.py","new_string":"**3. Margin path is partly speculative.** {n_default_assumptions} of the {len(assumptions)} model assumptions…
Kennan
Editdone
{"file_path":"/workspace/script.py","new_string":"**Default-sourced assumptions (flagged for review).** {n_default_assumptions} of {len(assumptions)} assumptio…
Kennan
Editdone
{"file_path":"/workspace/script.py","new_string":"# ─── 1. Read assumptions ─────────────────────────────────────────────────\n# Hydration flattens assumptions…
Kennan
Python · executeerror
{"description":"Rerun with the default-count fix.","output_mode":"hybrid"}
Kennan
Schedule rows can't have `None`. Substituting real values where computable and 0 where genuinely missing.
Editdone
{"file_path":"/workspace/script.py","new_string":"# FY24 YoY growth: revenue +34% (FY23 was $698M per Klaviyo 10-K); customer +16.8% (143k → 167k); ARPA leave…
Kennan
Editdone
{"file_path":"/workspace/script.py","new_string":"# ARPA growth FY24 placeholder = 0 (no FY23 ARPA recompute in scope); FY25 implied; FY26+ from assumptions\na…
Kennan
Python · executedone
{"description":"Rerun after schedule None→float fix.","output_mode":"hybrid"}
Kennan
Model is live. Quick cosmetic fix — the NRR label rounds `115% → 114%` from float truncation. Let me patch that.
Editdone
{"file_path":"/workspace/script.py","new_string":" x=[f\"{round(s['NRR']*100)}%\" for s in sens_rows],\n y=[s['FY28 Revenue']/1e6 for s in sens_rows],","…
Kennan
Editerror
{"file_path":"/workspace/script.py","new_string":" x=[f\"{round(s['NRR']*100)}%\" for s in sens_rows],\n mode='lines+markers+text',","old_string":" x=…
Kennan
Grepdone
path: /workspace/script.py
Kennan
Editdone
{"file_path":"/workspace/script.py","new_string":" x=[f\"{round(s['NRR']*100)}%\" for s in sens_rows],","old_string":" x=[f\"{int(s['NRR']*100)}%\" for s…
Editdone
{"file_path":"/workspace/script.py","new_string":" periods=[f\"NRR {round(s['NRR']*100)}%\" for s in sens_rows], display_scale='millions')","old_…
Kennan
Python · executedone
{"description":"Rerun after NRR label round fix.","output_mode":"hybrid"}
Kennan
Model is live across both Output and Summary tabs. Headline numbers: | Year | Revenue | YoY | Adj EBITDA | Margin | |---|---|---|---|---| | FY25A | $1.23B | +32% | $191M | 15.5% | | **FY26E** | **$1.52B** | **+23%** | **$258M** | **17.0%** | | FY27E | $1.82B | +20% | $392M | 21.5% | | FY28E | $2.13B | +17% | **$542M** | **25.5%** | **NRR sensitivity (FY28):** every +5pp of NRR adds ~$165M of revenue / ~$115M of EBITDA. 100% → 120% spread is **$308M → $797M** in FY28 EBITDA…
New analysis step…
FY25 Revenue (USD, actual)
$1.23B
FY26 Revenue (USD, base)
$1.52B
FY27 Revenue (USD, base)
$1.82B
FY28 Revenue (USD, base)
$2.13B
FY26 Adj EBITDA (USD)
$258.4M
FY27 Adj EBITDA (USD)
$391.8M
FY28 Adj EBITDA (USD)
$542.1M
FY28 Adj EBITDA margin
25.5%
FY28 ending customers
259,089
FY28 blended ARPA (USD)
$8,520
Base-case NRR (FY26-FY28)
110.0%
Revenue & growth trajectory
01k2k3k10203040FY24AFY25AFY26EFY27EFY28ERevenue (USD M)YoY growth (%)
RevenueYoY growth
Margin walk FY24-FY28
0255075100FY24AFY25AFY26EFY27EFY28EMargin (%)
Gross marginOp margin (non-GAAP)Adj EBITDA margin
NRR → FY28 revenue & EBITDA
01k2k3k02505007501k100%105%110%115%120%FY28 Revenue (USD M)FY28 Adj EBITDA (USD M)
FY28 RevenueFY28 Adj EBITDA
FY28 EBITDA scenarios
0200400600800BearBaseBullFY28 Adj EBITDA (USD M)
FY26 quarterly revenue build (customer × ARPA)
QuarterStatusCustomers (EoP)Net addsRevenue (USD)YoY growthAnnualized ARPA (USD)
Q1 FY26Actual196,0003,000$358.0M28.3%$7,362
Q2 FY26Guide midpoint200,0004,000$361.0M23.2%$7,293
Q3 FY26Modeled207,0007,000$387.0M24.5%$7,606
Q4 FY26Modeled218,08911,089$414.0M18.2%$7,792
Annual P&L: FY24A → FY28E (non-GAAP basis, USD)
YearRevenue (USD)Gross profit (USD)Gross marginS&M (USD)R&D (USD)G&A (USD)Op income (USD)Op marginAdj EBITDA (USD)Adj EBITDA margin
FY24A$937.5M$703.1M75.0%$375.0M$187.5M$65.6M$112.5M12.0%$121.9M13.0%
FY25A$1.23B$913.2M74.0%$468.9M$222.1M$80.2M$178.9M14.5%$191.3M15.5%
FY26E$1.52B$1.13B74.5%$547.2M$258.4M$83.6M$243.2M16.0%$258.4M17.0%
FY27E$1.82B$1.38B75.5%$619.6M$291.6M$91.1M$373.6M20.5%$391.8M21.5%
FY28E$2.13B$1.63B76.5%$680.2M$329.5M$95.7M$520.8M24.5%$542.1M25.5%
NRR sensitivity: FY28 revenue & adj EBITDA (USD)
NRRFY27 RevenueFY28 RevenueFY28 Adj EBITDAFY28 EBITDA Margin∆ Revenue vs Base
100.0%$1.67B$1.79B$308.1M17.2%$-334.2M
105.0%$1.75B$1.95B$422.4M21.6%$-170.9M
110.0%$1.82B$2.13B$542.1M25.5%$0.0M
115.0%$1.90B$2.30B$667.0M28.9%$178.5M
120.0%$1.97B$2.49B$797.3M32.0%$364.6M
Bear / Base / Bull scenarios (USD)
CaseFY26 Revenue (USD)FY27 Revenue (USD)FY28 Revenue (USD)FY28 EBITDA marginFY28 Adj EBITDA (USD)Driver assumption
Bear$1.48B$1.71B$1.92B20.5%$393.8MNRR 105%, customer +ARPA growth −2pp ea, EBITDA margin −500bps vs base
Base$1.53B$1.84B$2.15B25.5%$547.0MNRR 110%, base customer + ARPA path (built up from Q1 FY26 actual)
Bull$1.59B$1.98B$2.39B29.5%$705.3MNRR 115%, customer +ARPA growth +2pp ea, EBITDA margin +400bps vs base
1. Executive summary
Klaviyo enters FY26 with a +28% Q1 print, ~196k paying customers, and a $1.4B exit-FY25 ARR. The two-year story is durable double-digit growth (18% CAGR FY26-FY28) compounded by margin expansion from 17% EBITDA in FY26 to 25% by FY28 — a rule-of-40+ profile by any cut.
2. Investment thesis & key drivers
Thesis. Klaviyo is the category-defining marketing automation platform for B2C e-commerce, with a $1.23B revenue base, 75% non-GAAP gross margins, and a customer base scaling +16% YoY into a mid-market / enterprise mix-shift tailwind. The bottom-up build supports +24% / +20% / +17% revenue growth FY26-FY28 with operating leverage taking adj EBITDA margin from 16% (FY25) to 25% (FY28). Driver decomposition. The ARPA story is more important than the headcount story. Customer count growth decelerates (13% → 8%) on a maturing SMB base, but the >$50K ARR cohort is growing +38% YoY — that…
3. Bear / Base / Bull
NRR sensitivity (FY28). Every +5pp of NRR adds ~$165M to FY28 revenue and ~$115M to FY28 EBITDA (incremental margin on expansion ~70%). The 100% vs 120% NRR FY28 EBITDA spread is $489M — NRR is the single highest-leverage assumption in the model.
4. Risks
1. NRR is the dominant variance driver. A 5pp NRR miss (base 110% → bear 105%) compresses FY28 EBITDA by ~$125M. NRR is exposed to (a) SMB e-commerce demand cycles, (b) Shopify platform dependency, (c) any pricing-driven churn from price discipline. 2. Customer count deceleration. SMB net-adds are slowing structurally. Q1 FY26 added only 3k customers vs ~10k in Q4 FY25 BFCM — partly seasonal but the base of 196k is large and incremental net-adds get harder. The model assumes the >$50K ARR cohort growth (+38% YoY) carries ARPA mix shift; if mid-market traction stalls, the ARPA story s…
5. Recommendation
Underwrite at base. Klaviyo at $2.13B FY28 revenue / $542M FY28 EBITDA (25%) is a credible base case anchored on disclosed Q1 FY26 actuals and mgmt's raised FY26 guide. The model is most sensitive to NRR — bull case (115%) adds ~$158M of FY28 EBITDA; bear case strips ~$153M. Position around the 110% NRR base; size for variance. Monitoring KPIs (priority order). 1. NRR trajectory — disclosed quarterly. The single highest-leverage metric in the build. 2. >$50K ARR customer cohort — disclosed quarterly. Read for mid-market traction. 3. Non-GAAP operating margin — Q1 FY26 pr…
6. Methodology & default-sourced assumptions
Methodology. - Revenue build: FY26 quarterly = Q1 FY26 actual (358M) + Q2 FY26 guide midpoint (361M) + Q3/Q4 modeled to FY26 raised guide midpoint of $1.52B with Q4 BFCM uplift 7%. FY27 / FY28 use customer count growth × blended ARPA growth. - P&L: Non-GAAP basis (ex-SBC, ex-acquired intangible amortization). Cost ratios applied as % of revenue with explicit annual step-downs. - NRR sensitivity: New-logo dollar contribution held constant at base case; vary NRR on the existing book. Incremental EBITDA margin on NRR-driven expansion = 70% (expansion has minimal incremental S&M /…

Live capture · Klaviyo · bottom-up P&L · FY26–FY28 · agent run on Jun 1, 2026 · 14m 23s end-to-end

§ 2 · Live in the room

Answer the “what if” before the meeting ends, not in a follow-up two days later.

Every IC review hits the same wall: someone asks “what if NRR comes in at 105% instead of 110?” and you take it offline, flip between three Excel versions, and email the answer Tuesday. With Kennan, the sensitivity is already on the deliverable — emitted by the same stored Python program as the base case, in one run.

kennan / klaviyo · bottom-up p&l fy26-fy28NRR 110% · base case
NRR sensitivity · FY27 & FY285 rows · 1 emit · stored program
NRRFY27 RevFY28 RevFY28 EBITDAMargin∆ vs base
100%$1.67B$1.79B$308M17.2%−$334M
105%$1.75B$1.95B$422M21.6%−$171M
110%base$1.82B$2.13B$542M25.5%base
115%$1.90B$2.30B$667M28.9%+$179M
120%$1.97B$2.49B$797M32.0%+$365M
Multi-driver scenarios · FY28NRR + ARPA + margin moved together
Bear20.5%
$1.92B
FY28 revenue
$394MEBITDA
NRR 105%, customer +ARPA growth −2pp ea, EBITDA margin −500bps vs base
Base25.5%
$2.15B
FY28 revenue
$547MEBITDA
NRR 110%, base customer + ARPA path (built up from Q1 FY26 actual)
Bull29.5%
$2.39B
FY28 revenue
$705MEBITDA
NRR 115%, customer +ARPA growth +2pp ea, EBITDA margin +400bps vs base

1. KVYO Q1 FY26 release · $358M revenue, 196k customers·2. Q3 FY25 10-Q · NRR 109%, 183k customers·3. 17 default assumptions · FY27/FY28 cost ratios, growth decay

Every number on screen came out of the captured KVYO run · the slider walks the five rows the program emitted in one shot.

What changes

Days of work, done in an afternoon.

Kennan does the setup work an analyst would do and hands back the business case. The hours that used to disappear into reconciling and rebuilding go back into the part that was always the point: the thinking.

Today
With Kennan
Days reconciling sales, marketing, payroll, and accounting
Clean data in hours, every figure tracing back to where it came from
A driver-based revenue model rebuilt for every scenario
One model, every scenario running off it, recalculated in seconds
The deck rebuilt by hand each time the story changes
The presentation drafts itself from the model, charts included
“Let me come back to you”
The revenue question answered while the meeting is still going
A team you staff, or a firm you hire
An analyst seat you can pull up whether or not you have a team

Analysts get the week back and spend it on thinking. The people who never had an analyst get one for the first time. The decision gets made faster based on your data and insights.

Rigorous business casing, without the team or the firm.
VZ
V. Z. · FounderNYC · 2026

Built by one. Hiring two.

Built by an analyst who lived in this workflow for ten years.

Ten years in corporate finance, M&A, and asset management: capex and corporate-finance work for Fortune 500 management, lead analyst on closed M&A deals, then principal at a family office deploying $100M+ across PE and venture. Sectors touched: banking, real estate, technology.

The product is being built around what the work demands rather than around what looks impressive in a demo. If you've sat through an IC review, the workspace should feel familiar. If you haven't, the manifesto is a better introduction than this card.

WhereNYC · LON · FRA

Security

Confidential by construction.

The deal that isn’t public yet is safe here. The two questions every desk asks us — answered plainly, with the specifics behind each.

Your data stays yours.

Every document is isolated to your organization and encrypted end to end. Nothing is pooled, shared, or visible across clients — not to another customer, not to us.

ISOLATED PER ORGKERNEL-LEVEL SANDBOXENCRYPTED IN TRANSIT & AT RESTEU DATA REGION

Never used to train AI.

Your files and the agent’s outputs are processed for your request, then discarded — never stored after the request, never used to train a model, ours or any vendor we route through.

ZERO DATA RETENTIONNO MODEL TRAININGSIGNED DPA · EVERY AI VENDOR

So yes — upload the confidential deck.

The CIM, the board pack, the model that isn’t public yet. This was built for exactly that work, not adapted to tolerate it.

Read the full security overview →Built on Google Cloud (ISO 27001 · SOC 2 · FedRAMP substrate) · SOC 2 Type II in progress, interim packet under DPA

$30, $120, or $300 per seat. Enterprise on contract.

Each seat includes monthly usage, pooled across your team. Run over in a busy month and top up in dollars — never blocked. See pricing →

See how Kennan can help you deliver your work.

Build a real business case with data, research, scenarios, and presentations with your projects.