Sofia Developer Record Български

What each seller of off-plan homes in Sofia discloses, and what the public registers confirm, as of the stated date.

Methodology

Version 1.1.1, updated 11 September 2026.

What the score measures, and what it does not

It measures (A) what the seller itself discloses to a buyer before payment and (B) what of that, and about the seller, is confirmed in the country's official registers as of the date of the check.

It does not measure or assert construction quality, returns, reliability as a property of a company, intentions or the honesty of people. Buyer reviews are not scored. A low score means little was disclosed and little could be verified; it is not a statement that the developer is bad.

Money

Nothing is taken from a developer: not for listing, not for verification, not for leads, not for consultation, not for advertising. There is no card merchant. This is recorded in the machine-readable methodology as an invariant.

Sources and what they may demand

Every source records what it demands of the person asking. Only the first two levels may feed a card; a source that costs money or identity is not used at all, and the axis it would have fed leaves the country's denominator.

Allowed for the public corpus up to account.

Which countries can be rated

A country enters when a free register of companies and a free register naming who built a finished building both exist at identity level account or below, and at least 60 % of the Layer B points it could offer are collectable free and anonymously, attributable completion among them.

Layer A — disclosure (50 points)

Read from the seller's own site. Each criterion has three states: published (found, with a quote, URL, copy and date), not published (the listed pages were checked on the date and it was not there — a fact about publication), and not checked (0 points, no finding).

Criterionpoints
Selling legal entity named
sellerEntityNamed — the selling legal entity's full name and registration number
12
Payment protection stated
paymentProtectionStated — a payment protection with a named institution or statutory scheme
10
Building permit published
permitsPublished — a building permit number with its issuing body, and the type of land title
8
Delivery date and penalty published
deliveryTermsPublished — a contractual delivery date and the penalty for delay, available before payment
6
Prices published
pricingPublished — a price per home or per square metre and a payment schedule
6
Finished projects listed
trackRecordAttributable — a list of finished projects with names, addresses, years and the entities that built them
5
Parent company named
groupDisclosed — a parent or holding company named with its registration number
3

Layer B — public record (50 points)

Read from Tier A registers only, and only once the selling legal entity is identified. An axis with no register in the country is excluded from the denominator for every seller. For one seller, not found in the register is 0 points with the status not verified — recorded as not found, never as absent.

CriterionpointsRubric
Entity continuity
entityContinuity
10
  • found, active, registered 5 years or more (or linked in the register to a group entity that is): 10
  • found, active, registered 2 to 5 years: 7
  • found, active, registered under 2 years, no older linked entity: 3
  • found, not active: 0
Capital to project scale
capitalToProjectScale
6
  • ≥ 10 %: 6
  • ≥ 3.0 %: 4
  • ≥ 1.0 %: 2
  • ≥ 0 %: 0
registry.capital; A.pricingPublished == yes
Completion confirmed in the register
completionVerified
12
  • ≥ 80 %: 12
  • ≥ 50 %: 8
  • ≥ 20 %: 4
  • ≥ 0.0 %: 2
  • ≥ 0 %: 0
A.trackRecordAttributable == yes
Insolvency record of the seller and its group
groupInsolvencyRecord
8
  • no proceeding found, or only voluntary liquidations after completion: 8
  • a proceeding closed by a fulfilled agreement with creditors: 8
  • a liquidation with the project's status unclear: 4
  • an insolvency proceeding with a project not delivered: 0
Payment protection confirmed by a register
paymentProtectionVerified

Not available in Bulgaria: there is no statutory escrow, guarantee fund or developer licence for off-plan sales, so this axis leaves every Bulgarian seller's denominator.

8
  • found: 8
  • not verified: 0
Permit confirmed by the register
permitsVerified
6
  • found: 6
  • not verified: 0

Composite, checked and confirmed, states, bands, rank

