← DaloopaCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Daloopa
Snapshot Sep 30, 2026 · 22:51 UTC · version 6.0.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "research-note",
"description": "Generate a professional Word document research note",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 222
}
],
"skill_md_contents": "---\nname: research-note\ndescription: Generate a professional Word document research note\n---\n\nGenerate a professional research note (HTML report) for the company specified by the user named in the user's request. If no ticker or company is provided, ask for one before proceeding.\n\n**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.\n\nThis is an orchestrator skill that gathers comprehensive data, then renders a styled HTML report using the HTML Report Template from `../design-system.md` (full CSS inlined, zero dependencies).\n\n## Phase A — Company Setup\nLook up the company by ticker using `discover_companies`. Capture:\n- `company_id`\n- `latest_calendar_quarter` — anchor for all period calculations (see `../data-access.md` Section 1.5)\n- `latest_fiscal_quarter`\n- Firm name for report attribution (default: \"Daloopa\") — see `../data-access.md` Section 4.5\n\nGet current stock price, market cap, shares outstanding, beta, and trading multiples for {TICKER} using the 3-step resolution: (1) MCP market data tools if available, (2) web search, (3) sensible defaults (see `../data-access.md` Section 2 for how to source market data).\n\nInitialize context: `context = {company_name, ticker, date, price, market_cap, firm_name, ...}`\n\n## Phase B — Core Financials + Cost Structure\nCalculate 8 quarters backward from `latest_calendar_quarter`. Pull Income Statement metrics:\n- Revenue, Gross Profit, Operating Income, Net Income, Diluted EPS\n- EBITDA (compute as Op Income + D&A if not direct, label \"(calc.)\")\n- Operating Expenses (SG&A, R&D where available)\n\nPull Cash Flow & Balance Sheet:\n- Operating Cash Flow, CapEx, Free Cash Flow (OCF - CapEx, label \"(calc.)\")\n- Cash, Total Debt, Net Debt\n- D&A\n\n**For every value returned by `get_company_fundamentals`, record its `fundamental_id` (the `id` field).** Store each data point as `{value, fundamental_id}` so citations can be rendered in the final document.\n\nCompute margins and YoY growth rates for each quarter. Build `context.financials` with tables. Every Daloopa-sourced number must include its citation link: `[$X.XX million](https://daloopa.com/src/{fundamental_id})`.\n\n### Cost Structure & Margin Analysis\nAfter the core financial pull, add:\n\n- **COGS driver identification**: Search for cost-related series (\"cost of goods\", \"materials\", \"manufacturing\", \"input cost\"). Identify 3-5 biggest cost line items and their trends over 8Q.\n- **OpEx breakdown**: Pull R&D and SG&A separately. Compute R&D % of revenue and SG&A % of revenue trends over 8Q.\n- **Margin driver analysis**: For each major margin (gross, operating, net), identify what's driving expansion or compression — pricing power, cost leverage, mix shift, or one-time items.\n\nNew context keys:\n- `cost_margin_analysis` (string) — narrative explaining what's driving margins, with Daloopa citations\n- `opex_breakdown_table` (dynamic table) — [{metric, Q1, Q2, ...}] rows for R&D, SG&A, Other OpEx, each with absolute values and % of revenue sub-rows\n\n## Phase C — KPIs, Segments & Industry Deep Dive\nThink about what KPIs matter most for THIS company's business model. Search for:\n- Company-specific operating KPIs (subscribers, units, ARPU, retention, etc.)\n- Segment revenue breakdown\n- Geographic revenue breakdown\n- Share count and buyback activity\n\nPull the same 8 quarters (from `latest_calendar_quarter`). Build `context.kpis` and `context.segments`.\n\n### Industry-Specific Deep Dive\nAfter the KPI/segment pull, determine the company's sector and apply the relevant analysis template:\n\n- **Manufacturing/Industrial**: Bookings & backlog, book-to-bill ratio, pipeline by geography, capacity utilization\n- **SaaS/Technology**: ARR/MRR trajectory, net retention rate, customer cohort analysis, RPO/deferred revenue trends\n- **Retail/Consumer**: Same-store sales, store count trajectory, traffic vs ticket decomposition, inventory health\n- **Financials/Banks**: NIM trajectory, provision trends, loan growth by category, capital ratios (CET1, TCE)\n- **Healthcare/Pharma**: Pipeline summary (drug, indication, phase, milestone), product revenue breakdown, patent cliff timeline\n- **Energy**: Production volumes, realized pricing vs benchmark, proved reserves, breakeven analysis\n\nSearch for relevant series using `discover_company_series` with sector-appropriate keywords. Pull available data and build the narrative.\n\nNew context key:\n- `industry_deep_dive` (string) — sector-specific analysis narrative with Daloopa citations, organized by the relevant template above\n\n## Phase D — Guidance Track Record (follows /guidance-tracker methodology)\nSearch for guidance series (\"guidance\", \"outlook\", \"forecast\", \"estimate\", \"target\").\nPull guidance and corresponding actuals. Apply +1 quarter offset rule.\nCompute beat/miss rates and patterns.\nBuild `context.guidance` (set `context.has_guidance = true/false`).\n\n## Phase E — What You Need to Believe (replaces Scenario Analysis)\nUsing the financial baseline from Phase B:\n- Compute trailing 4Q totals for key metrics (revenue, EBITDA, EPS, FCF)\n- Analyze segment-level trends and inflections\n\nBuild **falsifiable bull/bear beliefs** instead of probability-weighted scenarios:\n\n### Bull Beliefs (To Go Long)\nWrite 4-6 numbered beliefs, each with:\n- One **bold statement** (the belief itself)\n- 2-3 sentences of **evidence** with Daloopa citations supporting why this could be true\n- Each belief must be **falsifiable** — testable with observable data within 6 months\n\nExample format: \"1. **Revenue growth re-accelerates to 15%+ as AI monetization scales.** Cloud segment grew [$X.Xbn](link) last quarter, up X% YoY, with management noting...\"\n\n### Bear Beliefs (To Go Short)\nSame format — 4-6 numbered falsifiable beliefs with evidence for the downside case.\n\n### Valuation Math\nFor each side:\n- Bull target: forward multiple × forward earnings estimate = price target. Show the math.\n- Bear target: same structure with bear-case multiple and earnings.\n\n### Risk/Reward Assessment\n- Compare bull upside % vs bear downside % from current price\n- If asymmetry is significant (e.g., 30% upside vs 40% downside), flag it explicitly\n- State which side has the better risk/reward and why\n\nNew context keys:\n- `bull_beliefs` (string) — numbered falsifiable beliefs with evidence\n- `bear_beliefs` (string) — numbered falsifiable beliefs with evidence\n- `bull_target` (string) — price target + valuation math\n- `bear_target` (string) — price target + valuation math\n- `risk_reward_assessment` (string) — asymmetry analysis\n\n## Phase F — Capital Allocation (follows /capital-allocation methodology)\nPull buyback, dividend, share count, FCF data.\nCompute shareholder yield, FCF payout ratio, net leverage.\nBuild `context.capital_allocation`.\n\n## Phase G — Valuation (follows /dcf + /comps methodology)\n\n**DCF:**\n- Get risk-free rate using the 3-step resolution: (1) MCP market data tools if available, (2) web search, (3) sensible defaults (see `../data-access.md` Section 2)\n- Calculate WACC using CAPM\n- Project FCF 5 years manually (describe methodology inline and perform calculations directly)\n- Compute terminal value, implied share price, sensitivity table\n- Build `context.dcf` (set `context.has_dcf = true`)\n\n**Comps:**\n- Identify 5-8 peers\n- Get peer trading multiples using the 3-step resolution: (1) MCP market data tools if available, (2) web search, (3) sensible defaults (see `../data-access.md` Section 2)\n- If consensus forward estimates are available (`../data-access.md` Section 3), include forward multiples\n- Compute implied valuation range from peer multiples\n- Build `context.comps` (set `context.has_comps = true`)\n\n## Phase H — Qualitative Research + News & Catalysts\n### SEC Filing Research\nSearch SEC filings across multiple queries:\n- \"risk\" / \"uncertainty\" / \"challenge\" for risk factors\n- \"growth\" / \"opportunity\" / \"expansion\" for growth drivers\n- \"competition\" / \"market share\" for competitive dynamics\n- \"outlook\" / \"guidance\" for management's forward view\n- Company-specific strategic topics (e.g., \"AI\", \"cloud\", etc.)\n\nExtract and organize into:\n- `context.risks` — ranked list of risks with impact/probability\n- `context.investment_thesis` — variant perception, thesis pillars, catalysts\n- `context.company_description` — 2-3 sentence business description\n\n### News & Catalysts via WebSearch\nRun 4 WebSearch queries to gather recent external context:\n1. `\"{TICKER} {company_name} news {year}\"` — recent headlines and developments\n2. `\"{TICKER} analyst upgrade downgrade price target\"` — sell-side sentiment shifts\n3. `\"{TICKER} catalysts risks\"` — forward-looking events and risk factors\n4. `\"{company_name} industry outlook {sector}\"` — macro and industry trends\n\nOrganize results into three new context keys:\n\n- `news_timeline` (string) — 6-10 key events from the last 6-12 months in reverse chronological order. Each event: date, headline, 1-sentence impact, sentiment tag (Positive / Negative / Mixed / Upcoming). Format as a numbered list.\n\n- `forward_catalysts` (string) — Organized by timeframe:\n - **Near-term (0-3 months, HIGH priority)**: earnings dates, product launches, regulatory decisions\n - **Medium-term (3-12 months, MEDIUM priority)**: strategic milestones, contract renewals, industry events\n - **Long-term (1-3 years, LOW priority)**: secular trends, market expansion, competitive dynamics\n\n- `policy_backdrop` (string) — Macro/regulatory context affecting the company. Tariffs, regulation, interest rates, sector-specific policy. Leave empty string if not material.\n\n## Phase I — Charts\nPresent all chart data in well-formatted tables. No chart generation needed.\n\n## Phase J — Synthesis + Tensions + Monitoring\nThis is the most judgment-intensive step. Be honest and critical — the reader is a professional investor who needs your real assessment, not a balanced summary.\n\n### Core Synthesis\nWrite:\n- **Executive Summary**: 3-4 sentence TL;DR covering current state, key thesis, valuation view. Include a clear directional view — is this stock attractive, fairly valued, or overvalued at the current price?\n- **Variant Perception**: What does the market think vs what do you see in the data? Where is the consensus wrong? If you agree with consensus, say that too — but explain what could change.\n- **Key Findings**: Top 3-5 most notable data points or trends — prioritize what changes the investment thesis, not just what's interesting\n- **Red Flags & Concerns**: Any quality-of-earnings issues, sustainability questions, or risks the market may be underpricing\n- Build `context.executive_summary`, `context.variant_perception`\n\n### Five Key Tensions\nIdentify the 5 most critical bull/bear debates for this stock. Each tension is a single line that frames both sides. Alternate between bullish-leaning and bearish-leaning tensions. Every tension must reference a specific data point from the analysis.\n\nFormat as a numbered list:\n1. \"[Bullish factor] vs [Bearish factor]\" — cite the specific metric\n2. \"[Bearish factor] vs [Bullish factor]\" — cite the specific metric\n...etc.\n\nBuild `context.five_key_tensions` (string).\n\n### Monitoring Framework\nBuild two monitoring lists for ongoing tracking:\n\n**Quantitative Monitors** — 5-7 specific metrics with explicit thresholds:\n- Format: \"Metric: current value → bull threshold / bear threshold\"\n- Example: \"Gross Margin: 45.2% → above 46% confirms pricing power / below 43% signals cost pressure\"\n\n**Qualitative Monitors** — 5-7 factors to watch:\n- Management tone shifts on earnings calls\n- Competitive dynamics (new entrants, pricing pressure)\n- Regulatory developments\n- Customer concentration changes\n- Capital allocation pivots\n\nBuild `context.monitoring_quantitative` and `context.monitoring_qualitative` (strings, numbered lists).\n\n### Structured Tables\nAlso build structured tables for the template:\n- `context.key_metrics_table` — [{metric, value, vs_prior}] for the exec summary table\n- `context.financials_table` — [{metric, q1, q2, ...}] for the financial analysis section\n- `context.segments_table`, `context.geo_table`, `context.shares_outstanding_table`\n- `context.opex_breakdown_table` — [{metric, q1, q2, ...}] for R&D, SG&A, % of revenue rows\n- `context.guidance_table`, `context.comps_table`, etc.\n\n## Phase K — Render HTML Report\n\nUsing the HTML Report Template from `../design-system.md`, generate a styled HTML report with full CSS inlined. The report should include:\n\n**Header Section:**\n- Company name and ticker\n- Report date and firm attribution\n- Five Key Tensions (numbered list)\n\n**Section 1: Executive Summary**\n- Key metrics table\n- Executive summary narrative\n- Variant perception\n\n**Section 2: Company Overview**\n- Business description\n- Investment thesis\n\n**Section 3: Recent News & Catalysts**\n- News timeline\n- Forward catalysts\n- Policy backdrop\n\n**Section 4: Financial Analysis**\n- Financials table (8 quarters)\n- Cost structure & margin analysis\n- OpEx breakdown table\n- Segment and geographic tables\n- Share count table\n\n**Section 5: Industry-Specific Analysis**\n- Industry deep dive narrative\n\n**Section 6: Guidance Track Record**\n- Guidance table and beat/miss analysis (if available)\n\n**Section 7: What You Need to Believe**\n- Bull beliefs with valuation target\n- Bear beliefs with valuation target\n- Risk/reward assessment\n\n**Section 8: Catalysts**\n- Forward catalysts\n- Policy backdrop\n\n**Section 9: Capital Allocation**\n- Capital allocation commentary\n\n**Section 10: Valuation**\n- DCF summary and sensitivity (if available)\n- Comps commentary (if available)\n\n**Section 11: Risks**\n- Risks summary\n\n**Section 12: Monitoring Framework**\n- Quantitative monitors\n- Qualitative monitors\n\n**Appendix:**\n- Additional context or data\n\n### Context Key Checklist\nVerify these keys exist before rendering (set empty string if data unavailable):\n\n**Cover & Summary:**\n`company_name`, `ticker`, `date`, `price`, `market_cap`, `five_key_tensions`, `executive_summary`, `key_metrics_table`\n\n**Thesis & Overview:**\n`investment_thesis`, `variant_perception`, `company_description`\n\n**News:**\n`news_timeline`\n\n**Financials:**\n`financials_table`, `cost_margin_analysis`, `opex_breakdown_table`, `segments_table`, `geo_table`, `shares_outstanding_table`\n\n**Industry:**\n`industry_deep_dive`\n\n**Guidance:**\n`has_guidance`, `guidance_track_record`\n\n**What You Need to Believe:**\n`bull_beliefs`, `bull_target`, `bear_beliefs`, `bear_target`, `risk_reward_assessment`\n\n**Catalysts:**\n`forward_catalysts`, `policy_backdrop`\n\n**Capital Allocation:**\n`capital_allocation_commentary`\n\n**Valuation:**\n`has_dcf`, `dcf_summary`, `has_comps`, `comps_commentary`\n\n**Risks:**\n`risks_summary`\n\n**Monitoring:**\n`monitoring_quantitative`, `monitoring_qualitative`\n\n**Appendix:**\n`appendix_content`\n\n## Output\nSave the styled HTML report as a local file and summarize the output. Tell the user:\n- A 3-4 sentence executive summary of the research note\n- Key findings and valuation range\n- Tell them where the HTML file was saved and that it can be opened in a browser for full formatting\n\n**Citation enforcement:** Every financial figure from Daloopa in the HTML report must use citation format: `[$X.XX million](https://daloopa.com/src/{fundamental_id})`. If a number came from `get_company_fundamentals`, it must have a citation link. No exceptions.\n"
}SHA-256: 71bdd6fb953d1bc9bc8940cfcb7fd923ba200ddd21cda3ad2cac6406bb104068