Blog
PreviousNext

Mathematical Framework for Finding a Premium Startup Name with Available Domains

Why short, clean names like Linear, Clay, and Notion catch VC attention, and a mathematical framework for finding available brand names and domains when most .com and .ai options are gone.

Startups with short, memorable names tend to travel further in VC conversations than equally good products with forgettable ones. Think Linear, Clay, Glean, Attio, Monday, Vercel, Notion: each is easy to say once, easy to spell, and hard to confuse with something else. That combination matters: investors hear hundreds of pitches, and a name that sticks without explanation is a small but real advantage.

The problem is that most of the obvious .com and .ai names in that style are already taken. The search is not on a blank slate. It is for something that feels premium while the domain is still available. I ran into this while naming my own project and landed on mayro.ai after ruling out dozens of taken alternatives: short, pronounceable, and ownable. That is the kind of candidate this framework is built to surface systematically.

The approach is a two-layer constrained optimization system: generate linguistically plausible candidates first, then rank them by brand utility.

Generate linguistically plausible names first, then optimize brand utility over them.\boxed{\text{Generate linguistically plausible names first, then optimize brand utility over them.}}

Research supports pronunciation fluency, phonotactic probability, sound symbolism, and linguistic distinctiveness as useful signals, but there is no evidence that “sounding like a VC-backed startup” is itself a causal property. Company-name fluency evidence comes largely from public firms and investor behavior, not from a controlled study of venture capital naming preferences. (SSRN)

1. Formal problem

Represent a startup name as both an orthographic and phonological object:

N=(g,p,m,t)N=(g,p,m,t)

where:

  • g=(g1,,gL)g=(g_1,\ldots,g_L) is the written string
  • p=(p1,,pq)p=(p_1,\ldots,p_q) is its phoneme sequence
  • mm is syllable count
  • tt is the syllable/stress structure

An equivalent representation uses arbitrary linguistic units:

N=(u1,,uk)N=(u_1,\ldots,u_k)

where each uiu_i may be a letter, phoneme, syllable, morpheme, or any other unit appropriate to the layer.

The complete optimization problem is:

N=argmaxNGHS(N)\boxed{ N^*=\arg\max_{N\in\mathcal G_H}S(N) }

where GH\mathcal G_H is the set of names surviving the hard linguistic constraints.

The top-KK version is:

{N1,,NK}=TopKNGHS(N)\boxed{ \{N_1,\ldots,N_K\} = \operatorname{TopK}_{N\in\mathcal G_H}S(N) }

and a diversity-aware version later becomes:

MMR(NA)=S(N)λdivmaxaASim(N,a)\operatorname{MMR}(N|A) = S(N)-\lambda_{\rm div}\max_{a\in A}\operatorname{Sim}(N,a)

so that the top 100 are not just 100 microscopic variations of the same pattern.


2. Layer 1: the generative model

2.1 Naive search space

For an alphabet of size AA and maximum character length LmaxL_{\max},

Nchar=l=1LmaxAl=A(ALmax1)A1|\mathcal N_{\rm char}| = \sum_{l=1}^{L_{\max}}A^l = \frac{A(A^{L_{\max}}-1)}{A-1}

For English letters and Lmax=8L_{\max}=8:

l=1826l=217,180,147,158\sum_{l=1}^{8}26^l = 217,180,147,158

So brute-forcing all short strings is already around 217 billion candidates.

That is the wrong search space.


3. Factor the generation space linguistically

Instead of generating arbitrary character sequences, generate syllables.

Let:

  • OO = onset inventory
  • VV = nucleus inventory
  • CC = coda inventory
  • TT = legal syllable templates

For each template τT\tau\in T, let nτn_\tau be the number of valid syllables produced under the phonotactic grammar.

Define:

Ssyll=τTnτS_{\rm syll} = \sum_{\tau\in T}n_\tau

Then the number of mm-syllable phonological candidates is approximately

Pm=Ssyllm|\mathcal P_m| = S_{\rm syll}^m

and therefore

P3=Ssyll+Ssyll2+Ssyll3|\mathcal P_{\le3}| = S_{\rm syll} + S_{\rm syll}^2 + S_{\rm syll}^3

For example, if the legal syllable generator produces only 250 usable syllables:

250+2502+2503=15,687,750250+250^2+250^3 = 15,687,750

Now the search problem is in the millions rather than hundreds of billions.

