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 yearsSource-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:
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.
02Ownership beyond the code
recurringTwo 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.
03Talking to the people who use the thing
recurringProcurement 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.
What I took with me
- Long-pipeline domains reward modeling first. Once you've shipped seven modules that all need to talk to each other consistently, you stop coding before you've drawn the boxes.
- Mentorship sharpens the mentor. Explaining decisions to an intern is the fastest way to discover the ones you couldn't actually justify.
- Configurability has a tax - pick where to pay it. Every "make this configurable" request is a bet on a future shape of the customer base. Some bets are worth it; most aren't.