~/sahilrajpal.com/experience/factwise
factwise →

FactWise · Software Engineer

Backend lead on a source-to-pay procurement platform - owned roughly 90% of the modules end-to-end.
Jul 2021 - Jul 2023
~90%
of modules owned
2 yrs
first full-time role
10+
production modules shipped
interns
mentored (PM + dev)

FactWise is a B2B procurement platform - the boring-but-load-bearing software that runs between a company deciding it needs to buy something and the supplier getting paid. I joined as the second backend engineer and stayed for two years; by the time I left, I'd built or substantially owned roughly nine-tenths of the modules in the source-to-pay flow.

01Source-to-pay, end-to-end

~2 years

Source-to-pay is one long pipeline with a lot of failure modes. Buyers raise requirements, negotiate with suppliers, cut purchase orders, receive goods, run quality checks, match invoices, and eventually pay. I shipped the backend for each of those stages:

events
negotiation
purchase orders
draft purchase orders
invoices
quality checks
goods receipts
admin panel
notification config
approval flows

Every module had to be configurable enough that customers could tailor it to their own approval matrices and supplier hierarchies without us shipping bespoke code per account. The approval-flow engine in particular ended up being the piece I'm proudest of - rules that compose, role-based assignment, audit trails on every state change.

stack: pythondjangodrfpostgresdockerceleryrest apis

02Ownership beyond the code

recurring

Two years on a small team taught me the parts of the job that aren't writing code: keeping the codebase from rotting under shipping pressure (clean-code discipline, modularity, the unglamorous refactors), assigning tickets thoughtfully based on what each teammate was trying to grow into, and tracking work to completion without micromanaging it.

Mentored a rotation of PM and dev interns through their ramp-up - helping them get past the first awkward weeks where you don't know what you don't know, and teaching them to ask the clarifying questions early rather than three days deep into a wrong implementation.

stack: code reviewmentorshipproject planning

03Talking to the people who use the thing

recurring

Procurement is full of context that does not exist on Jira tickets. Every meaningful feature I shipped started in a call with a procurement lead at a customer describing the awkward workaround their team was using. Building the right approval matrix for a 100-supplier manufacturing company looks nothing like building it for a 5-supplier SaaS startup, and you only learn that by asking.

stack: customer callsrequirements gathering

What I took with me


← back to experience Pragma → Loopio → email me →