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:
- Open article
- Scan for relevant sections
- Copy key points to notes
- 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) │
└─────────────────────────────┘
- 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);
}
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
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:
- Real users commenting about their experience
- Specific use cases mentioned in reviews
- 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;
}
// 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
});
}
}
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:
- We spend hours daily in browsers yet most of that time involves manual information processing
- Any workflow where humans extract, filter, or summarise content is a candidate for AI augmentation
- Distribution is built-in—Chrome Web Store has massive reach
- 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
- Chrome extensions can deliver serious AI with the right architecture
- Streaming responses dramatically improve perceived performance
- Domain-specific prompting beats generic summarisation
- Real utility drives distribution more than marketing
- 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.
Top comments (0)