AI agent that hunts government tenders across African procurement portals. Powered by TinyFish.
# TinyMuscle
TinyMuscle is a stateful web intelligence pipeline that turns any structured
page on the live internet into a monitored, deduplicated, queryable feed —
with no brittle CSS selectors, no headless Chrome configuration, and no
per-site maintenance burden.
Built for African government procurement portals: sites running decade-old PHP,
behind Cloudflare, with inconsistent pagination, broken SSL, and no public API.
If it works there, it works anywhere.
---
## The Problem
Government tenders, UN procurement notices, grant opportunities — the data
exists. It is public. It is valuable. But it lives behind the worst UIs on
the internet: JavaScript-rendered tables, multi-step pagination, session
cookies, CAPTCHA walls, and PDF links three clicks deep. A Nairobi-based
construction firm misses a KSh 50M contract not because they were
unqualified but because the portal was down on the day it was posted and
nobody checked again.
Traditional scrapers break the moment a developer renames a CSS class.
Scheduled curl jobs get IP-banned. Manual monitoring does not scale past
two or three portals.
---
## The Architecture
TinyMuscle makes one architectural bet: delegate all browser complexity to
TinyFish and own everything else.
```
TinyFish (browser agent)
↓ SSE stream — partial results committed in real time
Extractor (raw JSON → Tender structs)
↓ shape-agnostic — handles flat arrays and nested objects
Gemini 2.5 Flash (relevance scoring against business profile)
↓ single LLM call per batch — not per tender
BBolt (two-key deduplication)
↓ primary key: portalID + referenceNumber
↓ version key: SHA256 of content fields
SSE broadcast → Dashboard
↓ on demand
TinyFish (document fetcher)
↓ navigates to tender notice, finds and extracts all documents
Gemini 2.5 Flash (analyzer)
↓ reads documents against business profile
Analysis: summary, eligibility, required docs, draft bid response
```
Each stage has one job. Nothing crosses boundaries. The scheduler does not …