Staff Software Engineer
Talentsafari • AnywhereAbout Share
Share is a venture-backed internet infrastructure network building Africa’s backbone. The company aggregates underutilised telecom infrastructure, fibre, subsea cables, and data centers, and provides ISPs with scalable access to bandwidth without traditional upfront costs. Through an open-access model, local internet providers can deliver dramatically faster speeds to their subscribers without raising their own costs.
Share’s network spans thousands of kilometres of fibre, 12 infrastructure providers, and 10 data centers, reaching over 8 million people across East Africa.
The platform team builds the software that makes this work: billing, payments, subscriber management, RADIUS-based network authentication, and integrations with ISP billing systems and mobile money providers. We are replacing legacy, non-API systems with a modern API platform, and real money is already flowing through the system. This is a small, high-intensity engineering team building core infrastructure under real deadlines. You will own entire domains, not tickets.
About the Role
We are hiring a Staff Software Engineer to take ownership of the platform’s most critical technical domains: the payments pipeline (collections, revenue splitting, treasury operations), the billing engine (subscription lifecycle, cycle management, automated renewals), and the integration layer (BSS/OSS sync with partner systems). You will work directly with the CTO and a small team of engineers to ship production systems that handle real financial transactions for real ISP partners.
This is the most senior individual contributor role on the engineering team. You are expected to make architectural decisions, write production code, review others’ work, and unblock the team when they hit technical walls. You will not manage people. You will build systems.
What You'll Own
Payments domain: SasaPay collections integration (C2B API, STK push, IPN handling), revenue split engine (per-partner, per-BNG percentage logic), ChoiceBank treasury operations (withdrawals, internal transfers, OTP flows), and the payment completion handler that bridges payment confirmation to subscriber activation.
Billing engine: Subscription and BillingCycle lifecycle, automated renewal cron, grace period enforcement, plan change mid-cycle logic, and the event-driven communication triggers that notify subscribers at every billing moment.
Integration layer: Splynx adapter (plan sync outbound, subscriber sync inbound, activation webhooks), custom webhook delivery engine, and the event routing that connects domain events to external system notifications.
Architecture decisions: Service boundaries, event contracts (Kafka), data model evolution (Prisma/PostgreSQL), API design for both public and private endpoints, and the migration strategy from the legacy Next.js monolith to the NestJS microservices platform.
Technical environment
Backend (where you will spend most of your time)
NestJS monorepo with 7 microservices (CRM, Billing, Payments, Ledger, Communications, Provisioning, Integrations)
TypeScript end-to-end
PostgreSQL with Prisma ORM (shared database, service-scoped access)
Kafka message bus (migrating from RabbitMQ) for inter-service communication (send/emit patterns)
Redis for caching, queues, rate limiting, and idempotency
REST API gateway with Swagger documentation
Payments and financial systems
SasaPay (OAuth 2.0, C2B collections, B2B transfers, IPN webhooks)
ChoiceBank BaaS API (KYC, internal transfers, OTP-based withdrawal confirmation)
Revenue split engine with per-partner/per-BNG/per-plan configuration
Double-entry ledger (AccountTransfer, AccountLedgerEntry, AccountRevenueSplit)
M-Pesa STK push integration via SasaPay as collections gateway
Infrastructure and tooling
GitHub Actions CI/CD, SSH deployment to VMs
Sentry for error monitoring, Loki + Pino for structured logging (being implemented)
Circuit breaker patterns, provider failover, webhook signature verification
FreeRADIUS integration for network subscriber provisioning (PPPoE credentials, plan attributes)
Legacy system (active, being migrated)
Next.js application with API routes (the payments module you’ll be refactoring lives here today)
Shared Prisma schema with the new platform
Active development continues on both repos simultaneously during migration
Requirements
Non-negotiable
7+ years of professional software engineering experience, with at least 3 years in backend systems handling real financial transactions (payments, billing, ledger, or treasury)
Deep TypeScript/Node.js expertise. You should be able to design a NestJS microservice from scratch, not just work in one.
Production experience with payment gateway integrations (M-Pesa, Stripe, Adyen, or similar). You understand STK push flows, webhook idempotency, callback signature verification, and reconciliation.
Strong PostgreSQL skills. You can design schemas for financial data, write migrations, and reason about transaction isolation and locking.
Experience with event-driven architectures (Kafka, RabbitMQ, or similar). You understand the difference between request-reply and fire-and-forget patterns and when to use each.
You ship. You can take a spec document and turn it into production code without waiting for someone to break it into small tasks.
Strong preference
Experience in East African fintech or mobile money ecosystems (M-Pesa, SasaPay, Airtel Money). Understanding of Kenya’s payment infrastructure and regulatory environment.
Experience with ISP billing systems, RADIUS protocols, or telecommunications platforms.
Experience with Prisma ORM and NestJS specifically.
Production experience with multi-tenant SaaS platforms (provider-scoped data, API key auth, webhook delivery).
Track record of migrating monolithic systems to microservices while keeping production running.
AI-augmented engineering (required mindset)
We expect every engineer at Share to use AI tools as a daily part of their workflow. This is not optional and not aspirational — it is how we operate. Our entire project planning, specification, and documentation process runs through AI-assisted sessions. Our codebase includes AI-readable context files. We use Claude for architecture decisions, code review, spec generation, and technical writing.
What this means for you:
You already use AI coding assistants (Claude, Cursor, Copilot, or similar) daily and can articulate how they change your workflow — not just autocomplete, but architectural reasoning, spec review, and debugging.
You are comfortable working with AI-generated specifications and can critically evaluate them, push back where they are wrong, and extend them where they are incomplete.
You see AI as a force multiplier that lets a small team operate at the capacity of a much larger one. You are not threatened by it; you are faster because of it.
You are willing to contribute to improving our AI-assisted workflows — better prompts, better context files, better session structures.
Compensation and details
Competitive compensation commensurate with experience.
Equity participation available.
Remote-first, with East Africa time zone overlap required for daily coordination with the team (Mombasa-Nairobi-based core team).
This is a high-impact role at an early, critical stage of a company, where you will have an outsized influence on the technical direction.