portfolio frilanspengen
Frilanspengen wip
frilanspengen.se ↗

Refuses to guess. Empty cell over a wrong one.

in progress solo · design + build + brand public launch june 2026 live in stealth
Frilanspengen — wordmark over a horizontal Swedish landscape
$ curl frilanspengen.se/llms-full.txt
› 14 companies · 26 fields
› source span per value
› verified: 12 May 2026
0 hallucinations
Zero independent comparisons existed. The category lacked a voice.
problem

Picking a Swedish umbrella company is a roll of the dice.

14 providers. 8× price spread. Every Google "comparison" is owned by one of them. Almost right is never right when it's your tax ID on the invoice.

solution

The model refuses to guess.

No value is stored unless the exact string exists in the source HTML. An empty cell over a wrong one. Refusal-as-feature.

outcome

Data with citations. Operators who respond.

Every value span-match enforced against the source HTML. Operators have reached out — not with threats, but to update their rows. That tells you what was missing.

A comparison is mostly text and tables. So the type has to carry the character. Bricolage Grotesque + JetBrains Mono.
Frilanspengen typography specimen — Bricolage Grotesque for display paired with JetBrains Mono for data. Type-scale samples include 'Fakturera.' and 'Avgiften är inte hela priset.' with letter-spacing and line-height tokens.
typography Display face for the voice, mono for the data. On a text-heavy page, type is the art direction.
14 companies tracked · weekly
26 fields per company · span-matched
0 hallucinations. Empty cell over a wrong one.
nothing wasted. each fail saved a feature debate later.
  1. aborted

    Sweden's Collective. Everything in one site.

    company type + on-ramp + lead-gen. The scope was glamour, not proof. Pivoted to a narrow scope — umbrella employment only. Decision Gate Q3 decides if broader follows.

  2. aborted

    Manifesto copy. "The money isn't theirs. It's yours."

    wrong tone for an independent data source. Switched to understated B2B. Users want trust, not revolt.

  3. aborted

    Affiliate networks. Adtraction, Awin, CJ.

    AI systems filter out affiliate sites. Direct CPA instead. Fewer deals, but citable.

What is a source span?
The exact HTML string on the source site where the value is found. No values are stored unless the model can point to the text. An empty cell over a wrong one.
How can a designer build an MCP server?
Spec. Agents execute. Span-match validates. The designer owns structure and contract, not keystrokes.

Next.js · Supabase · Inngest · MCP

open frilanspengen.se /metod · methodology ↗ /for-agents · MCP ↗