Investment Intelligence AI · NLP · Sentiment 0→1 Product Biniyog.com.bd · 2024

Company Analysis
AI-Powered Investment Intelligence

How I designed and built Biniyog's three-layer stock intelligence engine: fundamental ranking, technical analysis, and AI-driven sentiment analysis - giving retail investors professional-grade insights for every company on the Dhaka Stock Exchange.

300+ cos
DSE companies covered across all three layers
50+ ind
Technical indicators across 5 categories
3layers
Fundamental · Technical · AI Sentiment
Retention
Session depth and weekly active user uplift post-launch
01 — Background

Retail investors making gut-feel decisions in a data-rich market.

Biniyog.com.bd is Bangladesh's digital stock brokerage platform serving retail investors on the Dhaka Stock Exchange. By 2024, the trading product was strong - users could buy, sell, manage portfolios, and practice with paper trading. What it didn't have was an answer to the most important question every investor asks before placing a trade: is this company actually worth investing in right now?

Retail investors in Bangladesh were making decisions based on tips, hearsay, and gut instinct - not because they didn't want data, but because professional-grade analysis was either paywalled, too complex, or simply unavailable for the DSE market. Bloomberg terminals and equity research reports exist for institutional players. Retail investors had almost nothing.

Biniyog already had the raw ingredients - live DSE feeds, financial performance data, news from multiple sources. What was missing was the analytical layer that turned raw data into actionable intelligence. I proposed building Company Analysis as a comprehensive, three-layer intelligence product covering every dimension a serious retail investor cares about: company fundamentals, price and volume technicals, and real-time market sentiment.

The product vision: Give every Biniyog user the kind of stock analysis that previously required either a Bloomberg subscription or a professional fund manager. Not simplified - genuinely comprehensive, but presented clearly enough that a retail investor can act on it with confidence.


02 — Problem

Three analytical gaps, each requiring a distinct product solution.

When I mapped what investors actually needed before committing capital, three distinct gaps emerged. Each pointed to a different type of analysis - and together they formed the blueprint for the three-layer architecture.

01
No objective way to evaluate a company's financial health
Investors had no reliable way to assess whether a company was financially strong, overvalued, or heading toward distress. Financial statements were publicly available but required expertise to interpret. An investor looking at a P/E of 200 needed context - is that normal for this sector? Is this company's ROE competitive? Without a comparative scored framework, raw numbers were noise. I needed to build an engine that normalised financial metrics across all DSE companies and surfaced a clear, trustworthy ranking.
02
No technical analysis tools for timing decisions
Even investors who understood a company's fundamentals struggled with the timing question - is now the right moment to buy, hold, or sell? Technical analysis answers precisely this. But running even a basic technical analysis manually requires calculating 50+ indicators across historical price data. No DSE-focused retail platform offered this. The gap wasn't awareness; it was accessibility - the tools existed in professional platforms but were completely out of reach for retail investors.
03
Market news was unprocessed and overwhelming
The DSE generates hundreds of news items daily - company announcements, regulatory updates, newspaper articles, and sector analysis. A retail investor can't read, process, and score all of this. Yet sentiment - the collective mood of the market toward a company or sector - is a real and measurable signal that influences price. I saw an opportunity to apply AI-powered NLP to this news stream and surface a clear, aggregated sentiment score that investors could act on without reading every article themselves.

03 — My Approach

Five decisions that defined the product before a line was written.

