Bottoms-up unit economics decomposition for any public company
npx skills add https://github.com/openai/plugins --skill unit-economics
Perform a bottoms-up unit economics decomposition for the company named in the user's request. If no ticker or company is provided, ask for one before proceeding.
Before starting, read ../data-access.md for data access methods and ../design-system.md for formatting conventions. Follow the data access detection logic and design system throughout this skill.
Follow these steps:
Look up the company by ticker using discover_companies. Capture:
company_idlatest_calendar_quarter — anchor for all period calculations below (see ../data-access.md Section 1.5)latest_fiscal_quarter../data-access.md Section 4.5Cast a wide net to discover ALL available series for this company. Search with multiple keyword sets to maximize coverage:
Collect all unique series IDs. Read every series name and description returned. This is how you learn what kind of business this is and what unit-level KPIs Daloopa tracks for it.
Based on series availability, classify the business into one of these archetypes (or a hybrid). This classification drives the entire report structure:
| If you find series like... | Archetype | Unit = |
|---|---|---|
| ARR, MRR, net dollar retention, customers, ACV, churn, CAC, LTV | SaaS / Subscription | Customer or subscription |
| Store count, same-store sales, AUV, restaurant-level margin, new openings | Unit-based retail / Restaurant | Store or unit |
| GMV, take rate, orders, AOV, active buyers/sellers | Marketplace / E-commerce | Order or transaction |
| Subscribers, ARPU, churn, content spend per sub | Consumer subscription (media/streaming) | Subscriber |
| Premiums written, loss ratio, combined ratio, policies in force | Insurance | Policy |
| NIM, loans, deposits, provision for credit losses, NCOs | Banking / Lending | Loan or account |
| ASP, units shipped, cost per unit, gross margin per unit | Hardware / Manufacturing | Unit shipped |
| AUM, management fee rate, performance fees, fund flows | Asset Management | Dollar of AUM |
| Revenue per available room (RevPAR), occupancy, ADR | Hospitality / Lodging | Room night |
| RPM, RASM, CASM, load factor, ASMs | Airlines / Transportation | Available seat mile |
| Revenue per user, DAU, MAU, ARPU, engagement | Digital platform / Advertising | User |
| Beds, admissions, revenue per admission, case mix | Healthcare facilities | Admission or bed |
| Acreage, production per acre, realized price per unit | Commodity / E&P | Unit of production |
If the business is a hybrid or doesn't fit neatly, construct a custom framework from the available series. The archetype is a starting guide, not a constraint.
Edge cases:
Calculate 10 quarters backward from latest_calendar_quarter. Pull all archetype-relevant series identified in Step 2 for those periods, plus standard financials:
Derived metrics (calculate from pulled data, label each as "(calc.)" and show formulas):
Search SEC filings for context on the unit economics. Use archetype-specific search terms:
Extract management commentary on pricing, retention, expansion, new unit openings, margin levers, etc. with document citations.
Section 1: Business Model & Unit Definition (brief)
Section 2: Revenue Decomposition
Section 3: Unit-Level Profitability
The core of the report. Show margin/profitability at the unit level over time:
Section 4: Cohort / Vintage Analysis (if data supports it)
Section 5: Scalability & Operating Leverage
Section 6: Key Drivers & What to Watch
This is the most analytically valuable section. Based on the data, identify:
Section 7: Summary Assessment
Analytical standards:
Use infra/chart_generator.py for charts. Include at minimum:
All charts must be embedded in the HTML as base64 data URIs (e.g., <img src="data:image/png;base64,...">) so the report is fully self-contained with no external file dependencies. After generating each chart PNG, read the file and convert to base64 for embedding. Do not use relative <img src="filename.png"> paths.
If chart_generator.py is unavailable, embed simple inline SVG charts directly in the HTML.
Save to reports/{TICKER}_unit_economics.html using the HTML report template from ../design-system.md. Write the full analysis as styled HTML with the design system CSS inlined. This is the final deliverable — no intermediate markdown step needed.
Structure the report with these sections:
<h1>{Company Name} ({TICKER}) — Unit Economics Analysis</h1>
<p>Generated: {date}</p>
<h2>Summary</h2>
{2-3 sentences: What is the "unit"? Are unit economics improving or deteriorating? Key takeaway.}
<h2>Business Model & Unit Definition</h2>
{Section 1 content}
<h2>Revenue Decomposition</h2>
<table>
| Component | Q(-9) | Q(-8) | ... | Q(latest) |
{Units, revenue per unit, revenue — with Daloopa citations and YoY growth sub-rows}
</table>
{Commentary on volume vs. price drivers}
<h2>Unit-Level Profitability</h2>
<table>
| Metric | Q(-9) | Q(-8) | ... | Q(latest) |
{Archetype-specific unit margins — with Daloopa citations}
</table>
{Commentary on unit economics trajectory}
<h2>Cohort / Vintage Analysis</h2>
{Section 4 content, or note if insufficient data}
<h2>Scalability & Operating Leverage</h2>
<table>
| Metric | Q(-9) | Q(-8) | ... | Q(latest) |
{Revenue growth vs cost growth, incremental margins}
</table>
{Operating leverage assessment}
<h2>Key Drivers & What to Watch</h2>
{Ranked drivers with sensitivity analysis and bull/bear scenarios}
<h2>Summary Assessment</h2>
{3-4 sentence verdict}
All financial figures must use Daloopa citation format: <a href="https://daloopa.com/src/{fundamental_id}">$X.XX million</a>
Tell the user where the HTML report was saved.
Highlight the 2-3 most important findings about the company's unit economics and what they signal for the investment case.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Query the CELLxGENE Census (61M+ cells) programmatically. Use when you need expression data across tissues, diseases, or cell types from the largest curated single-cell atlas. Best for population-scale queries, reference atlas comparisons. For analyzing your own data use scanpy or scvi-tools.
Take openai/unit-economics from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.