This is exactly where phonotactic probability becomes useful. Experimental work on English nonwords found that strings composed of higher-probability phonological constituents are judged more wordlike, and such patterns also performed better in recognition memory. (PubMed Central (PMC))


4. Phonotactic generator

Use a weighted phonotactic model:

logPθ(p)=logP(p1)+i=2qlogP(pipi1)\log P_\theta(p) = \log P(p_1) + \sum_{i=2}^{q} \log P(p_i|p_{i-1})

A better implementation uses trigrams plus phonological position:

logPθ(p)=ilogP(pipi2,pi1,posi,σi)\boxed{ \log P_\theta(p) = \sum_i \log P(p_i \mid p_{i-2},p_{i-1}, \operatorname{pos}_i, \sigma_i) }

where σi\sigma_i is the syllable containing phoneme pip_i.

Then define normalized phonotactic quality:

Tphono(N)=σ(LP(N)μLPσLP)T_{\rm phono}(N) = \sigma\left( \frac{LP(N)-\mu_{LP}} {\sigma_{LP}} \right)

where

LP(N)=1qlogPθ(p)LP(N)=\frac1q\log P_\theta(p)

and σ()\sigma(\cdot) is the logistic function.

This yields an explicit score for whether a string sounds like something English speakers could plausibly say.

Research on brand naming also finds broad evidence that pronunciation ease and adherence to phonological/phonotactic principles affect name appeal across speakers with many native-language backgrounds. (KCI)


5. Hard constraints

Define:

H(N)=jhj(N)H(N)= \prod_j h_j(N)

where each hj{0,1}h_j\in\{0,1\}.

A candidate enters the ranking set iff:

H(N)=1H(N)=1

The core constraints are:

1m31\le m\le3 3L83\le L\le8 qqmaxq\le q_{\max}

and:

LP(N)τphonoLP(N)\ge\tau_{\rm phono}

plus pronunciation and spelling constraints.

Typical syllable templates:

T={V,VC,CV,CVC,CCV,CVCC,CCVC}\mathcal T= \{V,VC,CV,CVC,CCV,CVCC,CCVC\}

The constraints should be high recall, not excessively restrictive. They define the language rather than brand taste.


6. Pronunciation and spelling probability

Pronunciation and spelling probability are central to the scoring model.

For spelling gg, define possible pronunciations:

Π(g)={p1,,pr}\Pi(g)=\{p_1,\ldots,p_r\}

Then:

Ppron(g)=maxpΠ(g)Pθ(pg)P_{\rm pron}(g) = \max_{p\in\Pi(g)}P_\theta(p|g)

For hearing a pronunciation and spelling it, define:

G(p)={g1,,gs}G(p)=\{g_1,\ldots,g_s\}

and:

Pspell(p)=maxgG(p)Pθ(gp)P_{\rm spell}(p) = \max_{g\in G(p)}P_\theta(g|p)

Also define spelling uncertainty:

Hspell(p)=gG(p)P(gp)logP(gp)H_{\rm spell}(p) = -\sum_{g\in G(p)} P(g|p)\log P(g|p)

Then:

SpellEase(p)=Pspell(p)eλHHspell(p)\boxed{ \operatorname{SpellEase}(p) = P_{\rm spell}(p) e^{-\lambda_H H_{\rm spell}(p)} }

This is much stronger than “letters look simple”.

The model targets a concrete question: if somebody hears a name once, what is the probability they write the intended spelling?

Likewise:

E(N)=PronEase(N)rSpellEase(N)1r\boxed{ E(N) = \operatorname{PronEase}(N)^r \operatorname{SpellEase}(N)^{1-r} }

with

PronEase(N)=maxpP(pg)\operatorname{PronEase}(N) = \max_p P(p|g)

The geometric mean is deliberate: extremely poor spelling or pronunciation cannot be hidden by excellence in the other direction.


7. Brand-quality layer

Once a name passes generation constraints, construct a feature vector

x(N)Rdx(N)\in\mathbb R^d

and normalize its dimensions into approximately [0,1][0,1].

Then:

S(N)=wPP(N)+wMM(N)+wBB(N)+wDD(N)+wEE(N)+wVV(N)+wCC(N)wXX(N)\boxed{ S(N)= w_P P(N) +w_M M(N) +w_B B(N) +w_D D(N) +w_E E(N) +w_V V(N) +w_C C(N) -w_X X(N) }