Two numbers describe how complete a card is. Checked measures us: the weight of criteria and axes in a determined state — published or not published, a registry record or a registry search that found none, an input the seller never published (no prices closes the capital axis, no attributable list closes the completion axis), or a registry that refused three dated attempts over a week — divided by the points available in the country. Only an axis we have not looked at is undetermined. An identified seller is scored only when checked is complete; until then the card is not published at all.

Confirmed measures the seller: the weight of Layer B axes a registry answered with a record, divided by the points available in the country. It is shown next to the rank and changes nothing in the score.

A missing layer is not normalised away: a seller without a public record cannot score above about 38.

Bands

Rank

Rank is within the country, by score; scored and disclosure-only sellers rank together, ties broken by disclosure points; sellers without a score have no rank. Coverage is always shown beside the rank. There is no rank across countries.

Fixed wording

The templates for a negative finding, the disclaimers, the band names and the label for an unidentified seller are fixed strings: English is the normative original, the market language carries an approved version. Each is listed in the allowlist of approved strings by its hash; a change goes through the changelog. Where they differ, the English text governs.

StringEnglish (original)
template.aVerifiedNoWe checked {pages_checked} on {date} and did not find {item}. If it is published elsewhere, use “Challenge this fact”.
template.bNotFound{legal_name} ({reg_no}) was searched in {registry_name} on {date} by {search_key}; no record was found. Recorded as not found, not as a negative finding.
template.courts{n} final judgments naming {legal_name} as a party were found in {registry_name} on {date} ({search_url}). Case types are not classified; this count does not affect the score.
template.rf6Registry status of {legal_name} ({reg_no}) is “{status}” as of {registry_date} per {registry_name} ({url}, retrieved {retrieved_at}). Units under the brand {brand} were offered for sale on {site_url} on {site_check_date}.
template.rf1{site_url} stated on {site_check_date}: “{quote}”. {regulator_name} lists no {scheme} for {legal_name} / {project} as of {registry_date} ({url}).
template.rf3Judgment {case_ref} of {court}, final as of {date}, against {legal_name} in a purchase-contract dispute ({url}). Status: {lifecycle_status}.
template.review{regulator} announced on {date} a review concerning {subject} ({url}). No finding has been published.
disclaimer.1Not investment, legal or financial advice.
disclaimer.2Scores measure what the developer discloses and what can be verified in public registries as of the stated date. A low score means little could be verified; it is not a statement that the developer is bad.
disclaimer.3Unknown is never a negative finding.
disclaimer.4Every fact shows its source and retrieval date; any fact can be challenged via the form.
bandStrong public record
bandAdequate public record
bandLimited public record
bandWeak or unverifiable public record
label.disclosure_onlyPublic record not verifiable — selling entity not identified

Red flags

A red flag comes only from a verified false statement or a final official event, only from a Tier A source, only with a provenance record, and only after a person has reviewed the evidence. Penalties are subtracted from the score, capped at -40; the floor is 0. Not a flag: a young entity, missing data, an investigation without a decision, a voluntary liquidation after completion, reviews, press.

CriterionPenalty
Payment protection stated on the site, not found at the named institution or register
paymentProtectionClaimFalse
-15
A project named as finished is recorded as not finished in the register
completedProjectClaimFalse
-10
Final judgment against the seller in a buyer's purchase-contract dispute
adverseFinalJudgmentBuyerDispute
-10
Insolvency proceeding with an undelivered project
insolvencyWithUndeliveredProject
-15
Sanction published by a regulator
regulatorSanction
-15
Selling entity not active in the register while units are on sale
sellerEntityNotActive
-20

Lifecycle

A flag applies while its status is one of: final, opened; it is suspended while: appealed, pending; it is removed when: overturned, dismissed, expired. A removal opens a corrections-log entry by itself.

A card with any red flag, or whose selling entity is found not active, is not published until a person has opened its evidence and marked it reviewed.

How often facts are re-checked

