09 / Lab
Stock Bot
A scheduled agent that scans the Nigerian Exchange every day, checks recent price history, asks an LLM to assess each dip and sends me a short report on Telegram.
- Company
- Lab
- Role
- Designer & engineer
- Period
- Feb 2026 – PresentIn development
- Links
- Private / internal
- Stack
- PythonAWS LambdaEventBridgeDynamoDBGemini APITelegram Bot APIGitHub Actions
Stock Bot
An AI analyst for the Nigerian stock market
Screenshots coming soon
What I built
- 01A parallel scraper for the NGX daily losers
- 02Five days of price history in DynamoDB to confirm a real dip
- 03An LLM analysis step with a structured prompt per company
- 04Daily Telegram reports with the top picks
- 05Continuous deployment to AWS Lambda with GitHub Actions
The system
A daily run, from schedule to report
Key decisions
- 01
Serverless on a schedule
The job runs for a couple of minutes a day. A scheduled Lambda costs almost nothing and needs no server to look after.
- 02
Filter first, then think
Cheap code narrows the list, and the LLM only sees the few stocks worth a closer look. It keeps both latency and cost down.
- 03
Drop heavy dependencies
Replacing pandas with a lightweight HTML parser made the Lambda package small enough to deploy without special layers.
01
The problem
Finding good dips on the NGX means checking dozens of stocks every day and reading the story behind each drop. I wanted the boring part automated and the judgement call summarised.
02
The process
A Lambda function runs on a daily EventBridge schedule. It scrapes the day's biggest losers, so only those get a closer look, compares them with five days of prices stored in DynamoDB and sends the candidates to Gemini for a short analysis. The top picks arrive on Telegram, and GitHub Actions deploys every push.
03
The outcome
In progress. Scraping, analysis and Telegram reports work locally; the Lambda deployment is being finalised.
04
What I learned
Filter before you spend tokens or requests. Starting from the day's losers instead of every ticker cut the work to a fraction.