diff --git a/qdrant-landing/.vale.ini b/qdrant-landing/.vale.ini
new file mode 100644
index 000000000..d27a00354
--- /dev/null
+++ b/qdrant-landing/.vale.ini
@@ -0,0 +1,6 @@
+StylesPath = styles
+
+[*.md]
+BasedOnStyles = Readability, Qdrant, write-good, Google
+
+IgnoredScopes = code, strong, tt
diff --git a/qdrant-landing/GrammarLinter.md b/qdrant-landing/GrammarLinter.md
new file mode 100644
index 000000000..ac003a9fb
--- /dev/null
+++ b/qdrant-landing/GrammarLinter.md
@@ -0,0 +1,82 @@
+# English grammar linter (Vale)
+
+This repository includes `beta` rules based on the [Vale grammar linter](https://vale.sh). While the [installation instructions](https://vale.sh/docs/vale-cli/installation/#package-managers) cover Mac and Windows, I've installed Vale on Ubuntu Linux. Vale includes
+installation binaries in one of their [Git repositories](https://github.com/errata-ai/vale/releases).
+
+You can integrate [Vale as a plugin](https://vale.sh/docs/integrations/guide/) with
+several different IDEs. This README illustrates integration between Vale and VSCode.
+
+Vale pulls rules from YAML files in the `styles/` subdirectory. They include grammar rules in the following subdirectories:
+
+- Modified rules from GitLab in the `styles/Qdrant/` subdirectory
+- [Google Developer Style Guide](https://github.com/errata-ai/Google) rules, customized for Vale, in the `styles/Google` subdirectory
+- Rules associated with the [write-good](https://github.com/btford/write-good) grammar linter
+
+These rules are a "Work in Progress"; we may overrule/modify them as we use them to review Qdrant content. For example, if you find a common word / acronym that we use, you're
+welcome to add it (with a PR) to our `styles/cobalt/spelling-exceptions.txt` file.
+
+For more information, see the [Vale documentation](https://vale.sh/).
+
+## Vale configuration
+
+The Vale configuration file is .vale.ini. In this file, we see:
+
+- The `StylesPath` points to rules in the `styles/` subdirectory.
+- The `BasedOnStyles` parameter specifies style subdirectories.
+- The `IgnoredScopes` tells Vale to ignore content such as code samples, as described in [Vale Documentation](https://vale.sh/docs/topics/config/#ignoredscopes).
+
+Tip: If you want Vale to ignore code, surround it with code sample marks such as:
+
+- `Vale_ignores_this`
+```
+Vale also ignores this
+```
+
+## Use Vale in your IDE
+
+You can set up Vale with several different IDEs. For more information, see the
+[Integrations](https://vale.sh/docs/integrations/guide/) section of the Vale documentation.
+
+For example, you can set up a Vale plugin with the VSCode IDE, per
+https://github.com/chrischinchilla/vale-vscode.
+
+If you have problems with Vale in VSCode, you may need to:
+
+- Restart VSCode
+- Disable / re-enable the Vale plugin
+- Save changes to the Markdown file that you're analyzing
+
+If you're successful, you'll see linting messages similar to what's shown in the following screenshot:
+
+
+
+
+
+## Use Vale at the command line
+
+To review your content against the given style guide rules, first navigate to
+the `qdrant-landing/` directory for this repository. Then run the following
+command:
+
+```
+vale /path/to/your/filename.md
+```
+
+As long as you're in the `qdrant-landing/` directory, you can use Vale at the command line to lint Markdown files in any local directory.
+
+## Potential future options
+
+- Include Vale in CI/CD jobs
+
+ - Set up a GitHub action
+
+- Apply vale to articles and blog posts
+
+ - Guess: we need different rules. Default rules for documentation suggest:
+
+ - Use "second person"
+ - Avoid future tense
+ - Don't use exclamation points
+ - Avoid words like "easy" and "simple"
+
+ These rules generally do not apply to articles or blogs.
diff --git a/qdrant-landing/static/VSCodeDemo.png b/qdrant-landing/static/VSCodeDemo.png
new file mode 100644
index 000000000..e6da28ff9
Binary files /dev/null and b/qdrant-landing/static/VSCodeDemo.png differ
diff --git a/qdrant-landing/styles/Google/AMPM.yml b/qdrant-landing/styles/Google/AMPM.yml
new file mode 100644
index 000000000..fbdc6e4f8
--- /dev/null
+++ b/qdrant-landing/styles/Google/AMPM.yml
@@ -0,0 +1,9 @@
+extends: existence
+message: "Use 'AM' or 'PM' (preceded by a space)."
+link: 'https://developers.google.com/style/word-list'
+level: error
+nonword: true
+tokens:
+ - '\d{1,2}[AP]M'
+ - '\d{1,2} ?[ap]m'
+ - '\d{1,2} ?[aApP]\.[mM]\.'
diff --git a/qdrant-landing/styles/Google/Acronyms.yml b/qdrant-landing/styles/Google/Acronyms.yml
new file mode 100644
index 000000000..f41af0189
--- /dev/null
+++ b/qdrant-landing/styles/Google/Acronyms.yml
@@ -0,0 +1,64 @@
+extends: conditional
+message: "Spell out '%s', if it's unfamiliar to the audience."
+link: 'https://developers.google.com/style/abbreviations'
+level: suggestion
+ignorecase: false
+# Ensures that the existence of 'first' implies the existence of 'second'.
+first: '\b([A-Z]{3,5})\b'
+second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
+# ... with the exception of these:
+exceptions:
+ - API
+ - ASP
+ - CLI
+ - CPU
+ - CSS
+ - CSV
+ - DEBUG
+ - DOM
+ - DPI
+ - FAQ
+ - GCC
+ - GDB
+ - GET
+ - GPU
+ - GTK
+ - GUI
+ - HTML
+ - HTTP
+ - HTTPS
+ - IDE
+ - JAR
+ - JSON
+ - JSX
+ - LESS
+ - LLDB
+ - NET
+ - NOTE
+ - NVDA
+ - OSS
+ - PATH
+ - PDF
+ - PHP
+ - POST
+ - RAM
+ - REPL
+ - RSA
+ - SCM
+ - SCSS
+ - SDK
+ - SQL
+ - SSH
+ - SSL
+ - SVG
+ - TBD
+ - TCP
+ - TODO
+ - URI
+ - URL
+ - USB
+ - UTF
+ - XML
+ - XSS
+ - YAML
+ - ZIP
diff --git a/qdrant-landing/styles/Google/Colons.yml b/qdrant-landing/styles/Google/Colons.yml
new file mode 100644
index 000000000..99363fbd4
--- /dev/null
+++ b/qdrant-landing/styles/Google/Colons.yml
@@ -0,0 +1,8 @@
+extends: existence
+message: "'%s' should be in lowercase."
+link: 'https://developers.google.com/style/colons'
+nonword: true
+level: warning
+scope: sentence
+tokens:
+ - ':\s[A-Z]'
diff --git a/qdrant-landing/styles/Google/Contractions.yml b/qdrant-landing/styles/Google/Contractions.yml
new file mode 100644
index 000000000..4f6fd5d48
--- /dev/null
+++ b/qdrant-landing/styles/Google/Contractions.yml
@@ -0,0 +1,30 @@
+extends: substitution
+message: "Use '%s' instead of '%s'."
+link: 'https://developers.google.com/style/contractions'
+level: suggestion
+ignorecase: true
+action:
+ name: replace
+swap:
+ are not: aren't
+ cannot: can't
+ could not: couldn't
+ did not: didn't
+ do not: don't
+ does not: doesn't
+ has not: hasn't
+ have not: haven't
+ how is: how's
+ is not: isn't
+ it is: it's
+ should not: shouldn't
+ that is: that's
+ they are: they're
+ was not: wasn't
+ we are: we're
+ we have: we've
+ were not: weren't
+ what is: what's
+ when is: when's
+ where is: where's
+ will not: won't
diff --git a/qdrant-landing/styles/Google/DateFormat.yml b/qdrant-landing/styles/Google/DateFormat.yml
new file mode 100644
index 000000000..e9d227fa1
--- /dev/null
+++ b/qdrant-landing/styles/Google/DateFormat.yml
@@ -0,0 +1,9 @@
+extends: existence
+message: "Use 'July 31, 2016' format, not '%s'."
+link: 'https://developers.google.com/style/dates-times'
+ignorecase: true
+level: error
+nonword: true
+tokens:
+ - '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}'
+ - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}'
diff --git a/qdrant-landing/styles/Google/Ellipses.yml b/qdrant-landing/styles/Google/Ellipses.yml
new file mode 100644
index 000000000..1e070517b
--- /dev/null
+++ b/qdrant-landing/styles/Google/Ellipses.yml
@@ -0,0 +1,9 @@
+extends: existence
+message: "In general, don't use an ellipsis."
+link: 'https://developers.google.com/style/ellipses'
+nonword: true
+level: warning
+action:
+ name: remove
+tokens:
+ - '\.\.\.'
diff --git a/qdrant-landing/styles/Google/EmDash.yml b/qdrant-landing/styles/Google/EmDash.yml
new file mode 100644
index 000000000..1befe72aa
--- /dev/null
+++ b/qdrant-landing/styles/Google/EmDash.yml
@@ -0,0 +1,12 @@
+extends: existence
+message: "Don't put a space before or after a dash."
+link: 'https://developers.google.com/style/dashes'
+nonword: true
+level: error
+action:
+ name: edit
+ params:
+ - remove
+ - ' '
+tokens:
+ - '\s[—–]\s'
diff --git a/qdrant-landing/styles/Google/EnDash.yml b/qdrant-landing/styles/Google/EnDash.yml
new file mode 100644
index 000000000..b314dc4e9
--- /dev/null
+++ b/qdrant-landing/styles/Google/EnDash.yml
@@ -0,0 +1,13 @@
+extends: existence
+message: "Use an em dash ('—') instead of '–'."
+link: 'https://developers.google.com/style/dashes'
+nonword: true
+level: error
+action:
+ name: edit
+ params:
+ - replace
+ - '-'
+ - '—'
+tokens:
+ - '–'
diff --git a/qdrant-landing/styles/Google/Exclamation.yml b/qdrant-landing/styles/Google/Exclamation.yml
new file mode 100644
index 000000000..f3e147f3c
--- /dev/null
+++ b/qdrant-landing/styles/Google/Exclamation.yml
@@ -0,0 +1,9 @@
+extends: existence
+message: "Minimize the use of exclamation points in text."
+link: 'https://developers.google.com/style/exclamation-points'
+nonword: true
+level: suggestion
+action:
+ name: remove
+tokens:
+ - '\w+!(?:\s|$)'
diff --git a/qdrant-landing/styles/Google/FirstPerson.yml b/qdrant-landing/styles/Google/FirstPerson.yml
new file mode 100644
index 000000000..0b7b8828c
--- /dev/null
+++ b/qdrant-landing/styles/Google/FirstPerson.yml
@@ -0,0 +1,13 @@
+extends: existence
+message: "Avoid first-person pronouns such as '%s'."
+link: 'https://developers.google.com/style/pronouns#personal-pronouns'
+ignorecase: true
+level: warning
+nonword: true
+tokens:
+ - (?:^|\s)I\s
+ - (?:^|\s)I,\s
+ - \bI'm\b
+ - \bme\b
+ - \bmy\b
+ - \bmine\b
diff --git a/qdrant-landing/styles/Google/Gender.yml b/qdrant-landing/styles/Google/Gender.yml
new file mode 100644
index 000000000..c8486181d
--- /dev/null
+++ b/qdrant-landing/styles/Google/Gender.yml
@@ -0,0 +1,9 @@
+extends: existence
+message: "Don't use '%s' as a gender-neutral pronoun."
+link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns'
+level: error
+ignorecase: true
+tokens:
+ - he/she
+ - s/he
+ - \(s\)he
diff --git a/qdrant-landing/styles/Google/GenderBias.yml b/qdrant-landing/styles/Google/GenderBias.yml
new file mode 100644
index 000000000..9e7019086
--- /dev/null
+++ b/qdrant-landing/styles/Google/GenderBias.yml
@@ -0,0 +1,47 @@
+extends: substitution
+message: "Consider using '%s' instead of '%s'."
+link: 'https://developers.google.com/style/inclusive-documentation'
+ignorecase: true
+level: error
+action:
+ name: replace
+swap:
+ (?:alumna|alumnus): graduate
+ (?:alumnae|alumni): graduates
+ air(?:m[ae]n|wom[ae]n): pilot(s)
+ anchor(?:m[ae]n|wom[ae]n): anchor(s)
+ authoress: author
+ camera(?:m[ae]n|wom[ae]n): camera operator(s)
+ chair(?:m[ae]n|wom[ae]n): chair(s)
+ congress(?:m[ae]n|wom[ae]n): member(s) of congress
+ door(?:m[ae]|wom[ae]n): concierge(s)
+ draft(?:m[ae]n|wom[ae]n): drafter(s)
+ fire(?:m[ae]n|wom[ae]n): firefighter(s)
+ fisher(?:m[ae]n|wom[ae]n): fisher(s)
+ fresh(?:m[ae]n|wom[ae]n): first-year student(s)
+ garbage(?:m[ae]n|wom[ae]n): waste collector(s)
+ lady lawyer: lawyer
+ ladylike: courteous
+ landlord: building manager
+ mail(?:m[ae]n|wom[ae]n): mail carriers
+ man and wife: husband and wife
+ man enough: strong enough
+ mankind: human kind
+ manmade: manufactured
+ manpower: personnel
+ men and girls: men and women
+ middle(?:m[ae]n|wom[ae]n): intermediary
+ news(?:m[ae]n|wom[ae]n): journalist(s)
+ ombuds(?:man|woman): ombuds
+ oneupmanship: upstaging
+ poetess: poet
+ police(?:m[ae]n|wom[ae]n): police officer(s)
+ repair(?:m[ae]n|wom[ae]n): technician(s)
+ sales(?:m[ae]n|wom[ae]n): salesperson or sales people
+ service(?:m[ae]n|wom[ae]n): soldier(s)
+ steward(?:ess)?: flight attendant
+ tribes(?:m[ae]n|wom[ae]n): tribe member(s)
+ waitress: waiter
+ woman doctor: doctor
+ woman scientist[s]?: scientist(s)
+ work(?:m[ae]n|wom[ae]n): worker(s)
diff --git a/qdrant-landing/styles/Google/HeadingPunctuation.yml b/qdrant-landing/styles/Google/HeadingPunctuation.yml
new file mode 100644
index 000000000..b538be5b4
--- /dev/null
+++ b/qdrant-landing/styles/Google/HeadingPunctuation.yml
@@ -0,0 +1,13 @@
+extends: existence
+message: "Don't put a period at the end of a heading."
+link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
+nonword: true
+level: warning
+scope: heading
+action:
+ name: edit
+ params:
+ - remove
+ - '.'
+tokens:
+ - '[a-z0-9][.]\s*$'
diff --git a/qdrant-landing/styles/Google/Headings.yml b/qdrant-landing/styles/Google/Headings.yml
new file mode 100644
index 000000000..6f6d52523
--- /dev/null
+++ b/qdrant-landing/styles/Google/Headings.yml
@@ -0,0 +1,44 @@
+extends: capitalization
+message: "'%s' should use sentence-style capitalization."
+link: "https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings"
+level: warning
+scope: heading
+match: $sentence
+indicators:
+ - ":"
+exceptions:
+ - API
+ - Azure
+ - Autogen
+ - Cheshire Cat
+ - CLI
+ - Cosmos
+ - Docker
+ - Emmet
+ - gRPC
+ - HNSW
+ - Hugging Face
+ - I
+ - IDs
+ - JAR
+ - JDK
+ - Kubernetes
+ - LangChain
+ - Linux
+ - macOS
+ - Marketplace
+ - MindsDB
+ - MongoDB
+ - OpenAI
+ - Qdrant
+ - Qdrant Cloud
+ - REPL
+ - SDK
+ - Spark
+ - Studio
+ - txtai
+ - TypeScript
+ - URLs
+ - Visual
+ - VS
+ - Windows
diff --git a/qdrant-landing/styles/Google/Latin.yml b/qdrant-landing/styles/Google/Latin.yml
new file mode 100644
index 000000000..ca03b9154
--- /dev/null
+++ b/qdrant-landing/styles/Google/Latin.yml
@@ -0,0 +1,11 @@
+extends: substitution
+message: "Use '%s' instead of '%s'."
+link: 'https://developers.google.com/style/abbreviations'
+ignorecase: true
+level: error
+nonword: true
+action:
+ name: replace
+swap:
+ '\b(?:eg|e\.g\.)(?=[\s,;])': for example
+ '\b(?:ie|i\.e\.)(?=[\s,;])': that is
diff --git a/qdrant-landing/styles/Google/LyHyphens.yml b/qdrant-landing/styles/Google/LyHyphens.yml
new file mode 100644
index 000000000..ac8f557a4
--- /dev/null
+++ b/qdrant-landing/styles/Google/LyHyphens.yml
@@ -0,0 +1,14 @@
+extends: existence
+message: "'%s' doesn't need a hyphen."
+link: 'https://developers.google.com/style/hyphens'
+level: error
+ignorecase: false
+nonword: true
+action:
+ name: edit
+ params:
+ - replace
+ - '-'
+ - ' '
+tokens:
+ - '\s[^\s-]+ly-'
diff --git a/qdrant-landing/styles/Google/OptionalPlurals.yml b/qdrant-landing/styles/Google/OptionalPlurals.yml
new file mode 100644
index 000000000..f858ea6fe
--- /dev/null
+++ b/qdrant-landing/styles/Google/OptionalPlurals.yml
@@ -0,0 +1,12 @@
+extends: existence
+message: "Don't use plurals in parentheses such as in '%s'."
+link: 'https://developers.google.com/style/plurals-parentheses'
+level: error
+nonword: true
+action:
+ name: edit
+ params:
+ - remove
+ - '(s)'
+tokens:
+ - '\b\w+\(s\)'
diff --git a/qdrant-landing/styles/Google/Ordinal.yml b/qdrant-landing/styles/Google/Ordinal.yml
new file mode 100644
index 000000000..d1ac7d27e
--- /dev/null
+++ b/qdrant-landing/styles/Google/Ordinal.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Spell out all ordinal numbers ('%s') in text."
+link: 'https://developers.google.com/style/numbers'
+level: error
+nonword: true
+tokens:
+ - \d+(?:st|nd|rd|th)
diff --git a/qdrant-landing/styles/Google/OxfordComma.yml b/qdrant-landing/styles/Google/OxfordComma.yml
new file mode 100644
index 000000000..b9ba21ebb
--- /dev/null
+++ b/qdrant-landing/styles/Google/OxfordComma.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Use the Oxford comma in '%s'."
+link: 'https://developers.google.com/style/commas'
+scope: sentence
+level: warning
+tokens:
+ - '(?:[^,]+,){1,}\s\w+\s(?:and|or)'
diff --git a/qdrant-landing/styles/Google/Parens.yml b/qdrant-landing/styles/Google/Parens.yml
new file mode 100644
index 000000000..3b8711d0c
--- /dev/null
+++ b/qdrant-landing/styles/Google/Parens.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Use parentheses judiciously."
+link: 'https://developers.google.com/style/parentheses'
+nonword: true
+level: suggestion
+tokens:
+ - '\(.+\)'
diff --git a/qdrant-landing/styles/Google/Passive.yml b/qdrant-landing/styles/Google/Passive.yml
new file mode 100644
index 000000000..b91ecfc3b
--- /dev/null
+++ b/qdrant-landing/styles/Google/Passive.yml
@@ -0,0 +1,185 @@
+extends: existence
+link: 'https://developers.google.com/style/voice'
+message: "In general, use active voice instead of passive voice ('%s')."
+ignorecase: true
+level: suggestion
+raw:
+ - \b(am|are|were|being|is|been|was|be)\b\s*
+tokens:
+ - '[\w]+ed'
+ - awoken
+ - beat
+ - become
+ - been
+ - begun
+ - bent
+ - beset
+ - bet
+ - bid
+ - bidden
+ - bitten
+ - bled
+ - blown
+ - born
+ - bought
+ - bound
+ - bred
+ - broadcast
+ - broken
+ - brought
+ - built
+ - burnt
+ - burst
+ - cast
+ - caught
+ - chosen
+ - clung
+ - come
+ - cost
+ - crept
+ - cut
+ - dealt
+ - dived
+ - done
+ - drawn
+ - dreamt
+ - driven
+ - drunk
+ - dug
+ - eaten
+ - fallen
+ - fed
+ - felt
+ - fit
+ - fled
+ - flown
+ - flung
+ - forbidden
+ - foregone
+ - forgiven
+ - forgotten
+ - forsaken
+ - fought
+ - found
+ - frozen
+ - given
+ - gone
+ - gotten
+ - ground
+ - grown
+ - heard
+ - held
+ - hidden
+ - hit
+ - hung
+ - hurt
+ - is
+ - kept
+ - knelt
+ - knit
+ - known
+ - laid
+ - lain
+ - leapt
+ - learnt
+ - led
+ - left
+ - lent
+ - let
+ - lighted
+ - lost
+ - made
+ - meant
+ - met
+ - misspelt
+ - mistaken
+ - mown
+ - overcome
+ - overdone
+ - overtaken
+ - overthrown
+ - paid
+ - pled
+ - proven
+ - put
+ - quit
+ - read
+ - rid
+ - ridden
+ - risen
+ - run
+ - rung
+ - said
+ - sat
+ - sawn
+ - seen
+ - sent
+ - set
+ - sewn
+ - shaken
+ - shaven
+ - shed
+ - shod
+ - shone
+ - shorn
+ - shot
+ - shown
+ - shrunk
+ - shut
+ - slain
+ - slept
+ - slid
+ - slit
+ - slung
+ - smitten
+ - sold
+ - sought
+ - sown
+ - sped
+ - spent
+ - spilt
+ - spit
+ - split
+ - spoken
+ - spread
+ - sprung
+ - spun
+ - stolen
+ - stood
+ - stridden
+ - striven
+ - struck
+ - strung
+ - stuck
+ - stung
+ - stunk
+ - sung
+ - sunk
+ - swept
+ - swollen
+ - sworn
+ - swum
+ - swung
+ - taken
+ - taught
+ - thought
+ - thrived
+ - thrown
+ - thrust
+ - told
+ - torn
+ - trodden
+ - understood
+ - upheld
+ - upset
+ - wed
+ - wept
+ - withheld
+ - withstood
+ - woken
+ - won
+ - worn
+ - wound
+ - woven
+ - written
+ - wrung
diff --git a/qdrant-landing/styles/Google/Periods.yml b/qdrant-landing/styles/Google/Periods.yml
new file mode 100644
index 000000000..d24a6a6c0
--- /dev/null
+++ b/qdrant-landing/styles/Google/Periods.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Don't use periods with acronyms or initialisms such as '%s'."
+link: 'https://developers.google.com/style/abbreviations'
+level: error
+nonword: true
+tokens:
+ - '\b(?:[A-Z]\.){3,}'
diff --git a/qdrant-landing/styles/Google/Quotes.yml b/qdrant-landing/styles/Google/Quotes.yml
new file mode 100644
index 000000000..3cb6f1abd
--- /dev/null
+++ b/qdrant-landing/styles/Google/Quotes.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Commas and periods go inside quotation marks."
+link: 'https://developers.google.com/style/quotation-marks'
+level: error
+nonword: true
+tokens:
+ - '"[^"]+"[.,?]'
diff --git a/qdrant-landing/styles/Google/README.md b/qdrant-landing/styles/Google/README.md
new file mode 100644
index 000000000..5006361bd
--- /dev/null
+++ b/qdrant-landing/styles/Google/README.md
@@ -0,0 +1,9 @@
+Based on https://github.com/errata-ai/Google, last updated October 16, 2023.
+
+Exceptions, based on "standard" language used by Qdrant:
+
+- Deleted ["We.yml"](https://github.com/errata-ai/Google/blob/master/Google/We.yml)
+- Set ["Exclamation.yml"](https://github.com/errata-ai/Google/blob/master/Google/Exclamation.yml) to suggestion level, revised message.
+- Removed reference to GCP as "preferred" cloud from WordList.yml
+- Removed preference for "Command-line tool" over "CLI" from WordList.yml
+- Updated Acronyms.yml
diff --git a/qdrant-landing/styles/Google/Ranges.yml b/qdrant-landing/styles/Google/Ranges.yml
new file mode 100644
index 000000000..3ec045e77
--- /dev/null
+++ b/qdrant-landing/styles/Google/Ranges.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Don't add words such as 'from' or 'between' to describe a range of numbers."
+link: 'https://developers.google.com/style/hyphens'
+nonword: true
+level: warning
+tokens:
+ - '(?:from|between)\s\d+\s?-\s?\d+'
diff --git a/qdrant-landing/styles/Google/Semicolons.yml b/qdrant-landing/styles/Google/Semicolons.yml
new file mode 100644
index 000000000..bb8b85b42
--- /dev/null
+++ b/qdrant-landing/styles/Google/Semicolons.yml
@@ -0,0 +1,8 @@
+extends: existence
+message: "Use semicolons judiciously."
+link: 'https://developers.google.com/style/semicolons'
+nonword: true
+scope: sentence
+level: suggestion
+tokens:
+ - ';'
diff --git a/qdrant-landing/styles/Google/Slang.yml b/qdrant-landing/styles/Google/Slang.yml
new file mode 100644
index 000000000..63f4c248a
--- /dev/null
+++ b/qdrant-landing/styles/Google/Slang.yml
@@ -0,0 +1,11 @@
+extends: existence
+message: "Don't use internet slang abbreviations such as '%s'."
+link: 'https://developers.google.com/style/abbreviations'
+ignorecase: true
+level: error
+tokens:
+ - 'tl;dr'
+ - ymmv
+ - rtfm
+ - imo
+ - fwiw
diff --git a/qdrant-landing/styles/Google/Spacing.yml b/qdrant-landing/styles/Google/Spacing.yml
new file mode 100644
index 000000000..66e45a6b7
--- /dev/null
+++ b/qdrant-landing/styles/Google/Spacing.yml
@@ -0,0 +1,10 @@
+extends: existence
+message: "'%s' should have one space."
+link: 'https://developers.google.com/style/sentence-spacing'
+level: error
+nonword: true
+action:
+ name: remove
+tokens:
+ - '[a-z][.?!] {2,}[A-Z]'
+ - '[a-z][.?!][A-Z]'
diff --git a/qdrant-landing/styles/Google/Spelling.yml b/qdrant-landing/styles/Google/Spelling.yml
new file mode 100644
index 000000000..25192828b
--- /dev/null
+++ b/qdrant-landing/styles/Google/Spelling.yml
@@ -0,0 +1,11 @@
+extends: existence
+message: "In general, use American spelling instead of '%s'."
+link: 'https://developers.google.com/style/spelling'
+ignorecase: true
+level: warning
+tokens:
+ - '(?:\w+)nised?'
+ - 'colour'
+ - 'labour'
+ - 'centre'
+ - '(?:\w+)logue'
diff --git a/qdrant-landing/styles/Google/Units.yml b/qdrant-landing/styles/Google/Units.yml
new file mode 100644
index 000000000..53522ab2d
--- /dev/null
+++ b/qdrant-landing/styles/Google/Units.yml
@@ -0,0 +1,8 @@
+extends: existence
+message: "Put a nonbreaking space between the number and the unit in '%s'."
+link: "https://developers.google.com/style/units-of-measure"
+nonword: true
+level: error
+tokens:
+ - \b\d+(?:B|kB|MB|GB|TB)
+ - \b\d+(?:ns|ms|s|min|h|d)
diff --git a/qdrant-landing/styles/Google/Will.yml b/qdrant-landing/styles/Google/Will.yml
new file mode 100644
index 000000000..a2adf6a7b
--- /dev/null
+++ b/qdrant-landing/styles/Google/Will.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Avoid using '%s'."
+link: 'https://developers.google.com/style/tense'
+ignorecase: true
+level: suggestion
+tokens:
+ - will
diff --git a/qdrant-landing/styles/Google/WordList.yml b/qdrant-landing/styles/Google/WordList.yml
new file mode 100644
index 000000000..66c06125b
--- /dev/null
+++ b/qdrant-landing/styles/Google/WordList.yml
@@ -0,0 +1,77 @@
+extends: substitution
+message: "Use '%s' instead of '%s'."
+link: "https://developers.google.com/style/word-list"
+level: warning
+ignorecase: false
+action:
+ name: replace
+swap:
+ "(?:API Console|dev|developer) key": API key
+ "(?:cell ?phone|smart ?phone)": phone|mobile phone
+ "(?:dev|developer|APIs) console": API console
+ "(?:e-mail|Email|E-mail)": email
+ "(?:file ?path|path ?name)": path
+ "(?:kill|terminate|abort)": stop|exit|cancel|end
+ "(?:OAuth ?2|Oauth)": OAuth 2.0
+ "(?:ok|Okay)": OK|okay
+ "(?:WiFi|wifi)": Wi-Fi
+ '[\.]+apk': APK
+ '3\-D': 3D
+ 'Google (?:I\-O|IO)': Google I/O
+ "tap (?:&|and) hold": touch & hold
+ "un(?:check|select)": clear
+ above: preceding
+ account name: username
+ action bar: app bar
+ admin: administrator
+ Ajax: AJAX
+ a\.k\.a|aka: or|also known as
+ Android device: Android-powered device
+ android: Android
+ API explorer: APIs Explorer
+ approx\.: approximately
+ authN: authentication
+ authZ: authorization
+ autoupdate: automatically update
+ cellular data: mobile data
+ cellular network: mobile network
+ chapter: documents|pages|sections
+ check box: checkbox
+ check: select
+ click on: click|click in
+ Container Engine: Kubernetes Engine
+ content type: media type
+ curated roles: predefined roles
+ data are: data is
+ Developers Console: Google API Console|API Console
+ disabled?: turn off|off
+ ephemeral IP address: ephemeral external IP address
+ fewer data: less data
+ file name: filename
+ firewalls: firewall rules
+ Google account: Google Account
+ Google accounts: Google Accounts
+ Googling: search with Google
+ grayed-out: unavailable
+ HTTPs: HTTPS
+ in order to: to
+ ingest: import|load
+ k8s: Kubernetes
+ long press: touch & hold
+ network IP address: internal IP address
+ omnibox: address bar
+ open-source: open source
+ overview screen: recents screen
+ regex: regular expression
+ SHA1: SHA-1|HAS-SHA1
+ sign into: sign in to
+ sign-?on: single sign-on
+ static IP address: static external IP address
+ stylesheet: style sheet
+ synch: sync
+ tablename: table name
+ tablet: device
+ touch: tap
+ url: URL
+ vs\.: versus
+ World Wide Web: web
diff --git a/qdrant-landing/styles/Google/meta.json b/qdrant-landing/styles/Google/meta.json
new file mode 100644
index 000000000..a5da2a848
--- /dev/null
+++ b/qdrant-landing/styles/Google/meta.json
@@ -0,0 +1,4 @@
+{
+ "feed": "https://github.com/errata-ai/Google/releases.atom",
+ "vale_version": ">=1.0.0"
+}
diff --git a/qdrant-landing/styles/Google/vocab.txt b/qdrant-landing/styles/Google/vocab.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/qdrant-landing/styles/Qdrant/Acronyms.yml b/qdrant-landing/styles/Qdrant/Acronyms.yml
new file mode 100644
index 000000000..cc77c60a2
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Acronyms.yml
@@ -0,0 +1,222 @@
+---
+# Warning: cobalt.Acronyms
+#
+# Checks for unexpanded acronyms.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: conditional
+message: '"%s" has no definition.'
+link: https://about.gitlab.com/handbook/marketing/growth-marketing/content/editorial-team/#acronyms
+level: warning
+ignorecase: false
+# Ensures that the existence of 'first' implies the existence of 'second'.
+first: '\b([A-Z]{3,5})\b'
+second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
+# ... with the exception of these:
+exceptions:
+ - AJAX
+ - ANSI
+ - API
+ - APM
+ - ARM
+ - ARN
+ - ASCII
+ - AWS
+ - BSD
+ - CAS
+ - CDN
+ - CDN
+ - CHD
+ - CIDR
+ - CIS
+ - CLI
+ - CNA
+ - CNAME
+ - CORE
+ - CPU
+ - CRIME
+ - CSRF
+ - CSM
+ - CSS
+ - CSV
+ - CVE
+ - CVS
+ - DAG
+ - DAST
+ - DHCP
+ - DLT
+ - DMZ
+ - DNS
+ - DOI
+ - DOM
+ - DSA
+ - DSL
+ - DVCS
+ - ECDSA
+ - ECS
+ - EFS
+ - EKS
+ - ELB
+ - EOL
+ - EXIF
+ - FAQ
+ - FIFO
+ - FIPS
+ - FOSS
+ - FQDN
+ - FREE
+ - FTP
+ - GCP
+ - GDK
+ - GDPR
+ - GET
+ - GID
+ - GIF
+ - GKE
+ - GNU
+ - GPG
+ - GPL
+ - GPT
+ - GPU
+ - GUI
+ - HAML
+ - HDD
+ - HEAD
+ - HIPAA
+ - HLL
+ - HNSW
+ - HTML
+ - HTTP
+ - HTTPS
+ - IAM
+ - IANA
+ - IBM
+ - ICMP
+ - IDE
+ - IEC
+ - IID
+ - IMAP
+ - IOPS
+ - IRC
+ - ISO
+ - JAR
+ - JDK
+ - JPEG
+ - JPG
+ - JSON
+ - JVM
+ - JWT
+ - LAN
+ - LDAP
+ - LDAPS
+ - LESS
+ - LFS
+ - LLM
+ - LRU
+ - LTM
+ - LTS
+ - MIME
+ - MIT
+ - MITRE
+ - MVC
+ - NAT
+ - NET
+ - NDA
+ - NFS
+ - NGINX
+ - NIST
+ - NLP
+ - NOTE
+ - NPM
+ - NTP
+ - ONLY
+ - OSS
+ - OTP
+ - OWASP
+ - PAT
+ - PCI-DSS
+ - PDF
+ - PEM
+ - PEP
+ - PGP
+ - PID
+ - PKCS
+ - PHP
+ - PNG
+ - POSIX
+ - POST
+ - PUT
+ - RAID
+ - RAG
+ - RAM
+ - RBAC
+ - RDMS
+ - RDP
+ - RDS
+ - REST
+ - RFC
+ - RHEL
+ - RPC
+ - RPM
+ - RPS
+ - RSA
+ - RSS
+ - RVM
+ - SAAS
+ - SAML
+ - SAN
+ - SANS
+ - SAST
+ - SATA
+ - SCIM
+ - SCP
+ - SCSS
+ - SDK
+ - SELF
+ - SEO
+ - SFTP
+ - SHA
+ - SLA
+ - SMS
+ - SMTP
+ - SOC
+ - SOX
+ - SPDX
+ - SPF
+ - SQL
+ - SSD
+ - SSG
+ - SSH
+ - SSL
+ - SSO
+ - SVG
+ - SVN
+ - TCP
+ - TIFF
+ - TIP
+ - TLD
+ - TLS
+ - TODO
+ - TOML
+ - TTL
+ - UID
+ - UDP
+ - UID
+ - UNIX
+ - URI
+ - URL
+ - USB
+ - UTC
+ - UTF
+ - UUID
+ - VCS
+ - VPC
+ - VPN
+ - WHOIS
+ - WIP
+ - WSL
+ - XML
+ - XSS
+ - YAML
+ - ZAP
+ - ZIP
diff --git a/qdrant-landing/styles/Qdrant/Admin.yml b/qdrant-landing/styles/Qdrant/Admin.yml
new file mode 100644
index 000000000..987dbfdbd
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Admin.yml
@@ -0,0 +1,13 @@
+---
+# Warning: gitlab.Admin
+#
+# Checks for "admin" and recommends using the full word instead. "Admin Area" is OK.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Verify this use of the word "admin". Can it be updated to "administration", "administrator", "administer", or "Admin Area"?'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html
+level: suggestion
+ignorecase: false
+swap:
+ '[Aa]dmin ?\w*': '(?:Admin( Area| Mode)?|[Aa]dminist(ration|rator|rators|er|rative))'
diff --git a/qdrant-landing/styles/Qdrant/BadgeCapitalization.yml b/qdrant-landing/styles/Qdrant/BadgeCapitalization.yml
new file mode 100644
index 000000000..33425693d
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/BadgeCapitalization.yml
@@ -0,0 +1,14 @@
+---
+# Error: gitlab.BadgeCapitalization
+#
+# Verifies that badges are not mixed case, which won't render properly.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Badge "%s" must be capitalized.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges
+level: error
+scope: raw
+raw:
+ - '(?!\*\*\((FREE|PREMIUM|ULTIMATE)( (SELF|SAAS))?\)\*\*)'
+ - '(?i)\*\*\((free|premium|ultimate)( (self|saas))?\)\*\*'
diff --git a/qdrant-landing/styles/Qdrant/British.yml b/qdrant-landing/styles/Qdrant/British.yml
new file mode 100644
index 000000000..594646432
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/British.yml
@@ -0,0 +1,113 @@
+---
+# Error: gitlab.British
+#
+# Checks that US spelling is used instead of British spelling.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Use the US spelling "%s" instead of the British "%s", except for verified formal names.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
+level: warning
+ignorecase: true
+swap:
+ aeon: eon
+ aeroplane: airplane
+ ageing: aging
+ aluminium: aluminum
+ anaemia: anemia
+ anaesthesia: anesthesia
+ analyse: analyze
+ annexe: annex
+ apologise: apologize
+ behaviour: behavior
+ busses: buses
+ calibre: caliber
+ categorise: categorize
+ categorised: categorized
+ categorises: categorizes
+ categorising: categorizing
+ centre: center
+ cheque: check
+ civilisation: civilization
+ civilise: civilize
+ colour: color
+ cosy: cozy
+ cypher: cipher
+ dependant: dependent
+ defence: defense
+ distil: distill
+ draught: draft
+ encyclopaedia: encyclopedia
+ enquiry: inquiry
+ enrol: enroll
+ enrolment: enrollment
+ enthral: enthrall
+ # equalled: equaled // Under discussion
+ # equalling: equaling // Under discussion
+ favourite: favorite
+ fibre: fiber
+ fillet: filet
+ flavour: flavor
+ furore: furor
+ fulfil: fulfill
+ gaol: jail
+ grey: gray
+ humour: humor
+ honour: honor
+ initialled: initialed
+ initialling: initialing
+ instil: instill
+ jewellery: jewelry
+ labelling: labeling
+ labelled: labeled
+ labour: labor
+ libellous: libelous
+ licence: license
+ likeable: likable
+ liveable: livable
+ lustre: luster
+ manoeuvre: maneuver
+ marvellous: marvelous
+ matt: matte
+ meagre: meager
+ metre: meter
+ modelling: modeling
+ moustache: mustache
+ neighbour: neighbor
+ normalise: normalize
+ offence: offense
+ organise: organize
+ orientated: oriented
+ paralyse: paralyze
+ plough: plow
+ pretence: pretense
+ programme: program
+ pyjamas: pajamas
+ rateable: ratable
+ realise: realize
+ recognise: recognize
+ reconnoitre: reconnoiter
+ rumour: rumor
+ sabre: saber
+ saleable: salable
+ saltpetre: saltpeter
+ sceptic: skeptic
+ sepulchre: sepulcher
+ signalling: signaling
+ sizeable: sizable
+ skilful: skillful
+ sombre: somber
+ smoulder: smolder
+ speciality: specialty
+ spectre: specter
+ splendour: splendor
+ standardise: standardize
+ standardised: standardized
+ sulphur: sulfur
+ theatre: theater
+ travelled: traveled
+ traveller: traveler
+ travelling: traveling
+ unshakeable: unshakable
+ wilful: willful
+ yoghurt: yogurt
diff --git a/qdrant-landing/styles/Qdrant/Capitalization.yml b/qdrant-landing/styles/Qdrant/Capitalization.yml
new file mode 100644
index 000000000..cb14aa665
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Capitalization.yml
@@ -0,0 +1,24 @@
+---
+# Checks the capitalization of terms specific to Cobalt.
+extends: substitution
+message: 'Use "%s" instead of "%s".'
+level: warning
+ignorecase: false
+swap:
+ agile pentest: Agile Pentest
+ Agile pentest: Agile Pentest
+ agile Pentest: Agile Pentest
+ comprehensive pentest: Comprehensive Pentest
+ Comprehensive pentest: Comprehensive Pentest
+ comprehensive Pentest: Comprehensive Pentest
+ Cobalt App: Cobalt app
+ cobalt app: Cobalt app
+ cobalt App: Cobalt app
+ draft state: Draft state
+ in review state: In Review state
+ planned state: Planned state
+ live state: Live state
+ paused state: Paused state
+ remediation state: Remediation state
+ closed state: Closed state
+ cancelled state: Cancelled state
diff --git a/qdrant-landing/styles/Qdrant/Contractions.yml b/qdrant-landing/styles/Qdrant/Contractions.yml
new file mode 100644
index 000000000..ff4c317ca
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Contractions.yml
@@ -0,0 +1,29 @@
+extends: substitution
+message: "Feel free to use '%s' instead of '%s'."
+link: 'https://developers.google.com/style/contractions'
+level: suggestion
+ignorecase: true
+action:
+ name: replace
+swap:
+ are not: aren't
+ cannot: can't
+ could not: couldn't
+ did not: didn't
+ do not: don't
+ does not: doesn't
+ has not: hasn't
+ have not: haven't
+ how is: how's
+ is not: isn't
+ it is: it's
+ should not: shouldn't
+ that is: that's
+ they are: they're
+ was not: wasn't
+ we are: we're
+ were not: weren't
+ what is: what's
+ when is: when's
+ where is: where's
+ will not: won't
diff --git a/qdrant-landing/styles/Qdrant/CurrentStatus.yml b/qdrant-landing/styles/Qdrant/CurrentStatus.yml
new file mode 100644
index 000000000..16a699584
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/CurrentStatus.yml
@@ -0,0 +1,13 @@
+---
+# Suggestion: gitlab.CurrentStatus
+#
+# Checks for words that indicate a product or feature may change in the future.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Avoid words like "%s" that promise future changes, because documentation is about the current state of the product.'
+level: suggestion
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#usage-list
+tokens:
+ - currently
diff --git a/qdrant-landing/styles/Qdrant/DefaultBranch.yml b/qdrant-landing/styles/Qdrant/DefaultBranch.yml
new file mode 100644
index 000000000..4bc68433c
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/DefaultBranch.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.DefaultBranch
+#
+# Do not refer to the default branch as the "master" branch, if possible.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Use "default branch" or `main` instead of `master`, when possible.'
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html
+scope: raw
+raw:
+ - '\`master\`'
diff --git a/qdrant-landing/styles/Qdrant/E-Prime.yml b/qdrant-landing/styles/Qdrant/E-Prime.yml
new file mode 100644
index 000000000..5adceecf1
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/E-Prime.yml
@@ -0,0 +1,31 @@
+extends: existence
+message: "Try to avoid using '%s'."
+ignorecase: true
+level: suggestion
+tokens:
+ - am
+ - are
+ - aren't
+ - be
+ - been
+ - being
+ - he's
+ - here's
+ - here's
+ - how's
+ - i'm
+ - is
+ - isn't
+ - it's
+ - she's
+ - that's
+ - there's
+ - they're
+ - was
+ - wasn't
+ - we're
+ - were
+ - weren't
+ - what's
+ - where's
+ - who's
diff --git a/qdrant-landing/styles/Qdrant/ElementDescriptors.yml b/qdrant-landing/styles/Qdrant/ElementDescriptors.yml
new file mode 100644
index 000000000..254da16d0
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/ElementDescriptors.yml
@@ -0,0 +1,14 @@
+---
+# Suggestion: gitlab.ElementDescriptors
+#
+# Suggests the correct way to describe elements in a form.
+#
+# For a list of all options, see https://errata-ai.github.io/vale/styles/
+extends: substitution
+message: 'When describing elements, %s "%s".'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
+level: suggestion
+ignorecase: true
+swap:
+ button: 'if possible, rewrite to not use'
+ area: 'use "section" instead of'
diff --git a/qdrant-landing/styles/Qdrant/FirstPerson.yml b/qdrant-landing/styles/Qdrant/FirstPerson.yml
new file mode 100644
index 000000000..6fc93d951
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/FirstPerson.yml
@@ -0,0 +1,16 @@
+---
+# Warning: gitlab.FirstPerson
+#
+# Checks for use of first person pronouns.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: '"%s" is a first-person pronoun. Use second- or third-person pronouns (like we, you, us, one) instead.'
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#usage-list
+tokens:
+ - '\bI[ ,;:?!"]|\bI\x27.{1,2}'
+ - me
+ - myself
+ - mine
diff --git a/qdrant-landing/styles/Qdrant/InclusionAbleism.yml b/qdrant-landing/styles/Qdrant/InclusionAbleism.yml
new file mode 100644
index 000000000..1ebb6a97c
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/InclusionAbleism.yml
@@ -0,0 +1,14 @@
+---
+# Suggestion: gitlab.InclusionAbleism
+#
+# Suggests alternatives for words that foster ableism.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Use inclusive language. Consider "%s" instead of "%s".'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#inclusive-language
+level: suggestion
+ignorecase: true
+swap:
+ sanity (?:check|test): check for completeness
+ dummy: placeholder, sample, fake
diff --git a/qdrant-landing/styles/Qdrant/InclusionCultural.yml b/qdrant-landing/styles/Qdrant/InclusionCultural.yml
new file mode 100644
index 000000000..f536a538e
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/InclusionCultural.yml
@@ -0,0 +1,18 @@
+---
+# Warning: gitlab.InclusionCultural
+#
+# Suggests alternatives for words that are culturally inappropriate.
+# Disabled blacklist/whitelist due to feedback from pentesters, e.g., the
+# main conference is still "blackhat"
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Use inclusive language. Consider "%s" instead of "%s".'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#inclusive-language
+level: warning
+ignorecase: true
+swap:
+# blacklist(?:ed|ing|s)?: denylist
+# whitelist(?:ed|ing|s)?: allowlist
+ master: primary, main
+ slave: secondary
diff --git a/qdrant-landing/styles/Qdrant/InclusionGender.yml b/qdrant-landing/styles/Qdrant/InclusionGender.yml
new file mode 100644
index 000000000..191bf4804
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/InclusionGender.yml
@@ -0,0 +1,18 @@
+---
+# Suggestion: gitlab.InclusionGender
+#
+# Suggests alternatives for words that are gender-specific.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Use inclusive language. Consider "%s" instead of "%s".'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#inclusive-language
+level: suggestion
+ignorecase: true
+swap:
+ mankind: humanity, people
+ manpower: Cobalt team members
+ he: they
+ his: their
+ she: they
+ hers: their
diff --git a/qdrant-landing/styles/Qdrant/InternalLinkExtension.yml b/qdrant-landing/styles/Qdrant/InternalLinkExtension.yml
new file mode 100644
index 000000000..5783c4347
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/InternalLinkExtension.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.InternalLinkExtension
+#
+# Checks that internal links have .md extenstion and not .html extension.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Link "%s" must use the .md file extension.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links-to-internal-documentation
+level: error
+scope: raw
+raw:
+ - '\[.+\]\([\w\/\.-]+\.html[^)]*\)'
diff --git a/qdrant-landing/styles/Qdrant/LICENSE.md b/qdrant-landing/styles/Qdrant/LICENSE.md
new file mode 100644
index 000000000..bc05e134e
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/LICENSE.md
@@ -0,0 +1,3 @@
+The files in this directory were created by [GitLab](https://about.gitlab.com/), licensed under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/). We modified the contents of the files for Cobalt styles.
+
+For the current versions of these files, see https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc/.vale/gitlab.
\ No newline at end of file
diff --git a/qdrant-landing/styles/Qdrant/LatinTerms.yml b/qdrant-landing/styles/Qdrant/LatinTerms.yml
new file mode 100644
index 000000000..12553a801
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/LatinTerms.yml
@@ -0,0 +1,17 @@
+---
+# Warning: gitlab.LatinTerms
+#
+# Checks for use of Latin terms.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Use "%s" instead of "%s", but consider rewriting the sentence.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#usage-list
+level: warning
+nonword: true
+ignorecase: true
+swap:
+ e\.g\.: for example
+ e\. g\.: for example
+ i\.e\.: that is
+ i\. e\.: that is
diff --git a/qdrant-landing/styles/Qdrant/MeaningfulLinkWords.yml b/qdrant-landing/styles/Qdrant/MeaningfulLinkWords.yml
new file mode 100644
index 000000000..c7a652c3d
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/MeaningfulLinkWords.yml
@@ -0,0 +1,14 @@
+---
+# Warning: qdrant.MeaningfulLinkWords
+#
+# Checks for the presence of semantically unhelpful words in link text.
+#
+extends: existence
+message: 'Improve SEO and accessibility by rewriting "%s" in the link text.'
+level: warning
+scope: raw
+ignorecase: true
+link: https://developers.google.com/style/link-text
+tokens:
+ - \[here]
+ - \[this page]
diff --git a/qdrant-landing/styles/Qdrant/MergeConflictMarkers.yml b/qdrant-landing/styles/Qdrant/MergeConflictMarkers.yml
new file mode 100644
index 000000000..4f216ac34
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/MergeConflictMarkers.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.MergeConflictMarkers
+#
+# Checks for the presence of merge conflict markers.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Merge conflict marker "%s" found.'
+link: https://docs.gitlab.com/ee/development/code_review.html#merging-a-merge-request
+level: error
+scope: raw
+raw:
+ - '\n<<<<<<< .+\n|\n=======\n|\n>>>>>>> .+\n'
diff --git a/qdrant-landing/styles/Qdrant/NonStandardQuotes.yml b/qdrant-landing/styles/Qdrant/NonStandardQuotes.yml
new file mode 100644
index 000000000..d18b03f63
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/NonStandardQuotes.yml
@@ -0,0 +1,13 @@
+---
+# Warning: qdrant.NonStandardQuotes
+#
+# Use only standard single and double quotes, not left or right quotes.
+#
+extends: existence
+message: 'Use standard single quotes or double quotes only. Do not use left or right quotes.'
+level: warning
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#punctuation
+scope: raw
+raw:
+ - '[‘’“”]'
diff --git a/qdrant-landing/styles/Qdrant/OxfordComma.yml b/qdrant-landing/styles/Qdrant/OxfordComma.yml
new file mode 100644
index 000000000..1c7abb481
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/OxfordComma.yml
@@ -0,0 +1,12 @@
+---
+# Warning: Qdrant.OxfordComma
+#
+# Checks for the lack of an Oxford comma. In some cases, will catch overly complex sentence structures with lots of commas.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Use a comma before the last "and" or "or" in a list of three or more items.'
+link: https://developers.google.com/style/commas#serial-commas
+level: warning
+raw:
+ - '(?:[\w-_` ]+,){2,}(?:[\w-_` ]+) (and |or )'
diff --git a/qdrant-landing/styles/Qdrant/Possessive.yml b/qdrant-landing/styles/Qdrant/Possessive.yml
new file mode 100644
index 000000000..e89511eae
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Possessive.yml
@@ -0,0 +1,12 @@
+---
+# Warning: qdrant.Possessive
+#
+# The word Qdrant should not be used in the possessive form.
+#
+extends: existence
+message: "Rewrite '%s' to not use 's."
+level: error
+ignorecase: true
+link: https://developers.google.com/style/possessives#product,-feature,-and-company-names
+tokens:
+ - Qdrant's
diff --git a/qdrant-landing/styles/Qdrant/Quotes.yml b/qdrant-landing/styles/Qdrant/Quotes.yml
new file mode 100644
index 000000000..ac1465a79
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Quotes.yml
@@ -0,0 +1,7 @@
+extends: existence
+message: "Commas and periods go inside quotation marks, unless it's a literal string."
+link: 'https://developers.google.com/style/quotation-marks'
+level: warning
+nonword: true
+tokens:
+ - '"[^"]+"[.,?]'
diff --git a/qdrant-landing/styles/Qdrant/ReferenceLinks.yml b/qdrant-landing/styles/Qdrant/ReferenceLinks.yml
new file mode 100644
index 000000000..ca9948844
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/ReferenceLinks.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.ReferenceLinks
+#
+# Checks for reference-style links that should be converted to inline links.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Link "%s" must be inline.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#basic-link-criteria
+level: error
+scope: raw
+raw:
+ - '\n\[[^\]]*\]: .*'
diff --git a/qdrant-landing/styles/Qdrant/RelativeLinksDoubleSlashes.yml b/qdrant-landing/styles/Qdrant/RelativeLinksDoubleSlashes.yml
new file mode 100644
index 000000000..ce6ce8b56
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/RelativeLinksDoubleSlashes.yml
@@ -0,0 +1,13 @@
+---
+# Error: gitlab.RelativeLinksDoubleSlashes
+#
+# Checks for the presence of double slashes in relative URLs.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Relative links must not include a double slash.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#links-to-internal-documentation
+level: error
+scope: raw
+raw:
+ - '\.//'
diff --git a/qdrant-landing/styles/Qdrant/SentenceLength.yml b/qdrant-landing/styles/Qdrant/SentenceLength.yml
new file mode 100644
index 000000000..1d5a78743
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/SentenceLength.yml
@@ -0,0 +1,13 @@
+---
+# Warning: gitlab.SentenceLength
+#
+# Counts words in a sentence and alerts if a sentence exceeds 25 words.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: occurrence
+message: 'Shorter sentences improve readability (max 28 words).'
+scope: sentence
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
+level: warning
+max: 28
+token: \b(\w+)\b
diff --git a/qdrant-landing/styles/Qdrant/Simplicity.yml b/qdrant-landing/styles/Qdrant/Simplicity.yml
new file mode 100644
index 000000000..44e78f89c
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Simplicity.yml
@@ -0,0 +1,18 @@
+---
+# Suggestion: gitlab.Simplicity
+#
+# Checks for words implying ease of use, to avoid cognitive dissonance for frustrated users.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'Avoid words like "%s" that imply ease of use, because the user may find this action hard.'
+level: suggestion
+ignorecase: true
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#usage-list
+tokens:
+ - easy
+ - easily
+ - handy
+ - simple
+ - simply
+ - useful
diff --git a/qdrant-landing/styles/Qdrant/Spelling.yml b/qdrant-landing/styles/Qdrant/Spelling.yml
new file mode 100644
index 000000000..33522ebab
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Spelling.yml
@@ -0,0 +1,16 @@
+---
+# Warning: gitlab.Spelling
+#
+# Checks for possible spelling mistakes in content, not code. Results from links using angle brackets () should be corrected.
+#
+# If a word is flagged as a spelling mistake incorrectly, such as a product name,
+# you can submit an MR to update `spelling-exceptions.txt` with the missing word.
+# Commands, like `git clone` must use backticks, and must not be added to the
+# exceptions.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: spelling
+message: 'Spelling check: "%s"?'
+level: warning
+ignore:
+ - Qdrant/spelling-exceptions.txt
diff --git a/qdrant-landing/styles/Qdrant/SubstitutionSuggestions.yml b/qdrant-landing/styles/Qdrant/SubstitutionSuggestions.yml
new file mode 100644
index 000000000..e7c0cc042
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/SubstitutionSuggestions.yml
@@ -0,0 +1,27 @@
+---
+# Suggestion: gitlab.SubstitutionSuggestions
+#
+# Suggests better options for frequently misused terms that are often - but not always - incorrect.
+# SubstitutionWarning.yml and Substitutions.yml also exist.
+#
+# For a list of all options, see https://errata-ai.github.io/vale/styles/
+extends: substitution
+message: 'Consider %s instead of "%s".'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#language
+level: suggestion
+ignorecase: true
+swap:
+ active user: '"billable user"'
+ active users: '"billable users"'
+ docs: '"documentation"'
+ e-mail: '"email"'
+ GFM: '"GitLab Flavored Markdown"'
+ it is recommended: '"we recommend"'
+ OAuth2: '"OAuth 2.0"'
+ once that: '"after that"'
+ once the: '"after the"'
+ once you: '"after you"'
+ since: '"because" or "after"'
+ sub-group: '"subgroup"'
+ sub-groups: '"subgroups"'
+ within: '"in"'
diff --git a/qdrant-landing/styles/Qdrant/SubstitutionWarning.yml b/qdrant-landing/styles/Qdrant/SubstitutionWarning.yml
new file mode 100644
index 000000000..425d8ae4d
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/SubstitutionWarning.yml
@@ -0,0 +1,24 @@
+---
+# Warning: gitlab.SubstitutionWarning
+#
+# Checks for misused terms or common shorthand that should never be used at GitLab, but can't be flagged as errors.
+# Substitutions.yml and SubstitionSuggestions.yml also exist.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'If possible, use "%s" instead of "%s".'
+link: https://about.gitlab.com/handbook/communication/#top-misused-terms
+level: warning
+ignorecase: true
+swap:
+ code base: codebase
+ distro: distribution
+ file name: filename
+ filesystem: file system
+ info: information
+ repo: repository
+ timezone: time zone
+ utilize: use
+ administrator access: the Administrator role
+ administrator permission: the Administrator role
+ administrator permissions: the Administrator role
diff --git a/qdrant-landing/styles/Qdrant/Substitutions.yml b/qdrant-landing/styles/Qdrant/Substitutions.yml
new file mode 100644
index 000000000..e6c150fb8
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Substitutions.yml
@@ -0,0 +1,49 @@
+---
+# Error: gitlab.Substitutions
+#
+# Checks for misused terms that should never be used at GitLab.
+# SubstitutionWarning.yml and SubstitionSuggestions.yml also exist.
+#
+# For a list of all options, see https://docs.errata.ai/vale/styles
+extends: substitution
+message: 'Use "%s" instead of "%s".'
+link: https://about.gitlab.com/handbook/communication/#top-misused-terms
+level: error
+ignorecase: true
+swap:
+ codequality: code quality
+ Customer [Pp]ortal: Customers Portal
+ frontmatter: front matter
+ GitLabber: GitLab team member
+ GitLabbers: GitLab team members
+ GitLab-shell: GitLab Shell
+ gitlab omnibus: Omnibus GitLab
+ param: parameter
+ params: parameters
+ pg: PostgreSQL
+ 'postgres$': PostgreSQL
+ raketask: Rake task
+ raketasks: Rake tasks
+ rspec: RSpec
+ self hosted: self-managed
+ self-hosted: self-managed
+ styleguide: style guide
+ to login: to log in
+ can login: can log in
+ to log-in: to log in
+ can log-in: can log in
+ to signin: to sign in
+ can signin: can sign in
+ to sign-in: to sign in
+ can sign-in: can sign in
+ x509: X.509
+ yaml: YAML
+ developer access: the Developer role
+ developer permission: the Developer role
+ developer permissions: the Developer role
+ maintainer access: the Maintainer role
+ maintainer permission: the Maintainer role
+ maintainer permissions: the Maintainer role
+ owner access: the Owner role
+ owner permission: the Owner role
+ owner permissions: the Owner role
diff --git a/qdrant-landing/styles/Qdrant/ToDo.yml b/qdrant-landing/styles/Qdrant/ToDo.yml
new file mode 100644
index 000000000..a3725cb7f
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/ToDo.yml
@@ -0,0 +1,14 @@
+---
+# Warning: gitlab.ToDo
+#
+# You should not use "To Do", unless it refers to the UI element.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: substitution
+message: 'Use "to-do item" in most cases, or "Add a to do" if referring to the UI button.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#feature-names
+level: warning
+ignorecase: false
+swap:
+ '[Tt]o [Dd]o [Ii]tems?': to-do item
+ '\w* [Aa] [Tt]o [Dd]o': Add a to do
diff --git a/qdrant-landing/styles/Qdrant/UnclearAntecedent.yml b/qdrant-landing/styles/Qdrant/UnclearAntecedent.yml
new file mode 100644
index 000000000..c9670f4d4
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/UnclearAntecedent.yml
@@ -0,0 +1,22 @@
+---
+# Warning: qdrant.UnclearAntecedent
+#
+# Checks for words that need a noun for clarity.
+#
+# For a list of all options, see https://docs.errata.ai/vale/styles
+extends: existence
+message: "'%s' is not precise. Try rewriting with a specific subject and verb."
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#this-these-that-those
+level: warning
+ignorecase: false
+tokens:
+ - 'That is'
+ - 'That was'
+ - 'These are'
+ - 'These were'
+ - 'There are'
+ - 'There were'
+ - 'This is'
+ - 'This was'
+ - 'Those are'
+ - 'Those were'
diff --git a/qdrant-landing/styles/Qdrant/VersionText.yml b/qdrant-landing/styles/Qdrant/VersionText.yml
new file mode 100644
index 000000000..fbdda17e2
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/VersionText.yml
@@ -0,0 +1,23 @@
+---
+# Error: gitlab.VersionText
+#
+# Checks that version text is formatted correctly.
+#
+# Specifically looks for either of the following that is immediately followed on the next line
+# by content, which will break rendering:
+#
+# - `> Introduced` (version text without a link)
+# - `> [Introduced` (version text with a link)
+#
+# Because it excludes the prefix `> - `, it doesn't look for multi-line version text, for which
+# content immediately on the next line is ok. However, this will often highlight where multi-line
+# version text is attempted without `-` characters.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: existence
+message: 'This introduced-in line is not formatted correctly.'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#version-text-in-the-version-history
+level: error
+scope: raw
+raw:
+ - '> \[?Introduced.+\n[^\n]'
diff --git a/qdrant-landing/styles/Qdrant/Wordy.yml b/qdrant-landing/styles/Qdrant/Wordy.yml
new file mode 100644
index 000000000..7818ecbb7
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/Wordy.yml
@@ -0,0 +1,13 @@
+---
+# Suggestion: gitlab.Wordy
+#
+# Suggests shorter versions of wordy phrases.
+#
+# For a list of all options, see https://docs.errata.ai/vale/styles
+extends: substitution
+message: 'Be concise: "%s" is less wordy than "%s".'
+link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html
+level: suggestion
+ignorecase: true
+swap:
+ in order to: to
diff --git a/qdrant-landing/styles/Qdrant/spelling-exceptions.txt b/qdrant-landing/styles/Qdrant/spelling-exceptions.txt
new file mode 100644
index 000000000..d3b5b2aef
--- /dev/null
+++ b/qdrant-landing/styles/Qdrant/spelling-exceptions.txt
@@ -0,0 +1,936 @@
+accessor
+accessors
+Airbyte
+Akismet
+Alertmanager
+Algolia
+Alibaba
+Aliyun
+allowlist
+allowlisted
+allowlisting
+allowlists
+anonymization
+anonymized
+Ansible
+Anthos
+Apdex
+API
+APIs
+apk
+Apparmor
+approvers
+Aquatone
+architected
+architecting
+archtype
+archiver
+Arel
+arity
+Artifactory
+arXiv
+ArXiv
+Asana
+Asciidoctor
+Assembla
+async
+Atlassian
+auditability
+Auth0
+Authentiq
+Authy
+autocomplete
+autocompleted
+autocompletes
+autocompleting
+autogenerated
+autoloaded
+autoloader
+autoloading
+autoscale
+autoscaled
+autoscaler
+autoscales
+autoscaling
+awardable
+awardables
+Ayoa
+Axios
+Azure
+B-tree
+backfilling
+backport
+backported
+backporting
+backports
+backtrace
+backtraced
+backtraces
+backtracing
+badging
+Bamboo
+Bazel
+Bhyve
+Bitbucket
+blockquote
+blockquoted
+blockquotes
+blockquoting
+boolean
+booleans
+Bootsnap
+browsable
+bugfix
+bugfixed
+bugfixes
+bugfixing
+Bugzilla
+Buildkite
+buildpack
+buildpacks
+bundler
+bundlers
+burndown
+burnup
+burstable
+cacheable
+Caddy
+callstack
+callstacks
+Camo
+canonicalized
+captcha
+CentOS
+Certbot
+changeset
+changesets
+chai
+ChaosKube
+chatbot
+chatbots
+ChatOps
+checkpointing
+checksummed
+checksumming
+Citrix
+Citus
+clonable
+Cloudwatch
+Cobalt
+Cobertura
+codepath
+Codepen
+Cognito
+colocated
+colocating
+compilable
+composable
+Conda
+Config
+Consul
+Contentful
+Corosync
+Coursier
+CPU
+CPUs
+cron
+cronjob
+cronjobs
+crons
+crontab
+crontabs
+crosslinked
+crosslinking
+crosslinks
+Crossplane
+CrowdIn
+CSV
+csv
+Cyber
+cybersecurity
+Dangerfile
+Databricks
+Datadog
+dataframe
+datasource
+datasources
+datetime
+Debian
+Decompressor
+decryptable
+deduplicate
+deduplicated
+deduplicates
+deduplicating
+deduplication
+deliverables
+denormalize
+denormalized
+denormalizes
+denormalizing
+denylist
+denylisting
+denylists
+deployer
+deployers
+deprovision
+deprovisioned
+deprovisioning
+deprovisions
+dequarantine
+dequarantined
+dequarantining
+deserialization
+deserialize
+deserializers
+deserializes
+DevOps
+Dhall
+Dirble
+disambiguates
+discoverability
+dismissable
+Disqus
+Divio
+Dnscan
+doc
+docx
+Dockerfile
+Dockerfiles
+Dockerize
+Dockerized
+Dockerizing
+Docsy
+dogfood
+dogfooding
+dogfoods
+DOI
+dotenv
+downvoted
+downvotes
+Dpl
+Dreamweaver
+DSPy
+Ecto
+Elasticsearch
+enablement
+enqueued
+enqueues
+enum
+enums
+ETag
+Excon
+exfiltration
+expirable
+Facebook
+failover
+failovers
+failsafe
+Falco
+falsy
+fastlane
+Fastzip
+favicon
+favorited
+Figma
+Filebeat
+Fio
+firewalled
+firewalling
+fixup
+Flawfinder
+Flowdock
+Fluentd
+Flycheck
+Forgerock
+formatters
+Fugit
+fuzzer
+Gantt
+Gemfile
+Gemnasium
+Gemojione
+Geo.Rocks
+Getter
+Getters
+gettext
+gif
+Git
+Gitaly
+Gitea
+GitHub
+GitLab
+gitlabsos
+Gitleaks
+Gitpod
+Gitter
+globals
+Gmail
+Godep
+Goldmark
+Gollum
+Google
+goroutine
+goroutines
+Gosec
+Gradle
+Grafana
+Grafonnet
+gravatar
+gz
+Gzip
+Haml
+hardcode
+hardcoded
+hardcodes
+Haswell
+heatmap
+heatmaps
+Helm
+Helmfile
+Heroku
+Herokuish
+Hexo
+HipChat
+hostname
+hostnames
+hotfix
+hotfixed
+hotfixes
+hotfixing
+HSNW
+htmltest
+http
+https
+Hugging Face
+idempotence
+idmapper
+Iglu
+Immer
+inclusivity
+Ingress
+initializer
+initializers
+innersource
+innersourcing
+interdependencies
+interdependency
+interruptible
+io
+ipa
+irker
+issuables
+Istio
+ISP
+ISPs
+Jaeger
+jasmine-jquery
+Javafuzz
+JavaScript
+Jenkins
+Jenkinsfile
+Jina
+jina
+Jira
+jpg
+jpeg
+jq
+jQuery
+jsdom
+Jsonnet
+JupyterHub
+Kaminari
+kanban
+kanbans
+kaniko
+Karma
+Kerberos
+Keycloak
+keyset
+keyspace
+keytab
+keytabs
+Kibana
+Kinesis
+Klar
+Knative
+Kramdown
+Kroki
+Kubecost
+kubectl
+Kubernetes
+Kubeflow
+Kubesec
+Kustomize
+Langchain
+Laravel
+ldapsearch
+Lefthook
+Leiningen
+libFuzzer
+Libravatar
+liveness
+LLM
+LLs
+LLMs
+Lodash
+Lograge
+logrotate
+Logrus
+Logstash
+lookahead
+lookaheads
+lookbehind
+lookbehinds
+lookups
+loopback
+Lucene
+Maildir
+Mailgun
+Mailroom
+Makefile
+Makefiles
+Markdown
+markdownlint
+Masscan
+matcher
+matchers
+Matomo
+Mattermost
+mbox
+memmap
+memoization
+memoize
+memoized
+memoizing
+Memorystore
+mergeability
+mergeable
+Metasploit
+Microsoft
+middleware
+middlewares
+migratus
+Minikube
+MinIO
+misconfiguration
+misconfigurations
+misconfigure
+misconfigured
+misconfigures
+misconfiguring
+mitigations
+mitmproxy
+mixin
+mixins
+MLOps
+mockup
+mockups
+ModSecurity
+Monokai
+monorepo
+monorepos
+mov
+multiline
+multimodal
+multitenancy
+mutex
+nameserver
+nameservers
+namespace
+namespaced
+namespaces
+namespacing
+namespacings
+Nanoc
+negatable
+Netlify
+Nikto
+Nmap
+NodeJS
+nodejs
+Nokogiri
+noteable
+noteables
+npm
+nullability
+nullable
+Nurtch
+nyc
+OAuth
+Octokit
+offboarded
+offboarding
+offboards
+Okta
+OmniAuth
+onboarding
+OpenID
+OpenShift
+Opsgenie
+Overcommit
+Packagist
+pageinfo
+parallelization
+parallelizations
+passwordless
+pastebins
+Patroni
+pdf
+pentest
+pentester
+pentests
+pentesters
+pentesting
+performant
+PgBouncer
+pgLoader
+Phabricator
+phaser
+phasers
+Pinecone
+phpenv
+pipenv
+Pipfile
+Pipfiles
+Piwik
+plaintext
+png
+Poedit
+polyfill
+polyfills
+pooler
+postfixed
+postgres.ai
+PostgreSQL
+precompile
+precompiled
+preconfigure
+preconfigured
+preconfigures
+prefill
+prefilled
+prefilling
+prefills
+preload
+preloading
+preloads
+prepend
+prepended
+prepending
+prepends
+prepopulated
+preprint
+preprints
+Prettifier
+Pritaly
+Priyanka
+profiler
+Prometheus
+ProseMirror
+protobuf
+protobufs
+proxied
+proxies
+proxyable
+proxying
+pseudocode
+pseudonymized
+pseudonymizer
+Puma
+pytest
+Python
+Pythonic
+qdrant
+Qdrant
+Qdrant's
+Qualys
+queryable
+Quicktime
+Rackspace
+Raspbian
+rar
+rbenv
+rbtrace
+Rdoc
+reachability
+Realplayer
+reauthenticate
+reauthenticated
+reauthenticates
+reauthenticating
+rebalancing
+rebar
+rebase
+rebased
+rebases
+rebasing
+reCAPTCHA
+Redcarpet
+redirection
+redirections
+Redis
+Redmine
+refactorings
+referer
+referers
+reflog
+reflogs
+refspec
+refspecs
+reindex
+reindexed
+reindexes
+reindexing
+reinitialize
+reinitializing
+relicensing
+remediations
+replicables
+repmgr
+repmgrd
+repo
+repurposing
+requeue
+requeued
+requeues
+Restlet
+resync
+resynced
+resyncing
+resyncs
+retarget
+retargeted
+retargeting
+retargets
+reusability
+reverified
+reverifies
+reverify
+roadmap
+roadmaps
+rollout
+rollouts
+rsync
+rsynced
+rsyncing
+rsyncs
+Rubinius
+Rubix
+Rubocop
+Rubular
+ruleset
+rulesets
+runbook
+runbooks
+runit
+runtime
+runtimes
+Sagemaker
+Salesforce
+sandboxing
+sanitization
+sbt
+scalers
+scatterplot
+scatterplots
+Schemastore
+scrollable
+SDK
+SDKs
+Semgrep
+Sendmail
+Sentry
+serializer
+serializers
+serializing
+serverless
+severities
+sharded
+sharding
+shfmt
+Shibboleth
+Shodan
+Shopify
+Sidekiq
+Silverlight
+Sisense
+Sitespeed
+skippable
+Slack
+Slackbot
+Slony
+smartcard
+smartcards
+snapshotting
+Sobelow
+Solargraph
+Solarized
+Sourcegraph
+sparkline
+sparklines
+spidering
+Splunk
+SpotBugs
+sqlmap
+SSD
+SSDs
+Stackdriver
+Stackprof
+starrer
+starrers
+storable
+storages
+strace
+strikethrough
+strikethroughs
+stunnel
+stylelint
+subchart
+subcharts
+subfolder
+subfolders
+subgraph
+subgraphs
+subgroup
+subgroups
+subkey
+subkeys
+sublicense
+sublicensed
+sublicenses
+sublicensing
+subnet
+subnets
+subnetting
+subpath
+subproject
+subprojects
+subqueried
+subqueries
+subquery
+subquerying
+substring
+substrings
+subtask
+subtasks
+subtest
+subtests
+subtree
+subtrees
+sudo
+supercookie
+supercookies
+supertype
+supertypes
+swappiness
+swimlane
+swimlanes
+syncable
+Sysbench
+syscall
+syscalls
+syslog
+tanuki
+tcpdump
+templated
+Thanos
+Thoughtbot
+throughputs
+Tiller
+timebox
+timeboxed
+timeboxes
+timeboxing
+timecop
+tiptap
+Tizen
+toc
+todos
+tokenizer
+Tokenizers
+tokenizing
+tolerations
+toolchain
+toolchains
+toolkit
+toolkits
+toolset
+tooltip
+tooltips
+transactionally
+transpile
+transpiled
+transpiles
+transpiling
+Trello
+triaged
+triages
+triaging
+Trivy
+truthy
+Truststore
+Twilio
+Twitter
+txt
+txtai
+TypeScript
+Ubuntu
+unapplied
+unapprove
+unapproved
+unapproving
+unarchive
+unarchived
+unarchives
+unarchiving
+unary
+unassign
+unassigning
+unassigns
+unban
+uncheck
+unchecked
+unchecking
+unchecks
+uncomment
+uncommented
+uncommenting
+uncordon
+unencode
+unencoded
+unencoder
+unencodes
+unencrypted
+unfollow
+unfollowed
+unfollows
+Unicorn
+unindexed
+unlink
+unlinking
+unlinks
+unmappable
+unmapped
+unmergeable
+unmerged
+unmerges
+unmerging
+unmocked
+unoptimize
+unoptimized
+unoptimizes
+unoptimizing
+unpatched
+unprioritized
+unprotect
+unprotected
+unprotecting
+unprotects
+unprovision
+unprovisioned
+unprovisions
+unpublish
+unpublished
+unpublishes
+unpublishing
+unpushed
+unreferenced
+unregister
+unregistered
+unregisters
+unreplicated
+unresolve
+unresolved
+unresolving
+unreviewed
+unsanitized
+unschedule
+unscoped
+unshare
+unshared
+unshares
+unstage
+unstaged
+unstages
+unstaging
+unstar
+unstars
+unstarted
+unstash
+unstashed
+unstashing
+unsynced
+unsynchronized
+untarred
+untracked
+untrusted
+unverified
+unverifies
+unverify
+unverifying
+uploader
+uploaders
+upsert
+Upsert
+upstreams
+upvote
+upvoted
+upvotes
+URIs
+UUID
+UUIDs
+Vagrantfile
+validator
+validators
+vectorstore
+vendored
+versionless
+viewport
+viewports
+vim
+vimrc
+virtualized
+virtualizing
+VPN
+VPNs
+Vue
+Vuex
+Vulnerability
+vulnerability
+vulnerabilities
+walkthrough
+walkthroughs
+WebdriverIO
+Webex
+webpack
+webserver
+Webservice
+websocket
+websockets
+whitepaper
+whitepapers
+whois
+wireframe
+wireframed
+wireframes
+wireframing
+Wireshark
+Wolt
+Wordpress
+worktree
+worktrees
+Worldline
+www
+Xcode
+Xeon
+xls
+xlsx
+YouTrack
+ytt
+Yubico
+Zeitwerk
+Zendesk
+ZenTao
+zsh
+Zstandard
diff --git a/qdrant-landing/styles/Readability/FleschKincaid.yml b/qdrant-landing/styles/Readability/FleschKincaid.yml
new file mode 100644
index 000000000..8379139b4
--- /dev/null
+++ b/qdrant-landing/styles/Readability/FleschKincaid.yml
@@ -0,0 +1,8 @@
+extends: metric
+message: "Make your content readable. Set a Flesch–Kincaid grade level (%s) below 10. To lower the score, use shorter sentences and more common words."
+link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests
+
+formula: |
+ (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59
+
+condition: "> 1"
diff --git a/qdrant-landing/styles/Readability/meta.json b/qdrant-landing/styles/Readability/meta.json
new file mode 100644
index 000000000..0ff71c302
--- /dev/null
+++ b/qdrant-landing/styles/Readability/meta.json
@@ -0,0 +1,4 @@
+{
+ "feed": "https://github.com/errata-ai/Readability/releases.atom",
+ "vale_version": ">=2.13.0"
+}
\ No newline at end of file
diff --git a/qdrant-landing/styles/Spelling.yml b/qdrant-landing/styles/Spelling.yml
new file mode 100644
index 000000000..2700f0ea3
--- /dev/null
+++ b/qdrant-landing/styles/Spelling.yml
@@ -0,0 +1,16 @@
+---
+# Warning: qdrant.Spelling
+#
+# Checks for possible spelling mistakes in content, not code. Results from links using angle brackets () should be corrected.
+#
+# If a word is flagged as a spelling mistake incorrectly, such as a product name,
+# you can submit an MR to update `spelling-exceptions.txt` with the missing word.
+# Commands, like `git clone` must use backticks, and must not be added to the
+# exceptions.
+#
+# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
+extends: spelling
+message: 'Spelling check: "%s"?'
+level: warning
+ignore:
+ - Qdrant/spelling-exceptions.txt
diff --git a/qdrant-landing/styles/config/vocabularies/Qdrant/README b/qdrant-landing/styles/config/vocabularies/Qdrant/README
new file mode 100644
index 000000000..d47a3308b
--- /dev/null
+++ b/qdrant-landing/styles/config/vocabularies/Qdrant/README
@@ -0,0 +1 @@
+This directory includes content designed for Vale Server. Do not delete.
\ No newline at end of file
diff --git a/qdrant-landing/styles/config/vocabularies/Qdrant/accept.txt b/qdrant-landing/styles/config/vocabularies/Qdrant/accept.txt
new file mode 100644
index 000000000..5f1d2d7c7
--- /dev/null
+++ b/qdrant-landing/styles/config/vocabularies/Qdrant/accept.txt
@@ -0,0 +1,5 @@
+Qdrant
+Retrieval-augmented generation
+retrieval-augmented generation
+pageinfo
+Geo.Rocks
diff --git a/qdrant-landing/styles/config/vocabularies/Qdrant/reject.txt b/qdrant-landing/styles/config/vocabularies/Qdrant/reject.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/qdrant-landing/styles/config/vocabularies/Qdrant/spelling-exceptions.txt b/qdrant-landing/styles/config/vocabularies/Qdrant/spelling-exceptions.txt
new file mode 100644
index 000000000..d397a436f
--- /dev/null
+++ b/qdrant-landing/styles/config/vocabularies/Qdrant/spelling-exceptions.txt
@@ -0,0 +1,832 @@
+accessor
+accessors
+Akismet
+Alertmanager
+Algolia
+Alibaba
+Aliyun
+allowlist
+allowlisted
+allowlisting
+allowlists
+anonymization
+anonymized
+Ansible
+Anthos
+Apdex
+Apparmor
+approvers
+architected
+architecting
+archiver
+Arel
+arity
+Artifactory
+Asana
+Asciidoctor
+Assembla
+Atlassian
+auditability
+Auth0
+Authentiq
+Authy
+autocomplete
+autocompleted
+autocompletes
+autocompleting
+autogenerated
+autoloaded
+autoloader
+autoloading
+autoscale
+autoscaled
+autoscaler
+autoscales
+autoscaling
+awardable
+awardables
+Ayoa
+Axios
+Azure
+B-tree
+backfilling
+backport
+backported
+backporting
+backports
+backtrace
+backtraced
+backtraces
+backtracing
+badging
+Bamboo
+Bazel
+Bhyve
+Bitbucket
+blockquote
+blockquoted
+blockquotes
+blockquoting
+boolean
+booleans
+Bootsnap
+browsable
+bugfix
+bugfixed
+bugfixes
+bugfixing
+Bugzilla
+Buildkite
+buildpack
+buildpacks
+bundler
+bundlers
+burndown
+burnup
+burstable
+cacheable
+Caddy
+callstack
+callstacks
+Camo
+canonicalized
+captcha
+CentOS
+Certbot
+changeset
+changesets
+chai
+ChaosKube
+chatbot
+chatbots
+ChatOps
+checksummed
+checksumming
+Citrix
+Citus
+clonable
+Cloudwatch
+Cobertura
+Codepen
+Cognito
+colocated
+colocating
+compilable
+composable
+Conda
+Consul
+Contentful
+Corosync
+Coursier
+cron
+cronjob
+cronjobs
+crons
+crontab
+crontabs
+crosslinked
+crosslinking
+crosslinks
+Crossplane
+CrowdIn
+CSV
+cybersecurity
+Dangerfile
+Datadog
+datasource
+datasources
+datetime
+Debian
+Decompressor
+decryptable
+deduplicate
+deduplicated
+deduplicates
+deduplicating
+deduplication
+deliverables
+denormalize
+denormalized
+denormalizes
+denormalizing
+denylist
+denylisting
+denylists
+deployer
+deployers
+deprovision
+deprovisioned
+deprovisioning
+deprovisions
+dequarantine
+dequarantined
+dequarantining
+deserialization
+deserialize
+deserializers
+deserializes
+DevOps
+Dhall
+disambiguates
+discoverability
+dismissable
+Disqus
+Divio
+Dockerfile
+Dockerfiles
+Dockerize
+Dockerized
+Dockerizing
+dogfood
+dogfooding
+dogfoods
+dotenv
+downvoted
+downvotes
+Dpl
+Dreamweaver
+Ecto
+Elasticsearch
+enablement
+enqueued
+enqueues
+enum
+enums
+ETag
+Excon
+exfiltration
+expirable
+Facebook
+failover
+failovers
+failsafe
+Falco
+falsy
+fastlane
+Fastzip
+favicon
+favorited
+Figma
+Filebeat
+Fio
+firewalled
+firewalling
+fixup
+Flawfinder
+Flowdock
+Fluentd
+Flycheck
+Forgerock
+formatters
+Fugit
+fuzzer
+Gantt
+Gemfile
+Gemnasium
+Gemojione
+Getter
+Getters
+gettext
+Git
+Gitaly
+Gitea
+GitHub
+GitLab
+gitlabsos
+Gitleaks
+Gitpod
+Gitter
+globals
+Gmail
+Godep
+Gollum
+Google
+goroutine
+goroutines
+Gosec
+Gradle
+Grafana
+Grafonnet
+gravatar
+Gzip
+Haml
+hardcode
+hardcoded
+hardcodes
+Haswell
+heatmap
+heatmaps
+Helm
+Helmfile
+Heroku
+Herokuish
+Hexo
+HipChat
+hostname
+hostnames
+hotfix
+hotfixed
+hotfixes
+hotfixing
+http
+https
+idempotence
+idmapper
+Iglu
+Immer
+inclusivity
+Ingress
+initializer
+initializers
+innersource
+innersourcing
+interdependencies
+interdependency
+interruptible
+irker
+issuables
+Istio
+Jaeger
+jasmine-jquery
+Javafuzz
+JavaScript
+Jenkins
+Jenkinsfile
+Jira
+jq
+jQuery
+jsdom
+Jsonnet
+JupyterHub
+Kaminari
+kanban
+kanbans
+kaniko
+Karma
+Kerberos
+Keycloak
+keyset
+keyspace
+keytab
+keytabs
+Kibana
+Kinesis
+Klar
+Knative
+Kramdown
+Kroki
+Kubecost
+kubectl
+Kubernetes
+Kubesec
+Kustomize
+Laravel
+ldapsearch
+Lefthook
+Leiningen
+libFuzzer
+Libravatar
+liveness
+Lodash
+Lograge
+logrotate
+Logrus
+Logstash
+lookahead
+lookaheads
+lookbehind
+lookbehinds
+lookups
+loopback
+Lucene
+Maildir
+Mailgun
+Mailroom
+Makefile
+Makefiles
+Markdown
+markdownlint
+matcher
+matchers
+Matomo
+Mattermost
+mbox
+memoization
+memoize
+memoized
+memoizing
+Memorystore
+mergeability
+mergeable
+Microsoft
+middleware
+middlewares
+migratus
+Minikube
+MinIO
+misconfiguration
+misconfigurations
+misconfigure
+misconfigured
+misconfigures
+misconfiguring
+mitigations
+mitmproxy
+mixin
+mixins
+mockup
+mockups
+ModSecurity
+Monokai
+monorepo
+monorepos
+multiline
+mutex
+nameserver
+nameservers
+namespace
+namespaced
+namespaces
+namespacing
+namespacings
+Nanoc
+negatable
+Netlify
+Nokogiri
+noteable
+noteables
+npm
+nullability
+nullable
+Nurtch
+nyc
+OAuth
+Octokit
+offboarded
+offboarding
+offboards
+Okta
+OmniAuth
+onboarding
+OpenID
+OpenShift
+Opsgenie
+Overcommit
+Packagist
+parallelization
+parallelizations
+passwordless
+Patroni
+performant
+PgBouncer
+pgLoader
+Phabricator
+phaser
+phasers
+phpenv
+pipenv
+Pipfile
+Pipfiles
+Piwik
+plaintext
+Poedit
+polyfill
+polyfills
+pooler
+postfixed
+postgres.ai
+PostgreSQL
+precompile
+precompiled
+preconfigure
+preconfigured
+preconfigures
+prefill
+prefilled
+prefilling
+prefills
+preload
+preloading
+preloads
+prepend
+prepended
+prepending
+prepends
+prepopulated
+Prettifier
+Pritaly
+Priyanka
+profiler
+Prometheus
+ProseMirror
+protobuf
+protobufs
+proxied
+proxies
+proxyable
+proxying
+pseudocode
+pseudonymized
+pseudonymizer
+Puma
+pytest
+Python
+Qualys
+queryable
+Quicktime
+Rackspace
+Raspbian
+rbenv
+rbtrace
+Rdoc
+reachability
+Realplayer
+reauthenticate
+reauthenticated
+reauthenticates
+reauthenticating
+rebalancing
+rebar
+rebase
+rebased
+rebases
+rebasing
+reCAPTCHA
+Redcarpet
+redirection
+redirections
+Redis
+Redmine
+refactorings
+referer
+referers
+reflog
+reflogs
+refspec
+refspecs
+reindex
+reindexed
+reindexes
+reindexing
+reinitialize
+reinitializing
+relicensing
+remediations
+replicables
+repmgr
+repmgrd
+repurposing
+requeue
+requeued
+requeues
+Restlet
+resync
+resynced
+resyncing
+resyncs
+retarget
+retargeted
+retargeting
+retargets
+reusability
+reverified
+reverifies
+reverify
+roadmap
+roadmaps
+rollout
+rollouts
+rsync
+rsynced
+rsyncing
+rsyncs
+Rubinius
+Rubix
+Rubocop
+Rubular
+ruleset
+rulesets
+runbook
+runbooks
+runit
+runtime
+runtimes
+Salesforce
+sandboxing
+sanitization
+sbt
+scalers
+scatterplot
+scatterplots
+Schemastore
+scrollable
+Semgrep
+Sendmail
+Sentry
+serializer
+serializers
+serializing
+serverless
+severities
+sharded
+sharding
+shfmt
+Shibboleth
+Shopify
+Sidekiq
+Silverlight
+Sisense
+Sitespeed
+skippable
+Slack
+Slackbot
+Slony
+smartcard
+smartcards
+snapshotting
+Sobelow
+Solargraph
+Solarized
+Sourcegraph
+sparkline
+sparklines
+spidering
+Splunk
+SpotBugs
+Stackdriver
+Stackprof
+starrer
+starrers
+storable
+storages
+strace
+strikethrough
+strikethroughs
+stunnel
+stylelint
+subchart
+subcharts
+subfolder
+subfolders
+subgraph
+subgraphs
+subgroup
+subgroups
+subkey
+subkeys
+sublicense
+sublicensed
+sublicenses
+sublicensing
+subnet
+subnets
+subnetting
+subpath
+subproject
+subprojects
+subqueried
+subqueries
+subquery
+subquerying
+substring
+substrings
+subtask
+subtasks
+subtest
+subtests
+subtree
+subtrees
+sudo
+supercookie
+supercookies
+supertype
+supertypes
+swappiness
+swimlane
+swimlanes
+syncable
+Sysbench
+syscall
+syscalls
+syslog
+tanuki
+tcpdump
+templated
+Thanos
+Thoughtbot
+throughputs
+Tiller
+timebox
+timeboxed
+timeboxes
+timeboxing
+timecop
+tiptap
+todos
+tokenizer
+Tokenizers
+tokenizing
+tolerations
+toolchain
+toolchains
+toolkit
+toolkits
+tooltip
+tooltips
+transactionally
+transpile
+transpiled
+transpiles
+transpiling
+Trello
+triaged
+triages
+triaging
+Trivy
+truthy
+Truststore
+Twilio
+Twitter
+TypeScript
+Ubuntu
+unapplied
+unapprove
+unapproved
+unapproving
+unarchive
+unarchived
+unarchives
+unarchiving
+unary
+unassign
+unassigning
+unassigns
+unban
+uncheck
+unchecked
+unchecking
+unchecks
+uncomment
+uncommented
+uncommenting
+uncordon
+unencode
+unencoded
+unencoder
+unencodes
+unencrypted
+unfollow
+unfollowed
+unfollows
+Unicorn
+unindexed
+unlink
+unlinking
+unlinks
+unmappable
+unmapped
+unmergeable
+unmerged
+unmerges
+unmerging
+unmocked
+unoptimize
+unoptimized
+unoptimizes
+unoptimizing
+unpatched
+unprioritized
+unprotect
+unprotected
+unprotecting
+unprotects
+unprovision
+unprovisioned
+unprovisions
+unpublish
+unpublished
+unpublishes
+unpublishing
+unpushed
+unreferenced
+unregister
+unregistered
+unregisters
+unreplicated
+unresolve
+unresolved
+unresolving
+unreviewed
+unsanitized
+unschedule
+unscoped
+unshare
+unshared
+unshares
+unstage
+unstaged
+unstages
+unstaging
+unstar
+unstars
+unstarted
+unstash
+unstashed
+unstashing
+unsynced
+unsynchronized
+untarred
+untracked
+untrusted
+unverified
+unverifies
+unverify
+unverifying
+uploader
+uploaders
+upstreams
+upvote
+upvoted
+upvotes
+URIs
+Vagrantfile
+validator
+validators
+vendored
+versionless
+viewport
+viewports
+virtualized
+virtualizing
+Vue
+Vuex
+walkthrough
+walkthroughs
+WebdriverIO
+Webex
+webpack
+webserver
+Webservice
+websocket
+websockets
+whitepaper
+whitepapers
+wireframe
+wireframed
+wireframes
+wireframing
+Wireshark
+Wordpress
+worktree
+worktrees
+Worldline
+Xcode
+Xeon
+YouTrack
+ytt
+Yubico
+Zeitwerk
+Zendesk
+ZenTao
+zsh
+Zstandard
diff --git a/qdrant-landing/styles/write-good/Cliches.yml b/qdrant-landing/styles/write-good/Cliches.yml
new file mode 100644
index 000000000..c95314387
--- /dev/null
+++ b/qdrant-landing/styles/write-good/Cliches.yml
@@ -0,0 +1,702 @@
+extends: existence
+message: "Try to avoid using clichés like '%s'."
+ignorecase: true
+level: warning
+tokens:
+ - a chip off the old block
+ - a clean slate
+ - a dark and stormy night
+ - a far cry
+ - a fine kettle of fish
+ - a loose cannon
+ - a penny saved is a penny earned
+ - a tough row to hoe
+ - a word to the wise
+ - ace in the hole
+ - acid test
+ - add insult to injury
+ - against all odds
+ - air your dirty laundry
+ - all fun and games
+ - all in a day's work
+ - all talk, no action
+ - all thumbs
+ - all your eggs in one basket
+ - all's fair in love and war
+ - all's well that ends well
+ - almighty dollar
+ - American as apple pie
+ - an axe to grind
+ - another day, another dollar
+ - armed to the teeth
+ - as luck would have it
+ - as old as time
+ - as the crow flies
+ - at loose ends
+ - at my wits end
+ - avoid like the plague
+ - babe in the woods
+ - back against the wall
+ - back in the saddle
+ - back to square one
+ - back to the drawing board
+ - bad to the bone
+ - badge of honor
+ - bald faced liar
+ - ballpark figure
+ - banging your head against a brick wall
+ - baptism by fire
+ - barking up the wrong tree
+ - bat out of hell
+ - be all and end all
+ - beat a dead horse
+ - beat around the bush
+ - been there, done that
+ - beggars can't be choosers
+ - behind the eight ball
+ - bend over backwards
+ - benefit of the doubt
+ - bent out of shape
+ - best thing since sliced bread
+ - bet your bottom dollar
+ - better half
+ - better late than never
+ - better mousetrap
+ - better safe than sorry
+ - between a rock and a hard place
+ - beyond the pale
+ - bide your time
+ - big as life
+ - big cheese
+ - big fish in a small pond
+ - big man on campus
+ - bigger they are the harder they fall
+ - bird in the hand
+ - bird's eye view
+ - birds and the bees
+ - birds of a feather flock together
+ - bit the hand that feeds you
+ - bite the bullet
+ - bite the dust
+ - bitten off more than he can chew
+ - black as coal
+ - black as pitch
+ - black as the ace of spades
+ - blast from the past
+ - bleeding heart
+ - blessing in disguise
+ - blind ambition
+ - blind as a bat
+ - blind leading the blind
+ - blood is thicker than water
+ - blood sweat and tears
+ - blow off steam
+ - blow your own horn
+ - blushing bride
+ - boils down to
+ - bolt from the blue
+ - bone to pick
+ - bored stiff
+ - bored to tears
+ - bottomless pit
+ - boys will be boys
+ - bright and early
+ - brings home the bacon
+ - broad across the beam
+ - broken record
+ - brought back to reality
+ - bull by the horns
+ - bull in a china shop
+ - burn the midnight oil
+ - burning question
+ - burning the candle at both ends
+ - burst your bubble
+ - bury the hatchet
+ - busy as a bee
+ - by hook or by crook
+ - call a spade a spade
+ - called onto the carpet
+ - calm before the storm
+ - can of worms
+ - can't cut the mustard
+ - can't hold a candle to
+ - case of mistaken identity
+ - cat got your tongue
+ - cat's meow
+ - caught in the crossfire
+ - caught red-handed
+ - checkered past
+ - chomping at the bit
+ - cleanliness is next to godliness
+ - clear as a bell
+ - clear as mud
+ - close to the vest
+ - cock and bull story
+ - cold shoulder
+ - come hell or high water
+ - cool as a cucumber
+ - cool, calm, and collected
+ - cost a king's ransom
+ - count your blessings
+ - crack of dawn
+ - crash course
+ - creature comforts
+ - cross that bridge when you come to it
+ - crushing blow
+ - cry like a baby
+ - cry me a river
+ - cry over spilt milk
+ - crystal clear
+ - curiosity killed the cat
+ - cut and dried
+ - cut through the red tape
+ - cut to the chase
+ - cute as a bugs ear
+ - cute as a button
+ - cute as a puppy
+ - cuts to the quick
+ - dark before the dawn
+ - day in, day out
+ - dead as a doornail
+ - devil is in the details
+ - dime a dozen
+ - divide and conquer
+ - dog and pony show
+ - dog days
+ - dog eat dog
+ - dog tired
+ - don't burn your bridges
+ - don't count your chickens
+ - don't look a gift horse in the mouth
+ - don't rock the boat
+ - don't step on anyone's toes
+ - don't take any wooden nickels
+ - down and out
+ - down at the heels
+ - down in the dumps
+ - down the hatch
+ - down to earth
+ - draw the line
+ - dressed to kill
+ - dressed to the nines
+ - drives me up the wall
+ - dull as dishwater
+ - dyed in the wool
+ - eagle eye
+ - ear to the ground
+ - early bird catches the worm
+ - easier said than done
+ - easy as pie
+ - eat your heart out
+ - eat your words
+ - eleventh hour
+ - even the playing field
+ - every dog has its day
+ - every fiber of my being
+ - everything but the kitchen sink
+ - eye for an eye
+ - face the music
+ - facts of life
+ - fair weather friend
+ - fall by the wayside
+ - fan the flames
+ - feast or famine
+ - feather your nest
+ - feathered friends
+ - few and far between
+ - fifteen minutes of fame
+ - filthy vermin
+ - fine kettle of fish
+ - fish out of water
+ - fishing for a compliment
+ - fit as a fiddle
+ - fit the bill
+ - fit to be tied
+ - flash in the pan
+ - flat as a pancake
+ - flip your lid
+ - flog a dead horse
+ - fly by night
+ - fly the coop
+ - follow your heart
+ - for all intents and purposes
+ - for the birds
+ - for what it's worth
+ - force of nature
+ - force to be reckoned with
+ - forgive and forget
+ - fox in the henhouse
+ - free and easy
+ - free as a bird
+ - fresh as a daisy
+ - full steam ahead
+ - fun in the sun
+ - garbage in, garbage out
+ - gentle as a lamb
+ - get a kick out of
+ - get a leg up
+ - get down and dirty
+ - get the lead out
+ - get to the bottom of
+ - get your feet wet
+ - gets my goat
+ - gilding the lily
+ - give and take
+ - go against the grain
+ - go at it tooth and nail
+ - go for broke
+ - go him one better
+ - go the extra mile
+ - go with the flow
+ - goes without saying
+ - good as gold
+ - good deed for the day
+ - good things come to those who wait
+ - good time was had by all
+ - good times were had by all
+ - greased lightning
+ - greek to me
+ - green thumb
+ - green-eyed monster
+ - grist for the mill
+ - growing like a weed
+ - hair of the dog
+ - hand to mouth
+ - happy as a clam
+ - happy as a lark
+ - hasn't a clue
+ - have a nice day
+ - have high hopes
+ - have the last laugh
+ - haven't got a row to hoe
+ - head honcho
+ - head over heels
+ - hear a pin drop
+ - heard it through the grapevine
+ - heart's content
+ - heavy as lead
+ - hem and haw
+ - high and dry
+ - high and mighty
+ - high as a kite
+ - hit paydirt
+ - hold your head up high
+ - hold your horses
+ - hold your own
+ - hold your tongue
+ - honest as the day is long
+ - horns of a dilemma
+ - horse of a different color
+ - hot under the collar
+ - hour of need
+ - I beg to differ
+ - icing on the cake
+ - if the shoe fits
+ - if the shoe were on the other foot
+ - in a jam
+ - in a jiffy
+ - in a nutshell
+ - in a pig's eye
+ - in a pinch
+ - in a word
+ - in hot water
+ - in the gutter
+ - in the nick of time
+ - in the thick of it
+ - in your dreams
+ - it ain't over till the fat lady sings
+ - it goes without saying
+ - it takes all kinds
+ - it takes one to know one
+ - it's a small world
+ - it's only a matter of time
+ - ivory tower
+ - Jack of all trades
+ - jockey for position
+ - jog your memory
+ - joined at the hip
+ - judge a book by its cover
+ - jump down your throat
+ - jump in with both feet
+ - jump on the bandwagon
+ - jump the gun
+ - jump to conclusions
+ - just a hop, skip, and a jump
+ - just the ticket
+ - justice is blind
+ - keep a stiff upper lip
+ - keep an eye on
+ - keep it simple, stupid
+ - keep the home fires burning
+ - keep up with the Joneses
+ - keep your chin up
+ - keep your fingers crossed
+ - kick the bucket
+ - kick up your heels
+ - kick your feet up
+ - kid in a candy store
+ - kill two birds with one stone
+ - kiss of death
+ - knock it out of the park
+ - knock on wood
+ - knock your socks off
+ - know him from Adam
+ - know the ropes
+ - know the score
+ - knuckle down
+ - knuckle sandwich
+ - knuckle under
+ - labor of love
+ - ladder of success
+ - land on your feet
+ - lap of luxury
+ - last but not least
+ - last hurrah
+ - last-ditch effort
+ - law of the jungle
+ - law of the land
+ - lay down the law
+ - leaps and bounds
+ - let sleeping dogs lie
+ - let the cat out of the bag
+ - let the good times roll
+ - let your hair down
+ - let's talk turkey
+ - letter perfect
+ - lick your wounds
+ - lies like a rug
+ - life's a bitch
+ - life's a grind
+ - light at the end of the tunnel
+ - lighter than a feather
+ - lighter than air
+ - like clockwork
+ - like father like son
+ - like taking candy from a baby
+ - like there's no tomorrow
+ - lion's share
+ - live and learn
+ - live and let live
+ - long and short of it
+ - long lost love
+ - look before you leap
+ - look down your nose
+ - look what the cat dragged in
+ - looking a gift horse in the mouth
+ - looks like death warmed over
+ - loose cannon
+ - lose your head
+ - lose your temper
+ - loud as a horn
+ - lounge lizard
+ - loved and lost
+ - low man on the totem pole
+ - luck of the draw
+ - luck of the Irish
+ - make hay while the sun shines
+ - make money hand over fist
+ - make my day
+ - make the best of a bad situation
+ - make the best of it
+ - make your blood boil
+ - man of few words
+ - man's best friend
+ - mark my words
+ - meaningful dialogue
+ - missed the boat on that one
+ - moment in the sun
+ - moment of glory
+ - moment of truth
+ - money to burn
+ - more power to you
+ - more than one way to skin a cat
+ - movers and shakers
+ - moving experience
+ - naked as a jaybird
+ - naked truth
+ - neat as a pin
+ - needle in a haystack
+ - needless to say
+ - neither here nor there
+ - never look back
+ - never say never
+ - nip and tuck
+ - nip it in the bud
+ - no guts, no glory
+ - no love lost
+ - no pain, no gain
+ - no skin off my back
+ - no stone unturned
+ - no time like the present
+ - no use crying over spilled milk
+ - nose to the grindstone
+ - not a hope in hell
+ - not a minute's peace
+ - not in my backyard
+ - not playing with a full deck
+ - not the end of the world
+ - not written in stone
+ - nothing to sneeze at
+ - nothing ventured nothing gained
+ - now we're cooking
+ - off the top of my head
+ - off the wagon
+ - off the wall
+ - old hat
+ - older and wiser
+ - older than dirt
+ - older than Methuselah
+ - on a roll
+ - on cloud nine
+ - on pins and needles
+ - on the bandwagon
+ - on the money
+ - on the nose
+ - on the rocks
+ - on the spot
+ - on the tip of my tongue
+ - on the wagon
+ - on thin ice
+ - once bitten, twice shy
+ - one bad apple doesn't spoil the bushel
+ - one born every minute
+ - one brick short
+ - one foot in the grave
+ - one in a million
+ - one red cent
+ - only game in town
+ - open a can of worms
+ - open and shut case
+ - open the flood gates
+ - opportunity doesn't knock twice
+ - out of pocket
+ - out of sight, out of mind
+ - out of the frying pan into the fire
+ - out of the woods
+ - out on a limb
+ - over a barrel
+ - over the hump
+ - pain and suffering
+ - pain in the
+ - panic button
+ - par for the course
+ - part and parcel
+ - party pooper
+ - pass the buck
+ - patience is a virtue
+ - pay through the nose
+ - penny pincher
+ - perfect storm
+ - pig in a poke
+ - pile it on
+ - pillar of the community
+ - pin your hopes on
+ - pitter patter of little feet
+ - plain as day
+ - plain as the nose on your face
+ - play by the rules
+ - play your cards right
+ - playing the field
+ - playing with fire
+ - pleased as punch
+ - plenty of fish in the sea
+ - point with pride
+ - poor as a church mouse
+ - pot calling the kettle black
+ - pretty as a picture
+ - pull a fast one
+ - pull your punches
+ - pulling your leg
+ - pure as the driven snow
+ - put it in a nutshell
+ - put one over on you
+ - put the cart before the horse
+ - put the pedal to the metal
+ - put your best foot forward
+ - put your foot down
+ - quick as a bunny
+ - quick as a lick
+ - quick as a wink
+ - quick as lightning
+ - quiet as a dormouse
+ - rags to riches
+ - raining buckets
+ - raining cats and dogs
+ - rank and file
+ - rat race
+ - reap what you sow
+ - red as a beet
+ - red herring
+ - reinvent the wheel
+ - rich and famous
+ - rings a bell
+ - ripe old age
+ - ripped me off
+ - rise and shine
+ - road to hell is paved with good intentions
+ - rob Peter to pay Paul
+ - roll over in the grave
+ - rub the wrong way
+ - ruled the roost
+ - running in circles
+ - sad but true
+ - sadder but wiser
+ - salt of the earth
+ - scared stiff
+ - scared to death
+ - sealed with a kiss
+ - second to none
+ - see eye to eye
+ - seen the light
+ - seize the day
+ - set the record straight
+ - set the world on fire
+ - set your teeth on edge
+ - sharp as a tack
+ - shoot for the moon
+ - shoot the breeze
+ - shot in the dark
+ - shoulder to the wheel
+ - sick as a dog
+ - sigh of relief
+ - signed, sealed, and delivered
+ - sink or swim
+ - six of one, half a dozen of another
+ - skating on thin ice
+ - slept like a log
+ - slinging mud
+ - slippery as an eel
+ - slow as molasses
+ - smart as a whip
+ - smooth as a baby's bottom
+ - sneaking suspicion
+ - snug as a bug in a rug
+ - sow wild oats
+ - spare the rod, spoil the child
+ - speak of the devil
+ - spilled the beans
+ - spinning your wheels
+ - spitting image of
+ - spoke with relish
+ - spread like wildfire
+ - spring to life
+ - squeaky wheel gets the grease
+ - stands out like a sore thumb
+ - start from scratch
+ - stick in the mud
+ - still waters run deep
+ - stitch in time
+ - stop and smell the roses
+ - straight as an arrow
+ - straw that broke the camel's back
+ - strong as an ox
+ - stubborn as a mule
+ - stuff that dreams are made of
+ - stuffed shirt
+ - sweating blood
+ - sweating bullets
+ - take a load off
+ - take one for the team
+ - take the bait
+ - take the bull by the horns
+ - take the plunge
+ - takes one to know one
+ - takes two to tango
+ - the more the merrier
+ - the real deal
+ - the real McCoy
+ - the red carpet treatment
+ - the same old story
+ - there is no accounting for taste
+ - thick as a brick
+ - thick as thieves
+ - thin as a rail
+ - think outside of the box
+ - third time's the charm
+ - this day and age
+ - this hurts me worse than it hurts you
+ - this point in time
+ - three sheets to the wind
+ - through thick and thin
+ - throw in the towel
+ - tie one on
+ - tighter than a drum
+ - time and time again
+ - time is of the essence
+ - tip of the iceberg
+ - tired but happy
+ - to coin a phrase
+ - to each his own
+ - to make a long story short
+ - to the best of my knowledge
+ - toe the line
+ - tongue in cheek
+ - too good to be true
+ - too hot to handle
+ - too numerous to mention
+ - touch with a ten foot pole
+ - tough as nails
+ - trial and error
+ - trials and tribulations
+ - tried and true
+ - trip down memory lane
+ - twist of fate
+ - two cents worth
+ - two peas in a pod
+ - ugly as sin
+ - under the counter
+ - under the gun
+ - under the same roof
+ - under the weather
+ - until the cows come home
+ - unvarnished truth
+ - up the creek
+ - uphill battle
+ - upper crust
+ - upset the applecart
+ - vain attempt
+ - vain effort
+ - vanquish the enemy
+ - vested interest
+ - waiting for the other shoe to drop
+ - wakeup call
+ - warm welcome
+ - watch your p's and q's
+ - watch your tongue
+ - watching the clock
+ - water under the bridge
+ - weather the storm
+ - weed them out
+ - week of Sundays
+ - went belly up
+ - wet behind the ears
+ - what goes around comes around
+ - what you see is what you get
+ - when it rains, it pours
+ - when push comes to shove
+ - when the cat's away
+ - when the going gets tough, the tough get going
+ - white as a sheet
+ - whole ball of wax
+ - whole hog
+ - whole nine yards
+ - wild goose chase
+ - will wonders never cease?
+ - wisdom of the ages
+ - wise as an owl
+ - wolf at the door
+ - words fail me
+ - work like a dog
+ - world weary
+ - worst nightmare
+ - worth its weight in gold
+ - wrong side of the bed
+ - yanking your chain
+ - yappy as a dog
+ - years young
+ - you are what you eat
+ - you can run but you can't hide
+ - you only live once
+ - you're the boss
+ - young and foolish
+ - young and vibrant
diff --git a/qdrant-landing/styles/write-good/Illusions.yml b/qdrant-landing/styles/write-good/Illusions.yml
new file mode 100644
index 000000000..b4f132185
--- /dev/null
+++ b/qdrant-landing/styles/write-good/Illusions.yml
@@ -0,0 +1,11 @@
+extends: repetition
+message: "'%s' is repeated!"
+level: warning
+alpha: true
+action:
+ name: edit
+ params:
+ - truncate
+ - " "
+tokens:
+ - '[^\s]+'
diff --git a/qdrant-landing/styles/write-good/Passive.yml b/qdrant-landing/styles/write-good/Passive.yml
new file mode 100644
index 000000000..82eae9336
--- /dev/null
+++ b/qdrant-landing/styles/write-good/Passive.yml
@@ -0,0 +1,183 @@
+extends: existence
+message: "'%s' may be passive voice. Use active voice if you can. Exception: definitions"
+ignorecase: true
+level: suggestion
+raw:
+ - \b(am|are|were|being|is|been|was|be)\b\s*
+tokens:
+ - '[\w]+ed'
+ - awoken
+ - beat
+ - become
+ - been
+ - begun
+ - bent
+ - beset
+ - bet
+ - bid
+ - bidden
+ - bitten
+ - bled
+ - blown
+ - born
+ - bought
+ - bound
+ - bred
+ - broadcast
+ - broken
+ - brought
+ - built
+ - burnt
+ - burst
+ - cast
+ - caught
+ - chosen
+ - clung
+ - come
+ - cost
+ - crept
+ - cut
+ - dealt
+ - dived
+ - done
+ - drawn
+ - dreamt
+ - driven
+ - drunk
+ - dug
+ - eaten
+ - fallen
+ - fed
+ - felt
+ - fit
+ - fled
+ - flown
+ - flung
+ - forbidden
+ - foregone
+ - forgiven
+ - forgotten
+ - forsaken
+ - fought
+ - found
+ - frozen
+ - given
+ - gone
+ - gotten
+ - ground
+ - grown
+ - heard
+ - held
+ - hidden
+ - hit
+ - hung
+ - hurt
+ - kept
+ - knelt
+ - knit
+ - known
+ - laid
+ - lain
+ - leapt
+ - learnt
+ - led
+ - left
+ - lent
+ - let
+ - lighted
+ - lost
+ - made
+ - meant
+ - met
+ - misspelt
+ - mistaken
+ - mown
+ - overcome
+ - overdone
+ - overtaken
+ - overthrown
+ - paid
+ - pled
+ - proven
+ - put
+ - quit
+ - read
+ - rid
+ - ridden
+ - risen
+ - run
+ - rung
+ - said
+ - sat
+ - sawn
+ - seen
+ - sent
+ - set
+ - sewn
+ - shaken
+ - shaven
+ - shed
+ - shod
+ - shone
+ - shorn
+ - shot
+ - shown
+ - shrunk
+ - shut
+ - slain
+ - slept
+ - slid
+ - slit
+ - slung
+ - smitten
+ - sold
+ - sought
+ - sown
+ - sped
+ - spent
+ - spilt
+ - spit
+ - split
+ - spoken
+ - spread
+ - sprung
+ - spun
+ - stolen
+ - stood
+ - stridden
+ - striven
+ - struck
+ - strung
+ - stuck
+ - stung
+ - stunk
+ - sung
+ - sunk
+ - swept
+ - swollen
+ - sworn
+ - swum
+ - swung
+ - taken
+ - taught
+ - thought
+ - thrived
+ - thrown
+ - thrust
+ - told
+ - torn
+ - trodden
+ - understood
+ - upheld
+ - upset
+ - wed
+ - wept
+ - withheld
+ - withstood
+ - woken
+ - won
+ - worn
+ - wound
+ - woven
+ - written
+ - wrung
diff --git a/qdrant-landing/styles/write-good/README.md b/qdrant-landing/styles/write-good/README.md
new file mode 100644
index 000000000..3edcc9b37
--- /dev/null
+++ b/qdrant-landing/styles/write-good/README.md
@@ -0,0 +1,27 @@
+Based on [write-good](https://github.com/btford/write-good).
+
+> Naive linter for English prose for developers who can't write good and wanna learn to do other stuff good too.
+
+```
+The MIT License (MIT)
+
+Copyright (c) 2014 Brian Ford
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+```
diff --git a/qdrant-landing/styles/write-good/So.yml b/qdrant-landing/styles/write-good/So.yml
new file mode 100644
index 000000000..e57f099dc
--- /dev/null
+++ b/qdrant-landing/styles/write-good/So.yml
@@ -0,0 +1,5 @@
+extends: existence
+message: "Don't start a sentence with '%s'."
+level: error
+raw:
+ - '(?:[;-]\s)so[\s,]|\bSo[\s,]'
diff --git a/qdrant-landing/styles/write-good/TooWordy.yml b/qdrant-landing/styles/write-good/TooWordy.yml
new file mode 100644
index 000000000..51b08ca25
--- /dev/null
+++ b/qdrant-landing/styles/write-good/TooWordy.yml
@@ -0,0 +1,216 @@
+extends: existence
+message: "'%s' is too wordy."
+ignorecase: true
+level: suggestion
+tokens:
+ - a number of
+ - abundance
+ - accede to
+ - accelerate
+ - accentuate
+ - accompany
+ - accomplish
+ - accorded
+ - accrue
+ - acquiesce
+ - acquire
+ - adjacent to
+ - adjustment
+ - admissible
+ - advantageous
+ - adversely impact
+ - advise
+ - aforementioned
+ - aggregate
+ - aircraft
+ - all of
+ - all things considered
+ - alleviate
+ - allocate
+ - along the lines of
+ - already existing
+ - alternatively
+ - amazing
+ - ameliorate
+ - anticipate
+ - apparent
+ - appreciable
+ - as a matter of fact
+ - as a means of
+ - as far as I'm concerned
+ - as of yet
+ - as to
+ - as yet
+ - ascertain
+ - assistance
+ - at the present time
+ - at this time
+ - attain
+ - attributable to
+ - authorize
+ - because of the fact that
+ - belated
+ - benefit from
+ - bestow
+ - by means of
+ - by virtue of
+ - by virtue of the fact that
+ - cease
+ - close proximity
+ - commence
+ - comply with
+ - concerning
+ - consequently
+ - consolidate
+ - constitutes
+ - demonstrate
+ - depart
+ - designate
+ - discontinue
+ - due to the fact that
+ - each and every
+ - economical
+ - eliminate
+ - elucidate
+ - employ
+ - endeavor
+ - enumerate
+ - equitable
+ - equivalent
+ - evaluate
+ - evidenced
+ - exclusively
+ - expedite
+ - expend
+ - expiration
+ - facilitate
+ - factual evidence
+ - feasible
+ - finalize
+ - first and foremost
+ - for all intents and purposes
+ - for the most part
+ - for the purpose of
+ - forfeit
+ - formulate
+ - have a tendency to
+ - honest truth
+ - if and when
+ - impacted
+ - implement
+ - in a manner of speaking
+ - in a timely manner
+ - in a very real sense
+ - in accordance with
+ - in addition
+ - in all likelihood
+ - in an effort to
+ - in between
+ - in excess of
+ - in lieu of
+ - in light of the fact that
+ - in many cases
+ - in my opinion
+ - in order to
+ - in regard to
+ - in some instances
+ - in terms of
+ - in the case of
+ - in the event that
+ - in the final analysis
+ - in the nature of
+ - in the near future
+ - in the process of
+ - inception
+ - incumbent upon
+ - indicate
+ - indication
+ - initiate
+ - irregardless
+ - is applicable to
+ - is authorized to
+ - is responsible for
+ - it is
+ - it is essential
+ - it seems that
+ - it was
+ - magnitude
+ - maximum
+ - minimize
+ - minimum
+ - modify
+ - monitor
+ - multiple
+ - necessitate
+ - nevertheless
+ - not certain
+ - not many
+ - not often
+ - not unless
+ - not unlike
+ - notwithstanding
+ - null and void
+ - numerous
+ - objective
+ - obligate
+ - obtain
+ - on the contrary
+ - on the other hand
+ - one particular
+ - optimum
+ - overall
+ - owing to the fact that
+ - participate
+ - particulars
+ - pass away
+ - pertaining to
+ - point in time
+ - portion
+ - possess
+ - preclude
+ - previously
+ - prior to
+ - prioritize
+ - procure
+ - proficiency
+ - provided that
+ - purchase
+ - put simply
+ - readily apparent
+ - refer back
+ - regarding
+ - relocate
+ - remainder
+ - remuneration
+ - requirement
+ - reside
+ - residence
+ - retain
+ - satisfy
+ - shall
+ - should you wish
+ - similar to
+ - solicit
+ - span across
+ - strategize
+ - subsequent
+ - substantial
+ - successfully complete
+ - sufficient
+ - terminate
+ - the month of
+ - the point I am trying to make
+ - therefore
+ - time period
+ - took advantage of
+ - transmit
+ - transpire
+ - until such time as
+ - utilization
+ - utilize
+ - various different
+ - what I mean to say is
+ - whether or not
+ - with respect to
+ - with the exception of
+ - witnessed
diff --git a/qdrant-landing/styles/write-good/Weasel.yml b/qdrant-landing/styles/write-good/Weasel.yml
new file mode 100644
index 000000000..eaa3003dd
--- /dev/null
+++ b/qdrant-landing/styles/write-good/Weasel.yml
@@ -0,0 +1,209 @@
+extends: existence
+message: "'%s' is not precise. Consider deleting it."
+ignorecase: true
+level: warning
+tokens:
+ - absolutely
+ - accidentally
+ - additionally
+ - allegedly
+ - alternatively
+ - angrily
+ - anxiously
+ - approximately
+ - awkwardly
+ - badly
+ - barely
+ - beautifully
+ - blindly
+ - boldly
+ - bravely
+ - brightly
+ - briskly
+ - bristly
+ - bubbly
+ - busily
+ - calmly
+ - carefully
+ - carelessly
+ - cautiously
+ - cheerfully
+ - clearly
+ - closely
+ - coldly
+ - completely
+ - congratulations
+ - consequently
+ - correctly
+ - courageously
+ - crinkly
+ - cruelly
+ - crumbly
+ - cuddly
+ - currently
+ - daily
+ - daringly
+ - deadly
+ - definitely
+ - deliberately
+ - doubtfully
+ - dumbly
+ - eagerly
+ - early
+ - easily
+ - elegantly
+ - enormously
+ - enthusiastically
+ - equally
+ - especially
+ - eventually
+ - exactly
+ - exceedingly
+ - exclusively
+ - extremely
+ - fairly
+ - faithfully
+ - fatally
+ - fiercely
+ - finally
+ - fondly
+ - few
+ - foolishly
+ - fortunately
+ - frankly
+ - frantically
+ - generously
+ - gently
+ - giggly
+ - gladly
+ - gracefully
+ - greedily
+ - happily
+ - hardly
+ - hastily
+ - healthily
+ - heartily
+ - helpfully
+ - honestly
+ - hourly
+ - hungrily
+ - hurriedly
+ - immediately
+ - impatiently
+ - inadequately
+ - ingeniously
+ - innocently
+ - inquisitively
+ - interestingly
+ - irritably
+ - jiggly
+ - joyously
+ - justly
+ - kindly
+ - largely
+ - lately
+ - lazily
+ - likely
+ - literally
+ - lonely
+ - loosely
+ - loudly
+ - loudly
+ - luckily
+ - madly
+ - many
+ - mentally
+ - mildly
+ - monthly
+ - mortally
+ - mostly
+ - mysteriously
+ - neatly
+ - nervously
+ - nightly
+ - noisily
+ - normally
+ - obediently
+ - occasionally
+ - openly
+ - painfully
+ - particularly
+ - patiently
+ - perfectly
+ - politely
+ - poorly
+ - powerfully
+ - presumably
+ - previously
+ - promptly
+ - punctually
+ - quarterly
+ - quickly
+ - quietly
+ - rapidly
+ - rarely
+ - really
+ - recently
+ - recklessly
+ - regularly
+ - relax
+ - remarkably
+ - relatively
+ - reluctantly
+ - repeatedly
+ - rightfully
+ - roughly
+ - rudely
+ - sadly
+ - safely
+ - selfishly
+ - sensibly
+ - seriously
+ - sharply
+ - shortly
+ - shyly
+ - significantly
+ - silently
+ - simply
+ - sleepily
+ - slowly
+ - smartly
+ - smelly
+ - smoothly
+ - softly
+ - solemnly
+ - sparkly
+ - speedily
+ - stealthily
+ - sternly
+ - stupidly
+ - substantially
+ - successfully
+ - suddenly
+ - surprisingly
+ - suspiciously
+ - swiftly
+ - tenderly
+ - tensely
+ - thoughtfully
+ - tightly
+ - timely
+ - truthfully
+ - unexpectedly
+ - unfortunately
+ - usually
+ - very
+ - victoriously
+ - violently
+ - vivaciously
+ - warmly
+ - waverly
+ - weakly
+ - wearily
+ - weekly
+ - wildly
+ - wisely
+ - worldly
+ - wrinkly
+ - yearly
+ - yesterday
diff --git a/qdrant-landing/styles/write-good/meta.json b/qdrant-landing/styles/write-good/meta.json
new file mode 100644
index 000000000..a115d2886
--- /dev/null
+++ b/qdrant-landing/styles/write-good/meta.json
@@ -0,0 +1,4 @@
+{
+ "feed": "https://github.com/errata-ai/write-good/releases.atom",
+ "vale_version": ">=1.0.0"
+}