stock-tracker
stock-tracker

A research assistant for your stock portfolio

Powered by Zerodha-Kite and Gemini

If you invest directly in Indian stocks, keeping up with them can become a job of its own. stock-tracker helps with that.

It connects to your Zerodha account, follows the stocks you own and the ones you're watching, reads the latest news, checks company fundamentals, looks at disclosed activity from promoters and large investors, and puts the important things together for you.

Every morning, you get a simple Today brief instead of having to figure out where to start.

It doesn't place trades on its own. You decide what to do.

What happens every morning

Before the market opens, stock-tracker goes through your portfolio and watchlist. For each stock, it:

Reads the latest news

It collects recent news and classifies it as positive, negative or neutral. The goal isn't to replace reading the news, but to help you quickly identify what deserves your attention.

Checks the fundamentals

It looks at things like valuation, growth and financial health, helping you understand whether something has materially changed.

Looks at other investors

It tracks publicly disclosed activity from promoters, insiders, institutions and other large investors to see whether there are meaningful changes in ownership or buying and selling activity.

Looks at the broader context

It finds relevant peer companies and compares the stock against them, rather than looking at the company in isolation.

All of this gets condensed into a Today brief with things like:

→ Nothing urgent
→ Worth keeping an eye on
→ You should probably review this holding

The idea is simple: you shouldn't have to spend your morning figuring out what happened overnight.

Your watchlist, in one place

Add the stocks you're interested in and stock-tracker keeps the information you usually have to collect from several places together.

Price & fundamentals

Market prices from your broker along with valuation, growth and financial-health metrics — making it easier to spot when a stock has become unusually expensive, when growth is slowing, or when something else in the numbers deserves a closer look.

News

Recent news is collected automatically and classified as positive, negative or neutral. Instead of opening twenty different articles every morning, you can start with the stories that are most relevant to the companies you own.

Peer companies

For each stock, stock-tracker finds a set of relevant competitors so you can compare the company with its closest alternatives. The peer discovery is designed for the Indian market — it accounts for PSUs vs private companies, conglomerates, and businesses with very few direct competitors.

Large-investor activity

The app looks at publicly disclosed transactions and ownership changes involving promoters, insiders, institutions and other large investors — turned into a simpler view of whether there are signs of accumulation, distribution or potential red flags.

What does “smart money” actually mean here?

There isn't a secret source of investor activity. Most of the information comes from public disclosures. stock-tracker collects things like:

It then looks at three broad signals.

ConvictionAre promoters, insiders or institutions increasing their exposure?
FlowWhere is the larger flow of money going? This includes institutional activity, bulk and block deals, and mutual-fund buying or selling.
Red flagsAre promoters selling or pledging shares? Are there other disclosures or governance-related signals that deserve attention?

These signals are combined into three simple outputs:

Accumulation

There are signals worth investigating further.

Distribution

There are signs that ownership is moving out.

Avoid

There are red flags that warrant caution.

These aren't buy or sell recommendations. They are signals to help decide where you should spend your research time.

And when there isn't enough data to make a reasonable assessment, the system says NO SIGNAL instead of making something up.

Where does the data come from?

The app pulls information from a number of public and connected sources.

InformationSource
Your holdings and market pricesZerodha Kite Connect
Company newsGoogle News, Hindu Business Line
Insider and large transactionsPublic NSE / BSE disclosures
Shareholding patternsNSE / BSE disclosures
Mutual-fund activityAMFI, mfdata.in
Company fundamentalsyfinance, with Tickertape used where needed
Index levelsZerodha Kite, with Moneycontrol used for some indices

The data is cached so the same pages aren't repeatedly fetched throughout the day. Data collection also runs independently for different sources, so if one source changes its website or becomes unavailable, it doesn't necessarily stop the entire morning analysis.

AI does the reading in two steps

Running a large AI model over every piece of data every day would be expensive and unnecessary. So stock-tracker uses two levels of analysis.

1 · Quick screening

A smaller, cheaper model goes through the stocks in your watchlist and portfolio every day. It looks at the available information and identifies which stocks actually deserve a deeper look.

2 · Deep analysis

Only the shortlisted stocks are sent for a more detailed analysis using a more capable model. This keeps the daily analysis relatively inexpensive while still allowing more reasoning where it's actually useful. There is also a daily budget limit, and paid deep-analysis calls require explicit user action.

Built for my own portfolio

This started as a personal project because I didn't have the time to follow all the stocks I owned as closely as I wanted to.

I wanted something that could do the first pass for me every morning and tell me where I should pay attention. That's still the goal.

It's not meant to replace your judgement, and it doesn't make trades for you. It's just meant to make the research part of investing a little less painful.

View the project on GitHub →

Personal project for educational use. This is not investment advice. The app never places trades without your explicit action.
↓ Drag the bar at the bottom up to see how it works technically.

Under the hoodDrag up for how it works technically — components, data flows & stack
Under the hood
For those who want to know how it works technically.

Frontend

Next.js · React · TypeScript · Tailwind

Handles the user interface and communicates with the backend through authenticated API requests.

Backend

FastAPI · Python · SQLAlchemy

FastAPI acts as the main gateway between the frontend, database, Zerodha, AI providers and Redis.

Database

TimescaleDB / PostgreSQL

Postgres stores users, watchlists, portfolio data, decisions and the smart-money dataset. TimescaleDB is used for time-series market data.

Background jobs

Celery + Redis

Long-running tasks such as the morning analysis, news collection, instrument synchronisation and smart-money ingestion run as background jobs.

Broker

Zerodha Kite Connect

Used for market data, quotes, historical candles and portfolio information. The app does not place trades automatically.

AI

Gemini 2.5 Flash-Lite + pluggable providers

Gemini Flash-Lite handles the bulk screening. The deeper analysis layer is provider-agnostic, with Gemini as the current default and the architecture prepared for other providers.

How the data flows

  1. The frontend sends an authenticated request to FastAPI.
  2. FastAPI validates the request and checks the shared portfolio cache.
  3. Market data comes from Zerodha, while news, fundamentals and investor activity come from cached data sources.
  4. Frequently accessed data is served through Redis.
  5. Persistent data is stored in TimescaleDB.
  1. The scheduled job starts the daily analysis.
  2. Each stock in the relevant universe goes through the quick AI screening.
  3. The most interesting stocks are shortlisted.
  4. The shortlist goes through deeper analysis.
  5. The results appear on the Today page.
  1. Public disclosures are collected from NSE, BSE and other sources.
  2. Transactions and investor names are normalised and validated.
  3. The system calculates conviction, flow and red-flag signals for each stock.
  4. A coverage check prevents thin or incomplete data from producing misleading signals.
  5. The final signals appear as Accumulation, Distribution, Avoid or No Signal.

The stack

LayerTechnology
BackendFastAPI, Python 3.12, SQLAlchemy 2.0, Alembic
FrontendNext.js 16, React 19, TypeScript, Tailwind v4
DatabaseTimescaleDB / PostgreSQL 16
Cache & brokerRedis 7
Background jobsCelery
BrokerZerodha Kite Connect
AIGemini 2.5 Flash-Lite + pluggable deep-analysis provider
SecurityJWT, Fernet encryption, rate limiting, risk engine, kill switch