01
Build three distinct analytical layers, not one blended score
The temptation was to combine everything into a single "overall score." I rejected this. Fundamental analysis answers "is this company strong?" Technical analysis answers "is now the right time?" Sentiment analysis answers "what does the market think right now?" These are genuinely different questions that serve different decision contexts. Blending them into one score would destroy the interpretability that makes each layer useful.
02
Design the scoring framework myself - don't outsource analytical logic
Most PMs would have handed the metric weighting to a data scientist. I defined it myself: which financial metrics matter most for DSE companies, how to weight them, what thresholds distinguish strong from weak performance, and how to handle missing data without distorting rankings. This was PM work, not engineering work. The framework - percentile-based scoring with absolute thresholds as fallback, market-group risk adjustments, confidence scoring based on data completeness - reflected deliberate product decisions about what "quality" means for a Bangladeshi retail investor.
03
Use AI to process sentiment at a scale humans can't match
Processing hundreds of daily news items across multiple publishers manually was never going to work. I specified an AI-powered NLP pipeline - using VADER sentiment analysis, TextBlob, and custom financial keyword weighting - to automatically score every news article and aggregate it into company, sector, and market-level sentiment signals. This was a deliberate decision to use AI not as a novelty but as a genuine capability multiplier: it let me cover 300+ companies and thousands of news items daily with consistent, scalable analysis that no human team could match.
04
Set hard performance targets and own them as product requirements
An analytical feature that takes a minute to load is dead on arrival for mobile users making time-sensitive decisions. I set a hard performance target - fundamental rankings under 5 seconds, API responses under 200ms - and worked with engineering to hit it. This required a 99%+ reduction in query execution time from the initial implementation. Performance was a product requirement, not an engineering nice-to-have - and I owned it as one.
05
Present complexity simply - signal labels, not raw numbers
The target user is a retail investor in Bangladesh, not a CFA charterholder. I specified that every analytical output be presented with clear signal labels (BUY / SELL / NEUTRAL / WEAK_SELL), plain-language descriptions, and contextualised scores. The underlying analysis is as sophisticated as institutional research; the user experience is as approachable as checking the weather. These two requirements must be designed together, not sequentially.

04 — Three Layers

One product surface. Three analytical engines underneath.

Company Analysis is presented to users as a single cohesive product - tap a company, see a complete picture. But underneath, three independent analytical engines run in parallel, each with its own data sources, processing logic, scoring methodology, and update schedule.

Layer 01
Fundamental Ranking
16 metrics · Weekly refresh · 300+ companies
ROE P/E Ratio Debt/Equity Net Margin Current Ratio
Answers: Is this company financially strong? The fundamental engine scores every DSE equity company against 16 financial metrics - profitability, financial health, efficiency, and market metrics - using a weighted composite scoring model. Rankings are refreshed weekly. Each company receives an overall rank and a sector-specific peer rank, enabling both absolute and relative assessment. A confidence score based on data availability tells users how much to trust the score.

Critically, I resolved a fundamental scoring collapse during development - a bug where all companies were receiving the same score - by redesigning the scoring methodology to use both percentile-based relative ranking and absolute threshold scoring as a fallback. This was a product decision about scoring philosophy, not just a bug fix.
Layer 02
Technical Analysis
50+ indicators · Daily refresh · 5 categories
MACD RSI Bollinger Bands ADX OBV
Answers: Is now the right time to act? The technical engine processes 50+ indicators across five categories - trend, momentum, volume, volatility, and oscillators - against daily price and volume data for every listed company. Each indicator produces a signal (BUY / SELL / NEUTRAL) and a score; the engine aggregates these into a single technical score using category-weighted methodology. Historical tracking enables trend analysis over time, and companies and sectors can be compared on technical strength.

Processing 360+ companies nightly required a performance-first architecture: worker threads for CPU-intensive calculations, batch processing with configurable timeouts, and comprehensive error handling so a single bad data point never fails an entire company's analysis.
Layer 03
AI Sentiment Analysis
NLP-powered · Daily · 3 news sources
VADER NLP TextBlob Custom Keywords Multi-source
AI-Powered
Answers: What does the market think right now? The sentiment engine is the most novel of the three layers - and where I made a deliberate choice to apply AI. A Python-based NLP pipeline automatically processes news from three sources daily: DSE official announcements, articles from five major financial newspapers, and professional market newsletters. Every article is scored using VADER sentiment analysis, TextBlob, and custom financial keyword weighting. Scores are aggregated at company, sector, and market level - giving users a real-time pulse on market mood that no manual process could replicate at this scale and freshness.

