Back to projects

Adtraction / HubSolution

Software Developer at Adtraction. Worked on a live platform alongside one senior developer, shipping to production and building tooling that improved the team's workflow.

Mar. 2026 - May 2026

TypeScript
MariaDB
Elasticsearch

What is HubSolution?

HubSolution connected advertisers with loan providers on a pay-per-conversion model. Applicant data came in from ad sites, got transformed to what each loan provider expected, and a response came back as approved or rejected. I was hired to work alongside the senior developer who had built most of it.

I was there for 7 weeks before the entire department was shut down as part of a company restructuring.

The Problem

Adding a new integration meant copy-pasting an existing file and manually wiring up field requirements, validation logic, and data mapping. Every integration did validation differently. Documentation from loan companies was often outdated, so there was constant back-and-forth over email just to figure out which fields they actually needed.

On top of that, when we rejected an application, ad sites just got "rejected" with no reason and no way to fix it on their end.

What I Built

I tackled this from three angles:

  • A Validator framework with composable rules (AgeMin, AgeMax, SSN format, etc.) that standardized validation and auto-generated clear rejection reasons instead of generic "rejected" messages
  • An Integration Builder web UI where you configure fields, constraints, and mappings visually, then export JSON that feeds into a template generator to scaffold new integration files
  • Normalized error responses so ad sites could actually see why an application was rejected and fix issues on their end

Integration Builder

This was the piece I am most proud of. It pulls field definitions live from the HubSolution API, lets you configure requirements and validation per field, and outputs a JSON spec. That spec feeds into a Handlebars.js template that generates a ready-to-go integration file. Non-technical people at loan companies could use it to define their own field requirements, cutting out the email ping-pong.

Impact

In 7 weeks I shipped 20 new integrations on top of ~60 existing ones, updated many old ones with proper validation by digging through error logs in MariaDB, and built the tooling above. Everything was backwards-compatible as nothing could break for live integrations.