Unlike a simplistic naming formula, each term in S(N)S(N) is itself a mathematically defined latent composite.


8. Phonetic quality P(N)P(N)

Define:

P(N)=a1Tphono+a2Ttransition+a3Tstress+a4TarticulationP(N) = a_1T_{\rm phono} +a_2T_{\rm transition} +a_3T_{\rm stress} +a_4T_{\rm articulation}

with

iai=1.\sum_i a_i=1.

Transition smoothness

Let dart(pi,pi+1)d_{\rm art}(p_i,p_{i+1}) be distance between adjacent phonemes based on manner, place and voicing.

Then:

Ttransition=exp[κT1q1idart(pi,pi+1)]T_{\rm transition} = \exp \left[ -\kappa_T \frac1{q-1} \sum_i d_{\rm art}(p_i,p_{i+1}) \right]

Stress regularity

Let t(N)t(N) denote the stress pattern.

Tstress=exp[κsVar(t)]T_{\rm stress} = \exp[-\kappa_s\operatorname{Var}(t)]

where the variance is defined relative to empirically observed stress patterns for words of the same syllable count.

Articulatory effort

Tarticulation=eκaA(N)T_{\rm articulation} = e^{-\kappa_a A(N)}

where A(N)A(N) is total articulatory movement cost.

This captures phonetic smoothness rather than merely counting consonants.

Sound-symbolism research adds another layer: particular vowel/consonant families can systematically shift perceived attributes, although the effect depends on context and language. (ScienceDirect)

A category-conditioned term can be added:

Psymbolism(Nc)P_{\rm symbolism}(N|c)

conditioned on category cc.


9. Memorability M(N)M(N)

Memorability should not be treated as identical to pronounceability.

Use a learned model:

M(N)=σ(b0b1Lb2q+b3Chunk(N)+b4DistinctiveSignature(N)+b5Rhyme(N)+b6Alliteration(N))\boxed{ M(N) = \sigma( b_0 -b_1L -b_2q +b_3\operatorname{Chunk}(N) +b_4\operatorname{DistinctiveSignature}(N) +b_5\operatorname{Rhyme}(N) +b_6\operatorname{Alliteration}(N) ) }

A reasonable formal definition for chunkability is:

Chunk(N)=1H(unitization(N))Hmax\operatorname{Chunk}(N) = 1- \frac{H(\text{unitization}(N))} {H_{\max}}

The empirical coefficients should ultimately be learned from actual recall/recognition experiments.

Brand-memory research shows that different linguistic devices affect recall differently. In one large copytesting sample, semantic appositeness, initial plosives, and paronomasia were positively associated with memory for less-familiar brands, while blending was negatively associated; unusual spelling showed positive effects in the same setting. (ResearchGate)

Treating memorability as equivalent to shortness is too crude.


10. Brandability B(N)B(N)

Brandability captures a different signal than general word quality: a name can be a good English word and a poor company name.

Define category posterior:

P(cN)P(c|N)

Then semantic specificity is:

Spec(N)=maxcP(cN)\operatorname{Spec}(N) = \max_cP(c|N)

Semantic flexibility:

Flex(N)=H(CN)logC\boxed{ \operatorname{Flex}(N) = \frac{H(C|N)}{\log |C|} }

A company like a narrow product descriptor gets high category certainty and therefore low flexibility.

A completely meaningless random string has high flexibility but may have almost no semantic anchoring.

Therefore brandability should have an inverted-U structure:

B(N)=β1AnchorFit(N)+β2Flex(N)+β3NameLike(N)+β4Modernity(N)β5SpecPenalty(N)B(N) = \beta_1\operatorname{AnchorFit}(N) +\beta_2\operatorname{Flex}(N) +\beta_3\operatorname{NameLike}(N) +\beta_4\operatorname{Modernity}(N) -\beta_5\operatorname{SpecPenalty}(N)

For example:

SpecPenalty(N)=max(0,Spec(N)slow1slow)\operatorname{SpecPenalty}(N) = \max \left( 0, \frac{\operatorname{Spec}(N)-s_{\rm low}} {1-s_{\rm low}} \right)

Platform companies typically need room for semantic expansion, which is why the inverted-U structure matters.

Research on brand naming supports the idea that semantic meaning can improve positioning and recall, but excessive suggestiveness can make a name less flexible for unrelated positioning. (Taylor & Francis Online)


11. Distinctiveness D(N)D(N)