See it in action

A full walkthrough of the Company Analysis feature on the live Biniyog platform - showing fundamental scores, technical signals, and sentiment analysis in use.

Product Walkthrough
Biniyog Company Analysis - Live Demo
Fundamental rankings · Technical signals · AI sentiment · Sector views
Watch on YouTube

05 — Fundamental Ranking

Turning 16 financial metrics into a single trustworthy company score.

The fundamental ranking system evaluates every DSE equity company on a weekly basis. I designed the analytical framework myself - defining which metrics matter, how much weight each should carry, and how to handle the edge cases that break naive scoring systems.

Metric weights - what I defined and why

I categorised the 16 metrics into two groups. The weighting reflects what actually drives long-term investment returns for DSE companies - profitability and financial health carry the most weight because they're the most reliable predictors of company resilience.

Core Fundamentals - 84%
ROE
15%
Net Profit Margin
12%
Operating Profit Margin
10%
ROA
10%
Debt-to-Equity
9%
Current Ratio
8%
Gross Profit Margin
7%
EBITDA
6%
Market Metrics - 16%
P/E Ratio
8%
Dividend Yield
4%
Market Cap Size
4%

Risk adjustment: I specified market-group penalties so the final score is risk-adjusted - not just a financial metric aggregate. Z-group companies carry a scoring penalty reflecting the elevated risk they carry, giving the ranking a more honest picture of investment quality.

The scoring collapse I solved

During development, a critical issue emerged: all companies were receiving an identical fundamental score. The root cause was a baseline value collision - when too many companies had similar values, the percentile calculation collapsed, producing an undifferentiated flat score for everyone.

I resolved this by redesigning the scoring methodology with a dual approach: percentile-based scoring when data is sufficiently varied across companies, and absolute threshold scoring - for example, ROE ≥20% earns 95 points, 15–20% earns 80 points - when percentiles collapse. This produced a realistic score distribution from 20–95 and made rankings genuinely useful. The decision about when to use which approach, and where to set the absolute thresholds, was mine to make - and it required judgment about what "good" financial performance actually looks like for DSE companies.


06 — Technical Analysis

50+ indicators, five categories, one clear signal per company.

The technical analysis engine processes daily price and volume data for every DSE equity company, computing over 50 indicators and aggregating them into a single technical score with full category breakdown. I specified the category framework, the weighting structure, and the signal presentation logic.

📈
35%
Trend
SMA, EMA, MACD, ADX, Aroon, Parabolic SAR
30%
Momentum
RSI, Stochastic, Williams %R, CCI, ROC
📊
20%
Volume
OBV, MFI, Volume SMA, Vol Rate of Change
🌊
10%
Volatility
Bollinger Bands, ATR, Std Deviation
🔄
5%
Oscillators
Ultimate Oscillator, Awesome Oscillator

The weighting reflects the relative reliability and relevance of each category for retail investor decisions. Trend indicators carry the most weight because they capture the clearest, most actionable signal - is the price moving up or down over time? Momentum confirms trend strength. Volume validates whether a price move has genuine market participation behind it.

Signal clarity over data density: Each indicator produces a labelled signal - BUY, WEAK_BUY, NEUTRAL, WEAK_SELL, SELL - rather than a raw score. I specified this signal vocabulary deliberately. A retail investor looking at an RSI of 35 doesn't know what to do with that number; seeing "WEAK_SELL" with a plain-language explanation gives them the same information in an actionable form. The underlying maths stays intact; the presentation becomes human.


07 — AI Sentiment Analysis

Processing hundreds of daily news items with AI - so investors don't have to.

The sentiment layer is where I made the most deliberate choice to apply AI as a core product capability. The volume of daily market news in Bangladesh is far beyond what any manual process can analyse consistently. I designed an automated NLP pipeline to handle it at scale.

AI-Powered Feature

Three news sources, one unified sentiment signal

