Meta Description: From intermittent power in Lagos to 99.9% uptime serving global clients. My honest journey as a remote ML engineer in Nigeria, including strategies, challenges, and revenue milestones.
Slug: /building-in-nigeria-shipping-globally-remote-ml-engineer
Reading Time: 11 min

This was the actual first question from a potential client in 2022.
I had just spent 3 hours on a discovery call, perfectly explaining how I'd build their ML system. We were discussing pricing. Then they asked about my location.
"Lagos, Nigeria," I said.
Long pause.
"How do you handle power outages? Internet reliability? Payment processing?"
These weren't innocent questions. They were polite ways of saying: "We don't trust you'll deliver."
I lost that client. Not because of skills. Not because of price. But because of zip code.
Fast forward to December 2024:
This post is the complete playbook for African developers looking to compete globally. No sugarcoating. Just real strategies, real numbers, and real challenges.
Let's be honest about what makes this hard:
Power:
Internet:
Total infrastructure tax: ~$300/month just to have reliable basics
For comparison: My US-based developer friends pay $0 for power, $50 for gigabit internet.
Problems I've encountered:
My current solution (took 6 months to figure out):
Total cost of payment workaround: ~$1,200/year in overhead
This is the hardest one. Even with a strong portfolio:
Reality: The first client is 10x harder to land than the 10th.
My actual workspace setup:
Power Setup:
├── National Grid (4-8 hrs/day) ← Free but unreliable
├── Generator (Backup #1) ← $180/month fuel
├── UPS (Backup #2) ← Covers generator startup delay
└── Laptop Battery (Backup #3) ← Final fallback
Internet Setup:
├── Fiber ISP (Primary) ← 50 Mbps, $70/month
├── 4G Hotspot (Backup) ← 20 Mbps, $50/month
└── Neighbor's WiFi (Emergency) ← Borrowed during dual failure
Total monthly cost: $300
Why this works:
Pro tip: Automatic failover for internet
# Linux script for automatic ISP failover
#!/bin/bash
PRIMARY_INTERFACE="eth0" # Fiber
BACKUP_INTERFACE="wlan0" # 4G hotspot
PING_TARGET="8.8.8.8"
while true; do
if ! ping -c 3 -I $PRIMARY_INTERFACE $PING_TARGET > /dev/null 2>&1; then
echo "Primary ISP down, switching to backup..."
sudo ip route del default
sudo ip route add default via $(ip route | grep $BACKUP_INTERFACE | awk '{print $3}')
# Send alert to phone
curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=Internet failover activated"
fi
sleep 60
done
Result: 99.9% personal uptime despite infrastructure challenges
Step-by-step guide to accepting international payments from Nigeria:
Option 1: US LLC + Stripe (What I use)
Register US LLC via Northwest Registered Agent - $39 + state fees
Open US business bank account
Apply for Stripe account using US LLC
Invoice clients through Stripe
Transfer to Nigerian account quarterly
Total setup time: 2-3 weeks
Total cost: $500 setup + $300/year maintenance
Option 2: Payoneer (Simpler but higher fees)
Pro: Fast setup (1 day)
Con: Higher transaction fees (2% vs. Stripe's 2.9% + 30¢)
Option 3: Wise Business (For smaller amounts)
I use a combination: Stripe for recurring payments, Wise for one-time invoices under $1K
The trust problem is real. Here's how I overcame it:
Before (Portfolio that didn't work):
Generic template website
- "ML Engineer"
- "I build models"
- List of technologies
- No live projects
- No social proof
Conversion rate: less than 1%
After (Portfolio that converts):
scardubu.dev
- Specific positioning: "Full-Stack ML Engineer Building Production AI"
- Live projects with real metrics (350+ users, 99.9% uptime)
- Actual product demos (not just GitHub repos)
- Client testimonials with names + companies
- Active blog with technical depth
- GitHub contributions (showing I ship code)
Conversion rate: ~15%
Key lessons:
Portfolio mistake I made: Hiding my location
Why it backfired: Clients found out later, felt deceived
What works: Be upfront about location, then immediately address concerns:
"I'm based in Lagos, Nigeria. Here's how I ensure reliability:
- 99.9% uptime on my production system (350+ users)
- Backup power + internet (redundant setup)
- Timezone flexibility (I work US/EU hours when needed)
- Regular client communication (daily Slack updates)
My location means lower rates for you, same quality output."
Mistake I made year 1: Pricing at "local" rates
Reasoning: "Nigeria has lower cost of living, so I should charge less"
Result:
Realization: Infrastructure costs (power, internet, LLC, tools) are in USD. Cost of living argument is BS.
New pricing strategy:
| Service | Year 1 Pricing | Year 2 Pricing | Reasoning | |---------|---------------|---------------|-----------| | Hourly Consulting | $40/hr | $100/hr | Global market rate for mid-level ML engineer | | Fixed Project | $2K-5K | $5K-15K | Outcome-based, not time-based | | Monthly Retainer | $1.5K | $3K-5K | Predictable income, long-term relationships | | SaaS Product | N/A | $19/mo per user | Scalable revenue |
How I justified higher rates:
Result: Revenue increased 4x with fewer clients (better quality)
This is the hardest part. Here's exactly how I did it:
Goal: Have something to show before asking for money
What I did:
Built SabiScore (ML sports prediction platform)
Started blogging
Contributed to open source
Cost: $0 (just time)
Result: Portfolio that didn't look empty
Platform: Upwork (controversial, but it worked for me)
Strategy:
Hyper-specific profile:
Sent 50 proposals in first month
First client willing to take a chance:
Leveraged that review:
Key lesson: First client just needs to be someone. Quality matters more than price.
Upwork alternatives that worked:
What happened:
Inbound leads:
Email template that converted:
Subject: ML consulting for [Their Company]
Hi [Name],
I came across [Their Company] while researching [their industry].
Really impressed by [specific thing about their product].
I noticed you're [pain point I can solve - be specific].
I've worked on similar challenges with [previous client result].
I write about production ML at scardubu.dev/blog.
Here's a relevant post: [link to post addressing their pain point]
Would love to chat about [specific project idea].
My calendar: [calendly link]
Best,
Oscar
Why this works:
What happened:
Referral tactics:
Ask at project completion:
Make it easy:
Stay top of mind:
Result: 30% of new revenue now comes from referrals
1. Timezone Overlap (I overlap 4 hours with US EST)
My schedule:
Why this works:
2. Over-Communicate Progress
My daily update template:
Daily Update - [Date]
Completed Today:
- ✅ Feature X implementation (PR #123)
- ✅ Fixed bug in prediction pipeline
- ✅ Wrote tests for data validation
In Progress:
- 🔄 Model retraining (ETA: tomorrow noon)
- 🔄 Documentation updates
Blockers:
- ⚠️ Waiting on API access from third-party
Next Steps:
- Tomorrow: Deploy model v2 to staging
- This week: User acceptance testing
Questions for you:
- Preference on error handling approach? (Option A vs B)
Why this works:
3. Set Boundaries (Availability Hours)
Email signature:
---
Oscar Ndugbu
Full-Stack ML Engineer
📧 scardubu@gmail.com
🌍 Lagos, Nigeria (GMT+1)
💬 Available: Mon-Fri, 6 AM - 6 PM WAT (1 AM - 1 PM EST)
🔗 scardubu.dev
Why this works:
| Tool | Purpose | Cost | Why It's Critical | |------|---------|------|------------------| | Slack | Team communication | Free | Async communication > email | | Loom | Video updates | Free | Show progress, not just tell | | Notion | Documentation | Free | Single source of truth | | Calendly | Meeting scheduling | Free | Eliminates timezone confusion | | Tuple/VSCode Live Share | Pair programming | Free | Build trust through real-time collab | | GitHub Projects | Task tracking | Free | Transparency on progress |
Let's talk money. Real numbers from my business:
| Source | Revenue | % of Total | |--------|---------|-----------| | SabiScore (SaaS) | $19,860 | 40% | | Consulting Projects | $18,500 | 37% | | Monthly Retainers | $9,600 | 19% | | Workshops/Speaking | $2,000 | 4% | | Total | $49,960 | 100% |
MRR Progression:
Target for 2025: $3,500 MRR ($42K ARR)
| Category | Cost | % of Revenue | |----------|------|-------------| | Infrastructure (Power + Internet) | $3,600 | 7.2% | | Software/Tools | $1,200 | 2.4% | | LLC + Payment Processing | $1,500 | 3.0% | | Cloud Hosting | $840 | 1.7% | | Marketing | $600 | 1.2% | | Misc (Office, Equipment) | $1,260 | 2.5% | | Total Expenses | $9,000 | 18% |
Net Profit: $40,960 (~82% margin)
For context:
1. Currency Exchange Losses
2. Tax Complexity
3. Equipment Replacement
4. Opportunity Cost
Real profit after hidden costs: ~$37K/year
Week 1-2: Build Something Real
Week 3-4: Document It
Week 5-8: Get First Testimonial
Week 9-12: Apply to 50 Jobs
Goal by end of month 3: 1 paying client
Build in Public
Content Strategy
Network Actively
Convert Clients to Retainers
Goal by end of month 12: 5 clients, $2K+ MRR
Build Products
Invest in Your Brand
Compound Advantages
Don't: Pretend you're in US/Europe
Do: Be upfront, then address concerns immediately
Don't: Charge Nigerian rates for global clients
Do: Charge global rates (your costs are in USD too)
Don't: Start work based on Slack agreement
Do: Always have written contract + 50% upfront
Don't: Work unlimited hours for fixed price
Do: Track every hour (even for fixed projects) to learn
Don't: Accept every project offer
Do: Say no to bad clients (red flags: unclear scope, pushback on contracts, demanding 24/7 availability)
Here's what I realized after 2 years:
Being in Nigeria is actually an advantage:
Lower costs = Higher margins
Hungry to prove yourself
Unique perspective
Time zone flexibility
Authenticity
Your biggest limitation is in your mind, not your location.
Building from Africa and going global? I'd love to hear your story.
Reach out:
Want to work together?
Starting your own journey? I offer mentorship: $100/month for weekly 1-on-1 calls + code reviews
Know someone building from Africa? Share this with them:
What's your biggest challenge as a remote developer in Africa? Let's discuss in the comments. 👇
Last updated: December 2025 | Reading time: 11 minutes