VP & Staff Software Engineer(s)
Role details
Job location
Tech stack
Job description
We are hiring a VP & 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., * 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., * 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, 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.
Requirements
Do you have experience in SaaS?, * 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)
Benefits & conditions
- Competitive salary and meaningful equity in a mission-driven, investor-backed company (US-incorporated; Kenya operating entity).
- Private health and wellness benefits - we'll walk through these during the process.
- A high-ownership environment with a steep but well-supported learning curve, and a team that writes things down.