Frank Hayes. Engineering robust software for complex business needs.

Purpose-built backend systems, scalable architectures, and automation solutions. Delivering reliability and measurable value from day one.

Nairobi, Kenya
Frank
frank-workspace
scrapebet/
agent.py
tools.py
config.yaml
models/
mpesa-sdk/
rehab-pms/
agent.py
tools.py
1# scrapebet — autonomous sports analytics agent
2from google.adk import Agent, tool
3from langchain_google_genai import ChatGoogleGenerativeAI
4from .tools import scrape_spanish_bookmakers, send_alert
5 
6@tool
7async def analyze_value_bets(market: str) -> list[Bet]:
8 """Scrape odds and identify value bets."""
9 odds = await scrape_spanish_bookmakers(market)
10 predictions = model.predict_value(odds, threshold=0.08)
11 for bet in predictions:
12 await send_alert(bet)
13 return predictions
14 
15agent = Agent(
16 model="gemini-2.0-flash",
17 tools=[analyze_value_bets, scrape_spanish_bookmakers],
18 instruction="You are an autonomous sports analytics agent."
19)
TerminalProblemsOutput
$ python -m scrapebet.agent --market=laliga
[agent] Initializing scrapebet agent...
[tool] scrape_spanish_bookmakers() → 12 bookmakers found
[model] Evaluating probabilities via gemini-2.0-flash...
[result] Value bet: Real Madrid ML +0.12 edge @ 2.10
[agent] Alert sent to Telegram channel.
AI
Gemini Agentjust now

Found 3 value bets in LaLiga markets:

Real Madrid ML → +0.12 edge
Betis Over 2.5 → +0.09 edge
Atletico DNB → +0.11 edge
Message Agent...
PythonTypeScriptC++DockerLaravelVue.jsPostgreSQLLangChainPythonTypeScriptC++DockerLaravelVue.jsPostgreSQLLangChainPythonTypeScriptC++DockerLaravelVue.jsPostgreSQLLangChainPythonTypeScriptC++DockerLaravelVue.jsPostgreSQLLangChain

A different kind of engineer. Delivering enterprise-grade software solutions that handle real-world complexity — from scalable fintech APIs to robust data pipelines.

FIG 0.2

Built for scale

Backend systems designed for real load. Multi-tenant, observable, and fault-tolerant from day one.

FIG 0.3

Intelligent automation

Advanced automated pipelines that streamline complex workflows and execute real actions reliably in production.

FIG 0.4

Designed for velocity

Clean architecture and tight feedback loops. Ship fast, iterate faster, break nothing.

Robust systems built for production.

Engineering scalable platforms that process complex data, run predictive models, and execute mission-critical workflows.

Identify value bets at scale

A high-throughput data aggregation platform that tracks live odds across 12 bookmakers and leverages machine learning to surface profitable edges.

PythonLangChain
Market ExplorerLaLigaPremier League
MatchImplied Prob.Edge
Real Madrid vs Barcelona45.2%+0.12
Atletico Madrid vs Sevilla38.8%-0.04
Valencia vs Betis52.1%+0.03
Athletic Club vs Real Sociedad30.5%-0.08
Getafe vs Celta Vigo41.0%-0.02
terminal — scrapebet.py
Scrapebet AgentJust now

Identified highly profitable value bet in LaLiga markets. Model confidence is 94%.

Real Madrid (+0.12 EV)
Odds: 2.10 @ Bet365

Manage operations seamlessly

Centralize patient records, scheduling, and billing. A multi-tenant PMS empowering 100+ rehabilitation centres across Kenya to operate efficiently.

LaravelVue.js 3
Nairobi Rehab Center
Overview & Analytics
Active Patients
142
Appointments Today
38
System Uptime
99.9%
Upcoming Schedule
09:00
Patient Intake - John D.
11:30
Group Therapy Session
14:00
Medical Evaluation
Paid
Invoice #INV-2049
Insurance claim settled via API
KES 45,000

Integrate payments with confidence

A high-performance C++17 SDK for Safaricom's Daraja API. Built with mutual TLS and OpenTelemetry for bulletproof, observable fintech infrastructure.

C++17OpenSSL
src/stk_push.cpp
auto payload = json{ {"BusinessShortCode", req.shortcode}, {"Password", generate_password(req.shortcode, req.passkey)}, {"Amount", req.amount}, {"PartyA", req.phone_number} }; return http_client_->post("/mpesa/stkpush/v1/processrequest", payload.dump());
M-PESA
Do you want to pay KES 4,500 to Rehab Center?
Enter PIN
Cancel
OK
[OpenTelemetry] Trace exported successfully
[TLS] Mutual authentication established (Safaricom CA)
[HTTP] POST /mpesa/stkpush/v1/processrequest
[HTTP] 200 OK — CheckoutRequestID: ws_CO_280...

Predict outcomes with precision

A production-grade ML ensemble recommendation system. Processing high-dimensional data to deliver reliable, high-stakes predictions in real-time.

Pythonscikit-learn
ScoreSense Model Dashboard
Live Inference Metrics
Accuracy
86.4%
Latency (p99)
45ms
Data Points
1.2M
model.py
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier

# Initialize the ensemble
ensemble = VotingClassifier(
estimators=[
('rf', RandomForestClassifier(n_estimators=100)),
('xgb', XGBClassifier(learning_rate=0.05))
],
voting='soft'
)
High Confidence
Prediction Ready
Ensemble agreement threshold reached.
Outcome A82%

Design that ships

A modern, high-performance web application engineered with Next.js App Router and Framer Motion, demonstrating clean component architecture and scalable design systems.

TypeScriptNext.js 15
src/app/page.tsx
export default function Home() {
return (
<main className="linear-bg">
<Header />
<Hero />
<LogoStrip />
<Projects />
<Skills />
</main>
);
}
Lighthouse Score
100
Performance
FCP
0.4s
LCP
0.6s
Framer Motion

Orchestrated smooth, hardware-accelerated animations throughout the entire DOM tree using Layout animations and AnimatePresence.

Engineering efficiency at scale

Architected for scale

I engineer multi-tenant backend systems and robust platforms designed to handle real business scale from day one, leveraging modern architecture to ensure high availability and performance.

Rapid time-to-market

Beyond writing code, I implement end-to-end automated pipelines that drastically reduce operational overhead. This accelerated feedback loop allows me to ship production-ready features reliably and consistently.

Time to production (days)
Features
Integrations
Core Systems

Ready to accelerate your velocity?

Whether you need to build complex autonomous systems, integrate mission-critical fintech APIs, or just want to talk about agentic architectures.