A fact past its window is marked "may be out of date" on the card. The seller's site is also re-read on every challenge.

Identification and the group

The registration number is the key. Without one, the exact legal name is searched and accepted only as a single match corroborated by the seat or the officers; with two or more candidates nothing is published and the seller is scored on disclosure alone. An event at a project company is a fact about that company; it reaches the brand only through entities linked on the seller's site or in the register by two or more shared officers or a shared shareholder. People are not published: names of directors, shareholders and beneficial owners are processed for linking only and reach no page, feed, export or structured data.

Right of reply, corrections, removal

The form is "Challenge this fact": a fact id, the value the challenger holds to be correct, a document, and a representative reachable at the company's own domain or its registered address. Acknowledged within 2 business days, decided within 10. Three outcomes and no fourth: corrected (a public log entry — before, after, basis, date); removed with a notice ("Card removed at the company's request on {date}. Methodology unchanged."); not substantiated (the reply names the document that would substantiate it). Scores are not discussed; nothing changes a score for money; no consultation is given to developers.

Cards removed at a company's request

0 of 68 cards in this register have been removed at the company's request.

Invariants

Structured data

A card carries an Organization (the developer: legal entity and registration number) and a Review by the publisher with the rating and the "why this score" line. The register page is an ItemList; the export is a Dataset.

Changelog

A published score changes only through an entry here (the method changed) or through the corrections log (a fact changed).

Methodology changelog

Semver. Methodology § 16: a published score changes only through an entry here (the method changed) or through the corrections log (a fact changed). Every entry is written in plain language — what changed, which cards moved, why — and is rendered on each site's methodology page from this file.

1.1.1 — 2026-09-11

No weight, threshold, rubric or flag changed. Every card keeps the points it had. What changed is who may be shown, how the gap in a card is measured, how the site's fixed wording is guarded, and who decides.

Two numbers instead of one. A card used to carry a single coverage figure, and a card under 75 % was held back as pending. That single figure counted a seller's own silence as our gap: a seller who publishes no prices closes the capital-to-scale axis, a seller who publishes no list of finished buildings closes the completion axis — and under the old rule both pushed the card into pending, so the least transparent sellers dropped out of the rating entirely. That is the same defect the method has now met four times (court counts, the delisting procedure, the insolvency row, and this): the opaque seller must never come out ahead of, or vanish beside, the transparent one. From this version checked measures us — did we finish every check the country's registries allow — and must be 1.0 for a card to score; an axis closed by the seller's own non-disclosure, or by a registry that would not answer three times over a week, counts as checked with zero points. confirmed measures the seller — how much of the public record a registry actually confirmed — and is the figure shown next to the rank. Cards that moved: in Bulgaria, most of the 44 cards that were pending under the old number are scored under the new one; their points did not move, their visibility did.

Pending is not published at all. No page, no row in the table, no sitemap entry, no noindex stub. A stub is a publication too.

The fixed wording is guarded by its hash, and the lexicon matches whole word forms. The approved templates, disclaimers, band names and policy texts are listed by SHA-256; the build no longer parses them word by word, so a forbidden term inside our own approved sentence cannot fail the build and cannot tempt anyone to rewrite the sentence around the gate. The lexicon matches word forms, not substrings — a forbidden Bulgarian adjective is not matched inside the longer, ordinary noun that happens to contain it. A forbidden term inside a quotation from a seller's own page drops the quotation, logs the term and keeps the evidence — the criterion still scores, because the fact rests on the URL, the date and the hash, and the quotation was only ever a display. Bulgarian versions of every fixed string are approved and used verbatim; English stays the normative original, shown once on the methodology page.

A link to a related company is a fact, with its own id. The continuity axis pays ten points for "linked in the register to the disclosed group", so a link without a fact behind it was a score derived from nothing. Every linked_entities[] entry now needs a legal_entity fact on the seller's record — the related company's number, registration date and status, and the counts of shared officers and shareholders, never names — or it is neither scored nor shown.