🏛️
DSE Official News
Company announcements, regulatory updates, and market notices directly from the Dhaka Stock Exchange. The highest-credibility source - official, structured, and directly company-attributable.
Primary Source
📰
Financial Newspapers
Articles from five major Bangladeshi financial publications - Financial Express, Business Standard, Daily Star, Share Bazar News, and Arthosuchak. Captures analyst opinion and market narrative beyond official announcements.
Secondary Source
✉️
Professional Newsletters
Daily EDGE newsletter from a professional market analysis firm - processed via automated email extraction and sender validation. Captures institutional-grade market insights that otherwise wouldn't reach retail investors.
Premium Signal

How the AI scoring works

Each news item passes through three NLP scoring methods, combined into a final sentiment score and aggregated at company, sector, and market level:

Method 1

VADER Sentiment

Optimised for short, news-style financial text. Handles vocabulary like "margin compression," "revised upward," "dividend cut" better than general-purpose models. Produces a score from −1.0 (most negative) to +1.0 (most positive).

Method 2

TextBlob Analysis

General-purpose sentiment analysis providing a second signal that catches sentiment patterns VADER may miss. Running two models and comparing outputs also provides a confidence signal - high agreement = higher confidence score.

Method 3

Custom Financial Keywords

DSE-specific vocabulary weighting that I specified to catch industry signals general models miss - terms specific to Bangladeshi market context, regulatory language, and sector-specific financial terminology.

Why AI here and not elsewhere: I used AI for sentiment because scale was genuinely the bottleneck. The alternative - manual analysis - covers 5–10 companies per analyst per day. The AI pipeline covers 300+ companies and thousands of news items daily with consistent methodology. This is not AI as a gimmick; it's AI as the only viable solution to a real scale problem. The confidence scoring on every output makes uncertainty explicit, so users never mistake a low-confidence signal for a high-conviction recommendation.


08 — Metrics

What success looked like - and the full framework I used to measure it.

North Star: Weekly active users engaging with Company Analysis - the metric that confirms the feature is being used for real investment decisions, not just browsed once and forgotten. "Engaged" means looking up a company before placing a trade, not just opening the section.

Layer Metric Why it's on the dashboard
Adoption % of active traders using Company Analysis before placing a trade The core value hypothesis: does the feature change trading behaviour? If traders consult Company Analysis before deciding, it's doing its job. High trading volume with zero Company Analysis usage means the feature failed to integrate into the actual decision-making flow.
Adoption New users acquired via Company Analysis as an entry point Investment intelligence features attract users who wouldn't sign up for a basic brokerage. Tracking new registrations where Company Analysis was the first feature engaged tells us whether the feature expands the addressable user base, not just serves existing users.
Engagement Companies analysed per session per active user Depth signal. A user who analyses 5 companies per session is building an investment thesis, not glancing at a number. This distinguishes serious users from casual visitors and informs where to invest in depth vs. breadth.
Engagement Session return rate - % of users engaging weekly for 4+ consecutive weeks Investment analysis is only useful if it becomes a habit. Weekly return for 4+ weeks signals the feature has become part of the user's regular investment process - the strongest indicator of long-term retention value.
Quality Fundamental coverage - % of active DSE companies with complete rankings If a user looks up a company and sees "no data available," the feature has failed that use case. Coverage is a quality floor metric that must stay high or the analytical layer becomes unreliable as a comprehensive market tool.
Quality Sentiment pipeline freshness - % of days with same-day analysis Sentiment on yesterday's news is significantly less valuable than same-day analysis. This metric ensures the AI pipeline runs reliably and delivers fresh signals. A drop here is an early warning of pipeline failure before users report stale data.
Business Trade volume uplift from Company Analysis users vs. non-users The business case for the feature. If Company Analysis users show higher trade volume, the feature is demonstrably generating business value - not just product engagement.
Business Plan conversion - free to premium for Company Analysis power users Advanced analytical features are a natural driver of premium plan upgrades. Users who rely on the analysis for real decisions have the highest willingness to pay for enhanced features and historical depth.

09 — Risks

What could go wrong - and how I designed against it.

