DEV Community

Cover image for Building a Chrome Extension That Summarises Financial Reports in Real-Time
Mayuresh Smita Suresh
Mayuresh Smita Suresh Subscriber

Posted on

Building a Chrome Extension That Summarises Financial Reports in Real-Time

How MoneySense.ai Saves Analysts 95% of Their Reading Time*

Financial analysts have a reading problem. Not a lack of material, but an overwhelming abundance of it. A typical equity researcher might need to process 50-100 pages of earnings reports, analyst commentary, and market news daily. The information exists; the time to consume it doesn't.

This insight led me to build MoneySense.ai, a Chrome extension that uses AI to summarise financial content as you browse. After reaching 430+ users and earning a Top 25 Product of the Week spot on Product Hunt, I want to share the technical journey and lessons learned.

The Problem with Financial Information Overload

Before building MoneySense.ai, I spent time shadowing financial researchers. The workflow was surprisingly manual:

  1. Open article
  2. Scan for relevant sections
  3. Copy key points to notes
  4. Repeat... 50 times daily

A 30-page quarterly report might contain 2-3 paragraphs of genuinely novel information, buried in boilerplate language, risk disclaimers, and previously known data.

The mental model was clear: analysts needed a tool that could pre-digest content, highlight what matters, and present it without requiring context-switching away from their browser.

Technical Architecture Decisions

Chrome extensions impose significant constraints:

  • Sandboxed environment with limited computational resources
  • Long-running operations risk browser performance
  • Privacy-conscious users expect browsing data to remain local

The Hybrid Approach

We chose a hybrid architecture:

┌─────────────────────────────────────────────────────┐
│                    BROWSER                          │
│  ┌─────────────┐    ┌─────────────────────────┐    │
│  │   Content   │───▶│  MoneySense Extension   │    │
│  │  Extraction │    │  (Local Processing)     │    │
│  └─────────────┘    └───────────┬─────────────┘    │
└─────────────────────────────────│───────────────────┘
                                  │
                                  ▼
                    ┌─────────────────────────────┐
                    │     MoneySense API          │
                    │  (LLaMA 3.1B Summarisation) │
                    └─────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode
  • Extension handles: Content extraction, UI presentation (local)
  • API handles: Summarisation via LLaMA 3.1B (streamed responses)

The key was designing the API contract to minimise latency: we stream responses so users see summaries building in real-time rather than waiting for complete generation.

Content Extraction: Harder Than Expected

Content extraction proved surprisingly complex. Financial websites use diverse HTML structures:

Site Type Content Location
News sites Main article body
SEC filings Nested tables
Analyst reports PDF viewers embedded in iframes
Trading platforms Dynamically-loaded JavaScript widgets

We built a content extraction layer that applies different strategies based on domain patterns:

// Simplified extraction logic
const extractors = {
  'seekingalpha.com': SeekingAlphaExtractor,
  'sec.gov': SECFilingExtractor,
  'bloomberg.com': BloombergExtractor,
  'default': GenericArticleExtractor
};

async function extractContent(url, document) {
  const domain = new URL(url).hostname;
  const extractor = extractors[domain] || extractors.default;
  return await extractor.extract(document);
}
Enter fullscreen mode Exit fullscreen mode

When specific handlers aren't available, we fall back to generic article parsing using readability algorithms.

Teaching AI to Think Like an Analyst

Generic summarisation wasn't good enough. ChatGPT can summarise text, but it doesn't understand what a financial analyst actually needs:

  • Does this earnings report show margin compression?
  • Has guidance changed from the previous quarter?
  • Are there red flags in the risk factors section?

Domain-Specific Prompting

We fine-tuned our prompts extensively with input from actual analysts. The model now generates structured summaries that highlight:

📊 KEY METRICS
• Revenue: $4.2B (+12% YoY) — beat estimates by 3%
• EPS: $1.45 — in-line with guidance
• Gross margin: 42.3% — down 180bps (watch this)

📈 GUIDANCE
• Q4 revenue: $4.4-4.6B (consensus: $4.5B)
• Full-year revised UP from $16.8B to $17.1B

⚠️ RISK FACTORS
• New: Supply chain concentration in Taiwan mentioned
• Ongoing: Litigation reserves increased by $50M

🎯 SENTIMENT: Cautiously optimistic
   Management tone positive but hedged on macro
Enter fullscreen mode Exit fullscreen mode

