← Work

Mara

Role
Sole engineer: design, build, deploy, operate
Stack
Django, React, scikit-learn, PostgreSQL, Docker
Status
Live and in use
Link
heymara.co.ke
The Mara home page: a plain-English pitch, a live NSE ticker strip, market breadth figures, and the NASI index at 239.11.
The daily brief. Live market data, no jargon.

What it is

Mara is an analytics platform for the Nairobi Securities Exchange. It does real-time stock analysis, machine learning price forecasting, portfolio management, and strategy backtesting, and it has a Telegram bot so people can get answers without opening a dashboard.

It is a real product with real users, not a demo. I designed it, built the backend and the frontend, trained the models, deployed it, and I still run it.

Why I built it

Kenyan retail investors have very little tooling. The data exists but it is scattered, mostly unstructured, and priced for institutions. I wanted to find out whether one person could close that gap end to end, and the honest answer is that the modelling was the easy part. Getting reliable NSE data, keeping it fresh, and presenting it in a way that does not mislead someone about to spend their own money turned out to be the actual work.

How it works

  • A Django backend owns ingestion, the API, and the scheduled jobs that keep prices current.
  • Forecasting runs on scikit-learn. I keep the models deliberately simple, because a model I can explain to a user is worth more here than one that scores marginally better offline.
  • A React frontend covers the dashboard, portfolio views, and backtest results.
  • A Telegram bot handles the lightweight questions, which is how most people actually use it.
  • The whole stack is containerised and deployed with Docker.
The Analytics Lab: every listed ticker, a three-month candle chart, news sentiment, and an AI analysis action.
The Analytics Lab: charts, model ranges, and strategy backtesting.
The fixed income view comparing money market funds, treasury bills, and bonds.
Fixed income: money market funds, T-bills, and bonds side by side.

The decision I am most sure about

Every number the platform shows is labelled with what it is and what it is not. Backtests report both gross and net returns, forecasts are framed as forecasts, and the disclaimer that this is not financial advice is in the product rather than buried in a footer. It would be easy to make the numbers look better than they are. In a product that touches people’s savings, that is the one thing I am not willing to do.

What it taught me

Operating something is a different skill from building it. Scrapers break, upstream sources change their markup without warning, and a job that silently fails is worse than one that loudly crashes. Most of what I have learned from Mara is about monitoring, retries, and designing for the day the data source stops cooperating.