Distinctiveness should be measured against a large corpus, not a hand-picked reference set.

Let:

f(N)f(N)

be name frequency in a lexical/company corpus.

Define information rarity:

I(N)=logP(N)I(N)=-\log P(N)

and normalized novelty:

LexNovelty(N)=σ(I(N)μIσI)\operatorname{LexNovelty}(N) = \sigma \left( \frac{I(N)-\mu_I}{\sigma_I} \right)

But maximum rarity is not always desirable.

Let Nbr(N)Nbr(N) be the number of orthographic neighbors at edit distance 1:

Nbr(N)={w:dedit(N,w)=1}Nbr(N) = |\{w:d_{\rm edit}(N,w)=1\}|

Then:

Dorth(N)=exp[κn(log(1+Nbr(N))n)2]D_{\rm orth}(N) = \exp \left[ -\kappa_n (\log(1+Nbr(N))-n^*)^2 \right]

This creates an inverted-U:

  • too many neighbors → confusable
  • zero linguistic neighbors → potentially strange or hard to process
  • moderate novelty → distinctive but learnable

This is consistent with psycholinguistic work showing that orthographic neighborhoods and word frequency affect visual word recognition. (PubMed Central (PMC))

Then:

D(N)=γ1LexNovelty+γ2Dorth+γ3PhoneticNovelty+γ4CompanyNoveltyD(N) = \gamma_1\operatorname{LexNovelty} +\gamma_2D_{\rm orth} +\gamma_3\operatorname{PhoneticNovelty} +\gamma_4\operatorname{CompanyNovelty}

12. Visual/orthographic quality V(N)V(N)

A name can be linguistically excellent but visually ugly.

Define:

V(N)=exp[kL(LL)2kGGcomplexity(N)kRR\rmgrapheme(N)]V(N) = \exp \left[ -k_L(L-L^*)^2 -k_GG_{\rm complexity}(N) -k_RR_{\rmgrapheme}(N) \right]

where:

  • GcomplexityG_{\rm complexity} = unusual visual structure
  • RgraphemeR_{\rm grapheme} = surprisal of grapheme patterns
  • LL^* = learned target length

Later, this can be learned directly from human ratings of the bare word rendered typographically.


13. Global compatibility C(N)C(N)

Instead of assuming “English-friendly = global-friendly”, evaluate several languages separately.

For language \ell:

C(N)=PronEase(N)SpellEase(N)(1TabooProb(N))C_\ell(N) = \operatorname{PronEase}_\ell(N) \operatorname{SpellEase}_\ell(N) (1-\operatorname{TabooProb}_\ell(N))

Then:

C(N)=exp[1LLlog(ϵ+C(N))]\boxed{ C(N) = \exp \left[ \frac1{|L|} \sum_{\ell\in L} \log(\epsilon+C_\ell(N)) \right] }

The geometric mean is preferable to an arithmetic mean because one disastrous language-specific result should materially reduce the final score.

Cross-language brand research is particularly relevant here: sound-symbolism effects have been observed among bilingual French, Spanish and Chinese speakers, and other work reports phonological preferences across people from many native-language backgrounds. (ScienceDirect)


14. Anti-overfitting with a reference set

A natural starting point is a set of well-known startup names (Granola, Clay, Notion, Linear, Ram, Figma, Stripe, Loom, Brex, Ramp, Arc, Vercel, Miro), but these should not be used to train a high-capacity model directly on the strings themselves.

There are only 13 observations.

Instead create a structure-only feature representation:

xref(N)=[L,m,q,C/V,LP,stress,orthographic complexity,semantic specificity,...]x_{\rm ref}(N) = [ L, m, q, C/V, LP, \text{stress}, \text{orthographic complexity}, \text{semantic specificity}, ... ]

Then estimate:

μref=1nixi\mu_{\rm ref} = \frac1n\sum_i x_i

and a shrinkage covariance matrix:

Σ^ref=ShrinkCov(x1,,xn)\hat\Sigma_{\rm ref} = \operatorname{ShrinkCov}(x_1,\ldots,x_n)

Then:

dref2(N)=(x(N)μref)Σ^ref1(x(N)μref)d_{\rm ref}^2(N) = (x(N)-\mu_{\rm ref})^\top \hat\Sigma_{\rm ref}^{-1} (x(N)-\mu_{\rm ref})

and:

Fpremium(N)=e12dref2(N)\boxed{ F_{\rm premium}(N) = e^{-\frac12d_{\rm ref}^2(N)} }

