NexSetu
Founder, solo
May - Sep 2026
Thesis retired after discovery
NexSetu, a product I stopped building
I set out to fix hiring in the skilled trades. Fifteen practitioner interviews
overturned my thesis three times, and a journeyman lineman delivered the fourth correction by
explaining that the problem I was solving had already been solved without software.
The situation
The skilled trades are described everywhere as short of electricians. I assumed the bottleneck was
supply and matching, and that a better platform would help.
I had never worked in the trade. So before scaling anything I went and asked the people who had.
What I did
- Ran 15+ discovery interviews with contractor principals, association executives, recruiters and
journeymen, including a 49 minute recorded session with an IBEW business manager
- Worked both sides of an industry that largely does not talk to itself, union and merit shop
- Mapped the existing credentialing landscape across NCCER, DOL registered apprenticeship, RAPIDS
and state licensure to establish what was already portable
- Built the platform end to end as sole engineer: FastAPI and async SQLAlchemy backend, React 19
and TypeScript frontend, 63 passing backend tests
The call I had to argue for, with myself
There is no shortage of applicants. Contractors are sitting on stacks of resumes
they do not trust.
Four recruiters told me independently that the strongest electricians are not
applying to anything. A workforce development director put it more plainly: there are plenty of people.
That killed the premise. The binding constraint was employer trust, not candidate supply, which meant
the AI matching engine I had planned would have optimised the wrong side of the market entirely.
I retired it and shipped deterministic matching instead, scoring certification overlap, distance, pay
alignment and availability, where every result can be explained to the contractor relying on it.
Where the model earned its place, and where it did not
Retiring the AI matching engine was not a retreat from AI. It was deciding which
half of the problem a model is actually good at.
Certification equivalence is a genuine semantic problem. "EPRI Certified
Journeyman Lineman" and "NCCER Level 4 Electrical" are neither string-equal nor unrelated, and no
lookup table survives contact with fifty states. So that part runs on embeddings: each certification
is vectorised once at 4,096 dimensions and stored in pgvector, and match time computes cosine
similarity against every held credential. I calibrated the thresholds by hand, full credit above 0.88,
proportional partial credit down to 0.70, nothing below. If pgvector is unavailable or the API key is
missing, it falls back to deterministic string matching rather than failing the request.
The same applies to input parsing. Job descriptions, resumes and photographed
certificates all go through an LLM, and every one of those paths has a regex fallback behind it.
What I would not let a model touch was the ranking. A contractor looking at
a shortlist has to be able to ask why this person is third, and get an answer. So the scoring engine
above the embeddings is pure and deterministic: interval overlap for pay, Haversine for distance,
heap selection for top-K, tunable weights. The model informs one input. It never decides the outcome.
The trade off
I eliminated four candidate product directions against consumer reporting law, labor law and fair
chance hiring norms before any engineering commitment.
One would have surfaced the employers a candidate had left off their resume. It would have worked.
It would also have landed hardest on people with criminal records, who this trade deliberately hires
and deliberately does not interrogate about gaps. I did not build it.
What I got wrong, and who corrected me
I published that everything up to the point a worker is certified is recorded and everything after
is invisible. A journeyman lineman told me that was wrong, and he was right.
It is not invisible. It is not written down. Reputation moves by phone call between people who
already know each other, and he fields those calls most days.
Where it stands
The correction went further than I expected. I had the network stopping at the state line: it does
not, because you can always call where a man came from. I had storm and travel work as the place it
breaks down: travel is what builds the connections. And I had assumed a worker with no history was at
a disadvantage, when in fact his reputation starts on day one of the job.
That last point mattered most. The harm I had spent two months designing
around, a formal record that quietly penalises anyone without one, is not a problem this trade
currently has. I would have introduced it.
Status: no users, no revenue, thesis
retired. What I have instead is an evidenced account of how hiring trust actually works in this trade,
and a habit of finding out before building rather than after.
What I committed to anyway
Four reversals in six months invites a fair question: does this person investigate instead of
deciding? So it is worth being specific about what I did commit to while all that was going on.
I built the entire platform as the only engineer. FastAPI and async
SQLAlchemy over PostgreSQL, React 19 and TypeScript, job posting through matching, interview
scheduling and post-hire outcome tracking, 63 backend tests, live license verification against the
Texas and Florida state boards, semantic matching on pgvector. I shipped a deterministic scoring
engine and defended the choice. I published findings under my own name knowing practitioners would
read them, and twice they told me publicly I was wrong.
The reversals were not hesitation. Each one was a decision to stop paying
for something, made on evidence, and each was followed by building the next version. What I would not
do was keep building a thing fifteen people had told me was aimed at the wrong problem.