Skip to content
Skip to main content
Novel Systems home
Decision log
D-068August 5, 2026

No third-party profile is registered until the legal entity question is answered

Decided

the LinkedIn Company Page and the Crunchbase submission are both held. Nothing is registered, socials stays empty, VERIFIED_PROFILES stays empty, and check:social continues to report zero verified profiles. The drafts in docs/directory-listings.md stay written and unsubmitted.

Affects: config/site.ts (siteConfig.socials, unchanged and still empty), scripts/check-social-identity.mjs (VERIFIED_PROFILES, unchanged and still empty), docs/directory-listings.md, public/brand/ (deleted).

What stopped it. The LinkedIn Company Page form was filled and one checkbox from submission. That checkbox is a certification that the person submitting is an authorised representative of the company being created. The owner of this repository has stated that Novel Blinds Inc. is not his company and that he is an employee of it. Whatever the eventual answer is, "an employee, who has not said he is authorised to bind the parent" is not a state in which somebody else ticks that box on his behalf.

Why Crunchbase is held on the same reasoning and not a weaker one. It looked like the safer of the two, because a Crunchbase profile has no authorised- representative checkbox and no parent-organisation field it is obliged to fill. It is in fact the more expensive mistake. Everything published on this site says Novel Systems is an operating division of Novel Blinds Inc. — CONTRACTING_ENTITY in the MSA and the Terms, the controller clause in the Privacy Policy, the parentOrganization node in the JSON-LD, security.txt, /careers, and the legal line in the footer of every route. A Crunchbase profile is a record in a database that other databases copy, and a copied claim about who owns a company is far harder to retract than a page you can delete. Publishing that relationship into a third-party dataset on the same day it was contradicted is the wrong order of operations.

Why the guard was left empty rather than filled in advance. scripts/check-social-identity.mjs exists precisely to reject a social URL that has not been confirmed to belong to us — it was written after three guessed URLs shipped in the footer and all three resolved to unrelated companies. Registering a LinkedIn slug in VERIFIED_PROFILES before the page exists is the exact input that guard was built to fail on. An empty register is a truthful one.

What was deleted. public/brand/logomark-800.png, an 800×800 raster of NsLogomark generated for the LinkedIn logo upload. With the upload held it had no consumer, and an unreferenced binary copy of the brand mark with no check tying it back to the component it was rendered from is a thing that drifts silently. Adding such a check would have meant bumping VERIFY_CHECK_COUNT for an asset nothing renders. Regenerating it takes a minute on the day it is needed.

What would make this wrong. An answer to the entity question — either that the parent relationship as published is correct and the owner is authorised to register on its behalf, or that it is not correct, in which case the far larger job is lib/constants.ts and every legal document downstream of it, and the directory listings are the last step rather than the first.