Fpremium(N)F_{\rm premium}(N) measures whether a candidate occupies the same broad structural region as the reference set, not whether it sounds like Linear. Structural similarity without identity mimicry is the core anti-overfitting mechanism.


15. What a 13-name reference corpus implies

Across the reference set above, the rough descriptive statistics are:

PropertyResult
Mean characters~4.77
Median characters4
Mean syllables~1.62
Median syllables1
1 syllable7 / 13
2 syllables4 / 13
3 syllables2 / 13
Mean letter-level C/V ratio~1.68

These numbers are useful as a prior, not a law.

The corpus does not imply that one syllable is optimal. The observed syllable distribution is approximately:

P(m=1)0.54P(m=1)\approx0.54 P(m=2)0.31P(m=2)\approx0.31 P(m=3)0.15P(m=3)\approx0.15

within this tiny hand-selected reference set.

Treating the distribution as a prior prevents the model from collapsing into a caricature like:

CVC + 4 letters = premium.


16. Penalizing names that imitate existing brands

Define similarity to a reference/company name rr:

Sim(N,r)=ρpsimphon(N,r)+ρosimorth(N,r)+ρecos(eN,er)\operatorname{Sim}(N,r) = \rho_p\operatorname{sim}_{phon}(N,r) + \rho_o\operatorname{sim}_{orth}(N,r) + \rho_e\cos(e_N,e_r)

with:

simphon=edphon(N,r)/τp\operatorname{sim}_{phon} = e^{-d_{phon}(N,r)/\tau_p}

and

simorth=ededit(N,r)/τo\operatorname{sim}_{orth} = e^{-d_{\rm edit}(N,r)/\tau_o}

Then:

SimRef(N)=maxrRSim(N,r)\boxed{ \operatorname{SimRef}(N) = \max_{r\in R}\operatorname{Sim}(N,r) }

and:

Xsimilarity(N)=SimRef(N)γX_{\rm similarity}(N) = \operatorname{SimRef}(N)^\gamma

The resulting objective becomes:

Sfinal(N)=Sintrinsic(N)+ηFpremium(N)λsimSimRef(N)\boxed{ S_{\rm final}(N) = S_{\rm intrinsic}(N) + \eta F_{\rm premium}(N) - \lambda_{\rm sim}\operatorname{SimRef}(N) }

The objective encodes a specific tension:

structurally similarbutidentity-wise dissimilar\text{structurally similar} \quad\text{but}\quad \text{identity-wise dissimilar}

17. Full penalty function

X(N)=λ1Xsimilarity+λ2Xcollision+λ3Xmispron+λ4Xmisspell+λ5Xdescriptive+λ6Xcultural\boxed{ X(N) = \lambda_1X_{\rm similarity} +\lambda_2X_{\rm collision} +\lambda_3X_{\rm mispron} +\lambda_4X_{\rm misspell} +\lambda_5X_{\rm descriptive} +\lambda_6X_{\rm cultural} }

Distinctiveness and similarity penalty are not inverses:

DistinctivenessSimilarity penalty1\boxed{ \text{Distinctiveness} \neq \text{Similarity penalty}^{-1} }

A name can score high on distinctiveness and still be dangerously similar to one particular brand.


18. The full score

The final baseline formula is therefore:

S(N)=wPP(N)+wMM(N)+wBB(N)+wDD(N)+wEE(N)+wVV(N)+wCC(N)wXX(N)\boxed{ S(N)= w_P P(N) +w_M M(N) +w_B B(N) +w_D D(N) +w_E E(N) +w_V V(N) +w_C C(N) -w_X X(N) }

with:

wi0w_i\ge0

and preferably:

iwi=1\sum_iw_i=1

The weight vector below is a seed prior, not an empirically fitted result:

w=(0.18,0.15,0.17,0.15,0.15,0.08,0.12)w=(0.18,0.15,0.17,0.15,0.15,0.08,0.12)

for (P,M,B,D,E,V,C)(P,M,B,D,E,V,C). These weights must ultimately be learned from preference data.


19. Worked toy example

Suppose the generator produces:

NamePMBDEVCX
Mavo.91.82.90.70.94.86.88.08
Rine.88.79.86.78.92.90.91.05
Kolen.77.74.82.89.79.77.85.07
Zerak.69.73.88.95.68.74.80.04
Lomera.84.55.75.73.83.82.87.06