This domain-specific training is what differentiates MoneySense.ai from generic summarisation tools. An analyst can glance at our summary and immediately understand if a deep read is warranted.

Product Hunt and Early Traction

Launching on Product Hunt taught us volumes about distribution. The platform rewards genuine utility over marketing polish.

What Worked

Our Top 25 Product of the Week placement came not from a massive upvote campaign but from:

  1. Real users commenting about their experience
  2. Specific use cases mentioned in reviews
  3. Founder responsiveness to questions and feedback

User Demographics

The 430+ users we've acquired represent a diverse cross-section:

Segment Use Case
Professional analysts Earnings reports, SEC filings
Individual investors Research before trades
Financial journalists Quick story sourcing
Students Learning to read financials

The common thread? Information overload—they all need to consume more than humanly possible.

Retention Story

Our retention metrics tell an important story about product-market fit:

  • 430+ total users
  • 37+ weekly active users
  • ~9% retention rate

Users who try MoneySense.ai during a research session tend to integrate it into their workflow permanently. The habit forms quickly because the value is immediately apparent.

The Code: Extension Architecture

Here's a simplified version of our extension's core:

// content-script.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === 'extractContent') {
    const content = extractPageContent();
    sendResponse({ content });
  }
});

function extractPageContent() {
  // Try domain-specific extractor first
  const extractor = getExtractorForDomain(window.location.hostname);
  if (extractor) {
    return extractor.extract(document);
  }

  // Fallback to generic extraction
  return genericExtract(document);
}

function genericExtract(document) {
  // Remove noise
  const clone = document.cloneNode(true);
  clone.querySelectorAll('nav, header, footer, aside, .ad')
       .forEach(el => el.remove());

  // Find main content
  const article = clone.querySelector('article') || 
                  clone.querySelector('main') ||
                  clone.querySelector('.content');

  return article?.innerText || clone.body.innerText;
}
Enter fullscreen mode Exit fullscreen mode
// background.js (service worker)
async function summariseContent(content) {
  const response = await fetch('https://api.moneysense.ai/summarise', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ 
      content,
      type: 'financial',
      stream: true 
    })
  });

  // Stream the response
  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const chunk = decoder.decode(value);
    chrome.runtime.sendMessage({ 
      action: 'summaryChunk', 
      text: chunk 
    });
  }
}
Enter fullscreen mode Exit fullscreen mode

Broader Applications

The patterns we've developed for financial content extraction and summarisation apply broadly:

Product Domain Application
MoneySense.ai Finance Report summarisation
Tagnovate Hospitality Hotel info RAG
MenuGo Restaurants Menu Q&A

The Core Insight

Domain-specific AI, trained on what experts actually need, outperforms general-purpose models.

  • A financial AI should think like an analyst
  • A hospitality AI should think like a concierge
  • Generic AI thinks like nobody in particular—which means it serves nobody particularly well

For Developers: Browser Extension Opportunities

If you're considering browser extension development, the opportunity is enormous:

  1. We spend hours daily in browsers yet most of that time involves manual information processing
  2. Any workflow where humans extract, filter, or summarise content is a candidate for AI augmentation
  3. Distribution is built-in—Chrome Web Store has massive reach
  4. Monetisation is proven—users pay for productivity tools that save real time

Ideas Worth Exploring

  • Legal document summariser for lawyers reviewing contracts
  • Academic paper analyser for researchers
  • Code review assistant that summarises PR changes
  • Meeting notes extractor from recorded transcripts

The infrastructure we built for MoneySense.ai could power any of these with domain-specific prompt tuning.


Key Takeaways

  1. Chrome extensions can deliver serious AI with the right architecture
  2. Streaming responses dramatically improve perceived performance
  3. Domain-specific prompting beats generic summarisation
  4. Real utility drives distribution more than marketing
  5. Retention validates product-market fit better than signups

Building your own AI-powered browser extension? I'd love to hear about it. Connect with me on LinkedIn or check out my other projects at Tagnovate and MenuGo.


About the Author

Mayuresh Shitole builds AI products that solve real information problems. His portfolio includes MoneySense.ai (financial research assistant), Tagnovate (AI-powered hospitality), and MenuGo (digital menu solutions). Winner of the TigerData Agentic Postgres Challenge, he holds an MSc in Computer Engineering from the University of Essex.


javascript #ai #chrome #fintech #productivity

Top comments (0)