Officers' names are stored as salted hashes. Linking needs only equality, so the data holds a hash of the normalised name, never the name; the clear text lives in a temporary file during a linking pass and is not committed.

The human gate and the wave gate. "B1 = 0" in the human gate means found_inactive — a company found in the register and not active — and such a card must be checked for the sixth red flag (still selling under the brand), otherwise the gate held the card for a flag nobody looked for. A wave is published when six listed conditions are met, and a person is not one of them: no axis unknown in the wave roster, the known-leader test green, zero unreviewed flags and inactive-entity cards, imprint and policies live, a test letter answered from the corrections address, and the live-site check green including the forbidden-string gate.

The wave roster is picked by market presence and frozen before collection. Twenty to thirty sellers, chosen by how much they build in the city, written down with source and date before any collection starts. Picking by what we had already collected would rank only the sellers who disclose.

Money, stated at its real edge. Forbidden: payment from a rated company, from its broker or agent acting for it, or any payment that changes what a card says. Allowed and said plainly: a check commissioned by a buyer for their own purchase; labelled advertising by services that sell to buyers (lawyer, notary, escrow agent, surveyor, mortgage broker), only on the guide and check pages and never on a rating page, the index or a card; licensing the corpus. The offer is live from the first wave. The 90-day economic stop counter counts enquiries as well as payments, from the day the wave is published.

Gate 0 decides which asset a domain carries, not whether one is built. Tier 1: the gate passed, a full rating. Tier 2: the gate failed but sellers publish sites, a disclosure register — Layer A only, every card disclosure_only, a fixed notice on every page that the country's registries are closed to free checking — plus a guide and the check offer. Tier 3: no seller sites either, the domain is unused.

Who decides. From this version the operator owns the method. There is no approval loop and no memo asking anyone for a decision. An ambiguity is resolved by a five-step ladder — invariant, provenance, anti-inversion, publish less, reversibility — written as one line in decisions.md, and work never pauses for an answer.

1.1.0 — 2026-09-09

Three things changed, none of them a weight.

Where a fact may come from. Every source now carries what it demands of the person asking: nothing (none), an e-mail login (account), a card payment in the payer's name (payer), a resident's electronic identity (national-eid), or a visit in person or through a local representative (in-person). Only the first two may feed a card. A paid extract or an e-ID login leaves a record of who asked about which companies inside the country where those companies live — the one trail the publisher's whole design is built not to leave. So a source that costs money or identity is not budgeted; it is not used, and the axis it would have fed simply leaves the country's denominator, exactly as if the registry did not exist. No seller loses points for it. A paid document exists in one place only: the dossier a buyer orders under their own name for their own purchase. Every fact records its level in retrieval.identity, and a fact above account fails the build.

Which countries can be rated. Gate 0 now asks two questions instead of three: is there a free (or login-only) register of companies, and is there a free register that says who built a finished building — not just that a building stands at an address. Court portals no longer gate admission: courts left the score in 1.0.0 (§ 7), and what cannot move a score cannot decide a country. A country passes when at least 60 % of the Layer B points it could offer are collectable free and anonymously, completion with attribution among them. Spain fails this today (8 of 36 free); Bulgaria passes (Sofia first, because its attributable completion register is municipal).

One new row in B4. An insolvency proceeding that ended because the company performed its agreement with creditors, every resolution dated in the register, scores the full 8 points and raises no flag. It is shown on the card with its dates and case number. Without this row a company that went through insolvency and paid everyone back would be scored like an opaque liquidation for ever — the transparent loser to the opaque, a confound this methodology already removed twice. One Spanish card moves from "awaiting review" to this row; nothing else moves.

1.0.0 — 2026-09-07

Initial methodology. methodology.json is extracted verbatim from docs/handoff/devreg-methodology.md § 21 and is not edited by hand; a doctor check compares the two on every run.