High
Users treating analysis scores as investment advice and incurring losses
A retail investor who buys a company because it scored 85/100 on fundamentals and later loses money may blame the platform. Scores are analytical signals, not advice. Mitigated by: confidence scores on every output, explicit data-freshness indicators, and plain-language framing of what each layer answers vs. what it doesn't.
High
Stale data producing misleading signals with no visible warning
A fundamental ranking based on two-year-old data, or technical scores built on last week's prices, could lead users to wrong conclusions without them knowing. Mitigated by: explicit data-freshness labelling on all scores, coverage metrics in the monitoring dashboard, and the pipeline freshness KPI as an early warning before users see degraded output.
High
AI sentiment misclassifying nuanced financial language
NLP models can fail on irony, regulatory language, or DSE-specific terminology. A regulatory warning that uses formally positive language could be misclassified as positive sentiment. Mitigated by: VADER + custom financial keyword layer working in combination, confidence scoring that flags low-certainty classifications, and source attributions so users can verify the underlying articles.
Medium
Scoring methodology bias disadvantaging certain company types
A weighting optimised for large-cap profitable companies may systematically underrate high-growth companies with intentionally low current profitability. Mitigated by: confidence scoring reflecting data completeness, and sector-level ranking enabling within-category comparison rather than forcing unfair cross-sector comparisons.
Medium
Technical analysis overloads users instead of helping them
50+ indicators is a lot of information. A user who sees a BUY signal from 20 indicators and SELL from 15 others might end up more confused than before. Mitigated by: the aggregated technical score as the primary surface, with individual indicators accessible on expansion - not dumped on users by default.
Low
Competitor feature parity reducing differentiation over time
If other DSE-focused platforms build similar analytical features, the advantage narrows. Mitigated by: the AI sentiment layer being the hardest to replicate quickly, the quality of the DSE-specific scoring methodology, and the 365-day historical depth that creates a data moat competitors starting from scratch would take years to build.

10 — Lessons

What building this taught me about AI products and analytical design.

01
The PM's job in an AI-powered feature is defining the right questions, not the algorithms
The most important decisions in this product had nothing to do with machine learning. Which financial metrics should drive fundamental scores? How should Z-category companies be penalised? What does "good" ROE look like for a DSE company specifically? These were product questions requiring market context and user empathy. I defined the scoring framework, the weighting logic, the metric thresholds, and the signal vocabulary. Engineering built the pipeline that executed my spec. This is what PM ownership of an AI feature looks like: not writing the models, but owning the analytical logic that determines what the models optimise for.
02
Use AI where scale is the genuine bottleneck - not where it sounds impressive
I didn't use AI for the fundamental or technical layers - those are deterministic calculations that don't need it. I used AI for sentiment because that's the layer where scale was genuinely the bottleneck. Processing hundreds of daily news items across five publications, a professional newsletter, and DSE announcements, with consistent documented methodology, every day, is impossible at human scale. The decision to use AI wasn't driven by trend-following; it was driven by recognising the alternative wasn't viable. That's the right reason to use AI in a product.
03
Fixing a bad algorithm is a product decision, not just an engineering fix
The fundamental scoring collapse - all companies receiving the same score - was discovered in testing. The engineering team's first instinct was to patch the percentile calculation. I stepped back and redesigned the entire scoring methodology with a dual approach. The right fix wasn't a patch; it was a better algorithm. And defining what "better" means in the context of a scoring system serving retail investors - realistic distribution, defensible thresholds, appropriate risk adjustments - was a PM decision.
04
Complexity in the engine, simplicity at the surface - design both together
The gap between what the engine computes and what the user sees is a product design problem, not a UI problem. I specified both simultaneously: 50+ indicators computing a technical score, presented as a single number with signal labels and five category breakdowns. The worst outcome would have been building the complex engine and treating the presentation as an afterthought. The analytical power of the feature is only as useful as the interface that surfaces it clearly enough for users to act on.
05
Performance is a product quality requirement, not an engineering stretch goal
The initial implementation took over a minute to execute - unusable for investors making time-sensitive decisions on mobile. I set <5 second execution as a hard product requirement and worked with engineering on the architectural changes needed to hit it. The 99%+ reduction in execution time wasn't a nice-to-have optimisation; it was the difference between a feature that gets used and one that gets abandoned after the first slow load. I owned performance as a product requirement, not a post-launch improvement backlog item.
Appendix — The Evidence