Using:

S=100[.18P+.15M+.17B+.15D+.15E+.08V+.12C.20X]S= 100[ .18P+.15M+.17B+.15D+.15E+.08V+.12C-.20X ]

gives approximately:

Rine=84.93Mavo=84.42Kolen=79.06Zerak=77.50Lomera=75.32\begin{aligned} Rine &=84.93\\ Mavo &=84.42\\ Kolen&=79.06\\ Zerak&=77.50\\ Lomera&=75.32 \end{aligned}

Zerak ranks highest on distinctiveness but does not win overall. Distinctiveness alone is not the objective.

The scoring function optimizes for usable distinctiveness, not maximum novelty.


20. Learning weights from pairwise judgments

Weight learning uses a Bradley–Terry/logistic preference model.

Given candidates A,BA,B:

P(AB)=σ(S(A)S(B))\boxed{ P(A\succ B) = \sigma(S(A)-S(B)) }

For training observations ii, let:

yi{1,+1}y_i\in\{-1,+1\}

and define:

Δzi=z(Ai)z(Bi)\Delta z_i=z(A_i)-z(B_i)

Then optimize:

w=argminw[ilogσ(yiwΔzi)+λw22]\boxed{ w^* = \arg\min_w \left[ -\sum_i \log \sigma ( y_iw^\top\Delta z_i ) + \lambda||w||_2^2 \right] }

subject to:

wj0w_j\ge0

This provides a statistically grounded approach to weight estimation.

Training data should include comparisons from several populations:

{founders, operators, designers, consumers, investors}\{\text{founders, operators, designers, consumers, investors}\}

and ideally model respondent-specific effects.


21. Validation

Validation should target unseen names, not reproduction of the reference list.

Use at least five validation tasks:

TaskMetric
Premium preferenceAUC / pairwise accuracy / Kendall τ\tau
Delayed memorySpearman ρ\rho, recall lift
Pronunciationerror rate
Spelling after hearingexact-match accuracy
Cross-cultural usabilitymacro-average + worst-language score

The most important experiment is:

train on earlier names, test on newer names\boxed{\text{train on earlier names, test on newer names}}

A temporal split distinguishes durable linguistic principles from naming fashion.

Experimental work consistently links pronunciation ease to processing and evaluation, including research on invented/nonword brand names. (CORDIS)


22. Separating domain availability from linguistic score

Domain availability should not appear inside the linguistic score.

Define:

Sintrinsic(N)S_{\rm intrinsic}(N)

independently.

Then define:

Ddomain(N,d)[0,1]D_{\rm domain}(N,d) \in[0,1]

for domain dd.

The pipeline becomes:

rank intrinsic qualitydomain filteringlegal/trademark screening\boxed{ \text{rank intrinsic quality} \rightarrow \text{domain filtering} \rightarrow \text{legal/trademark screening} }

or formally:

A={(N,d):Sintrinsic(N)τS,Ddomain(N,d)τD}\mathcal A = \{ (N,d): S_{\rm intrinsic}(N)\ge\tau_S, D_{\rm domain}(N,d)\ge\tau_D \}

This prevents a mediocre name from becoming “premium” merely because a .com happens to be available.


23. Computational architecture for millions of names

The production system should be a funnel:

GenerateHard filterCheap scoreSimilarity filterSemantic rerankHuman evaluation\boxed{ \text{Generate} \rightarrow \text{Hard filter} \rightarrow \text{Cheap score} \rightarrow \text{Similarity filter} \rightarrow \text{Semantic rerank} \rightarrow \text{Human evaluation} }

A practical architecture is:

Stage A: language assets

Build:

  • pronunciation lexicon
  • syllable inventory
  • phonotactic model
  • G2P/P2G model
  • multilingual pronunciation models
  • word-frequency corpus
  • company-name corpus
  • forbidden/trademark corpus

Stage B: millions of candidates

Generate:

10610810^6-10^8

phonologically plausible candidates using beam search or weighted sampling.

Stage C: hard filters

Remove:

  • bad phonotactics
  • 3 syllables

  • excessive length
  • pronunciation ambiguity
  • spelling ambiguity
  • malformed clusters
  • obvious lexical collisions

Stage D: cheap vector scoring

Calculate:

x(N)x(N)

using only CPU-friendly operations.

Use:

  • n-gram hashes
  • MinHash
  • locality-sensitive hashing
  • phoneme signatures
  • approximate nearest neighbors

