
The problem
Hiring runs on documents that were never designed to be compared.
A resume is a free-form marketing document. A job description is a wish list written by committee. The person reading both is doing it under time pressure, at volume, with no consistent basis for judgement.
ProfileIQ turns that pair of documents into something you can actually compare. What is in the profile, what the role asks for, and where the gap between them is.
The consequence is that both sides of the market make expensive decisions on thin evidence. Recruiters screen out candidates for the absence of a keyword rather than the absence of a skill. Candidates optimise for the screen rather than the job.
Structuring the underlying documents does not fix hiring, but it moves the conversation from pattern-matching on formatting to comparing what is actually there.
Why we built it ourselves
A studio that builds AI products for other people should carry at least one in production of its own.
Client work under NDA cannot be shown, however substantial it is. Some judgement only comes from owning the outcome — watching inference costs at real volume, being paged when a provider degrades, deciding whether an accuracy drop is worth delaying a release.
ProfileIQ is where we accumulate that judgement. It is why our recommendations on client work come from operating experience rather than from what reads well in a proposal.
There is also a discipline effect. Building for a client, you can rationalise a shortcut because the engagement ends. Building something you will still be running in two years, you cannot. Every decision below was made under that constraint — which is why we can describe them in detail rather than in the abstractions a case study usually settles for.
Architecture decisions
The core of the product is a document-understanding pipeline rather than a chat interface, which drove the main architectural choices.
Documents arrive in inconsistent formats and have to be cleaned up before anything intelligent happens. Most of what people experience as AI quality is decided in that parsing and structuring, long before a model is called.
We pull documents into clean fields first, so the model reasons over structured data rather than raw text. That cuts how much text we send, cuts cost per request, and makes results consistent enough to test. State lives in a relational store because the queries the product needs are relational. Retrieval is added only where semantic similarity is genuinely the right operation.
The corollary is that we resist making the model do work a database should do. Filtering, sorting and aggregating are cheap, predictable and testable in SQL, and expensive, unpredictable and untestable in a prompt. Drawing that boundary early is what keeps the product debuggable. When something looks wrong, it is usually clear within a minute which side of the line the fault is on.
How accuracy is kept honest
Every AI feature in ProfileIQ ships with an evaluation set built from real inputs and a scoring pass that runs whenever prompts, models or parsing change.
This is the single most transferable practice from the product to client work. Without it, a model change is a guess and a prompt tweak is a superstition. With it, the question “did that make it better?” has an answer.
It also makes switching providers real. Because behaviour is measured rather than assumed, moving a feature between OpenAI, Anthropic, Google or an open-source model is a decision about cost and speed, not a rewrite.
Building the first evaluation set is genuinely tedious and always worth it. It takes real inputs, a considered view of what the right output is, and the discipline to keep adding cases whenever something surprising turns up in production.
What it buys is speed. Change a prompt, a model or a parsing rule and you know within minutes whether it helped. The alternative is hearing about it from users a fortnight later.
Operating it in production
Running the product surfaces the costs that never appear in a prototype.
Keeping spend per request predictable as usage grows. Handling rate limits and outages without failing the user. Deciding what to cache and for how long. Designing the interface so an imperfect answer reads as a suggestion, not a verdict.
That last one is a product decision as much as a technical one. A system that is confidently wrong is worse than one that shows its working. Users forgive uncertainty far more readily than false certainty.
Cost discipline is a product constraint, not just an engineering one. A feature that only makes sense at low usage punishes success. So cost per request is a design input from the start, not something to optimise after growth. We bring the same reasoning to client work: what will this cost per user at ten times today’s volume? Founders are rarely asked that early enough.
What this means for client work
The practices ProfileIQ runs on are the ones we bring to AI integration engagements: structure before generation, evaluation sets from day one, the freedom to switch providers, and honest interface treatment of uncertainty.
They are also why a Discovery Sprint aims its proof-of-concept at the AI component — that is where the risk concentrates, and proving it in week one is what stops a build stalling in week seven.
If you want to judge how Bluesphere Digital builds, the most direct way is to use ProfileIQ rather than read about it.
The gap between AI features that work and AI features that embarrass their owners is mostly ordinary engineering discipline. A studio that operates its own product has fewer places to hide from it.