Functional Spec Excerpts

User stories, acceptance criteria, and the data-to-insight pipeline as specified in the product requirements.

Appendix A - User Stories
IDAs a…I want…So that…
US.1 Retail investor evaluating whether to buy a company a scored view of the company's financial health compared to peers in the same sector I can make an evidence-based decision rather than relying on tips or gut instinct
US.2 Trader who has decided to invest in a company clear technical signals - trend direction, momentum, and volume confirmation - for that company I know whether this is the right moment to enter a position, not just whether the company is worth owning
US.3 Investor monitoring a company already in my portfolio an aggregated sentiment score based on today's news about that company and its sector I can react to market mood changes quickly without reading through dozens of news sources myself
US.4 Investor who doesn't know much about technical analysis indicator results presented as plain-language signals (BUY / SELL / NEUTRAL) rather than raw numbers I can use the technical analysis without needing to understand what an RSI of 35 or a MACD crossover means
Appendix B — Key Acceptance Criteria
#CriteriaOwnerVerified by
AC.1 Fundamental rankings must produce a realistic score distribution. Dual scoring - percentile-based with absolute threshold fallback - must be implemented. No more than 10% of companies within ±2 points of any single value. DSE / BE QA: verify score range spans at least 20–90 across all companies
AC.2 Fundamental ranking execution must complete in under 5 seconds for 300+ companies. API response time for all ranking endpoints must be under 200ms. BE Load test: trigger weekly run, measure wall-clock time; API latency measured with standard tooling
AC.3 Every technical indicator output must include a plain-language signal label. Raw scores must be secondary in the UI - accessible on expansion, not shown by default. FE Design review: signal labels visible without expanding any element; raw scores only on expanded view
AC.4 Sentiment analysis must process all three source types daily and produce company, sector, and market-level aggregations available by 8 AM each trading day. Python / BE Monitoring: pipeline run log checked at 8:30 AM; alert if any source type produces zero articles processed
AC.5 Every analytical output must display a confidence score or data freshness indicator. No score is shown without context for how reliable it is. FE QA: verify confidence score visible on every company fundamental card; verify "as of date" present on all technical and sentiment outputs
Appendix C — Data-to-Insight Pipeline

How raw market data becomes the analytical signals a user sees when they tap a company in the Biniyog app.

1
Raw data ingestion
Three data streams feed the system in parallel: financial performance data for fundamentals, daily price and volume data for technical analysis, and news content from DSE announcements, newspapers, and newsletters for sentiment.
2
Fundamental processing (weekly)
16 financial metrics scored per company using dual scoring methodology. Market-group risk adjustments applied. Confidence score calculated from data completeness. Overall and sector ranks generated for all 300+ companies.
3
Technical processing (daily)
50+ indicators calculated per company using worker threads for performance. Each indicator scored and labelled. Five category scores computed using defined weightings. Final technical score aggregated and companies ranked overall and by sector.
4
AI sentiment processing (daily, 6 AM)
Python NLP pipeline processes all three news sources. VADER + TextBlob + custom financial keywords applied to each article. Company and sector mentions extracted. Individual article scores aggregated to company, sector, and market level. Confidence scores assigned per aggregation.
5
API layer serves pre-computed results
REST API endpoints serve stored results directly - no live computation on request. <200ms response time. Filtered by company, sector, date range. 365-day historical data retained for trend analysis.
User sees a complete company picture
Fundamental score + sector rank · Technical score with signal labels by category · Sentiment score with source breakdown · Confidence indicators on every output · Plain-language framing throughout. Three analytical layers, one coherent decision-support interface.