Only exact-check the small surviving set.

Stage F: expensive NLP

Run embeddings/category-flexibility/modernity models over perhaps:

10310410^3-10^4

names rather than millions.

Stage G: final judging

Human or high-capacity LLM pairwise judging for:

10210310^2-10^3

names.

Stage H: downstream checks

Finally:

  • domains
  • social handles
  • trademarks
  • language/cultural review

24. Computational complexity

If:

  • GG = generated candidates
  • FF = hard-filter survivors
  • dd = cheap feature dimension
  • BB = existing company database
  • KK = semantic finalists
  • RR = expensive reranking count

then approximately:

T=O(Gcgen+Fd+KlogB+Rcsemantic)\boxed{ T = O( G\,c_{\rm gen} + F\,d + K\log B + R\,c_{\rm semantic} ) }

The arithmetic itself is cheap.

The expensive part is:

csemanticc_{\rm semantic}

and external APIs such as domain/trademark checking.

The architecture should run cheap-to-expensive, not ask an LLM to score 10 million names.


25. Better ML formulation

The additive formula can be extended with interaction terms.

Let:

z(N)z(N)

be the standardized feature vector.

Then:

U(N)=wz(N)+z(N)Az(N)λX(N)\boxed{ U(N) = w^\top z(N) + z(N)^\top A z(N) - \lambda X(N) }

where the quadratic term captures interactions.

For example:

zshort×zdistinctivez_{\rm short}\times z_{\rm distinctive}

may have positive interaction even if neither factor alone is sufficient.

The full probabilistic model becomes:

p(w,AY)p(Yw,A)p(w,A)p(w,A|Y) \propto p(Y|w,A)p(w,A)

and:

N=argmaxNGHE[U(N)Y]\boxed{ N^* = \arg\max_{N\in\mathcal G_H} E[U(N)|Y] }

Uncertainty can be penalized directly:

Srisk(N)=E[U(N)Y]αVar(U(N)Y)\boxed{ S_{\rm risk}(N) = E[U(N)|Y] - \alpha \sqrt{\operatorname{Var}(U(N)|Y)} }

This is useful because a highly novel name may fall outside the model's training distribution.


26. The strongest final formulation

The full scoring function combines utility, uncertainty, and similarity penalties:

MMRS(N)=E[U(N)Y]αSD[U(N)Y]λsimSimCompany(N)λrefSimIdentity(N)\boxed{ \operatorname{MMRS}(N) = E[U(N)|Y] -\alpha SD[U(N)|Y] -\lambda_{\rm sim}\operatorname{SimCompany}(N) -\lambda_{\rm ref}\operatorname{SimIdentity}(N) }

subject to:

NGHN\in\mathcal G_H

and return:

TopKNGHMMRS(N)\boxed{ \operatorname{TopK}_{N\in\mathcal G_H}\operatorname{MMRS}(N) }

The final objective combines four properties:

valid+high intrinsic quality+novel+low uncertainty\boxed{ \text{valid} + \text{high intrinsic quality} + \text{novel} + \text{low uncertainty} }

rather than merely:

“sounds like Linear.”\text{“sounds like Linear.”}

27. The deeper principle

The reference names encode a pattern beyond individual phoneme choices.

The underlying optimization target is approximately:

Low cognitive friction+High structural distinctiveness+Semantic expandability+Strong linguistic prior\boxed{ \text{Low cognitive friction} + \text{High structural distinctiveness} + \text{Semantic expandability} + \text{Strong linguistic prior} }

The combination matters.

Very familiar:

easy but generic\rightarrow \text{easy but generic}

Very novel:

distinctive but difficult\rightarrow \text{distinctive but difficult}

Very descriptive:

clear but strategically narrow\rightarrow \text{clear but strategically narrow}

Very artificial:

ownable but linguistically weak\rightarrow \text{ownable but linguistically weak}

The optimal region is somewhere between those extremes.

Names like Linear, Notion, and Clay tend to occupy a region where processing fluency and distinctiveness coexist, which is why they read as unusually clean. Research on company-name fluency, invented names, sound symbolism, and brand-name memory supports parts of this explanation. (SSRN)

The natural next step is a Python candidate engine: CMU-style pronunciation lexicon, weighted phonotactic grammar, phoneme/orthography feature extraction, reference-set calibration, and a vectorized scorer capable of generating and ranking millions of candidates.