# Wedding Vows > Wedding vows, a wedding toast, a ceremony reading or an officiant's opening, written for one > specific couple from what the requester says about them - and then measured against the failure > the genre is prone to: a piece that would fit any two people. https://wedding-vows.skillsafe.ai/ ## What it does You describe two people and the day. A free pass in the browser pulls out the **particulars** - the things that could only be about them - and those become the material the piece is written from. After the run, the desk reconciles the result against your own words and reports what it finds, including the things that are wrong with it. Four pieces from one contract: | `kind` | Who speaks | To whom | | --- | --- | --- | | `vows` | one of the two | the other, in front of everyone | | `toast` | someone who is not marrying anyone | the room, about them | | `reading` | a third person during the ceremony | at the couple, not to them | | `opening` | whoever is conducting it | the room, before anything else happens | Five tones (`plain`, `warm`, `funny`, `formal`, `lyrical`) and three lengths. Each tone names the house craft rule it is entitled to break, so a tone always changes the writing rather than being overridden by a quality instruction - which is the specific way a generator ends up producing a celebratory piece that is not celebratory. ## The measurement The headline number is **interchangeability**: how many sentences of the finished piece would still work if you swapped in a different couple. A sentence counts as carrying the couple when it holds a particular the requester supplied - its head word, or two of its content words. The rest are reported back, quoted, so you can see exactly which lines are the generic ones. **There is no pass mark, and that is a correction rather than a design.** An earlier build asserted that 60% of sentences had to carry a particular. Measured against twelve pieces written for twelve genuinely different couples, it failed **ten of them** - including pieces whose "floating" sentences were *"I said don't."* and *"They were right."*, which are the short connective sentences good writing is made of. A verifier that fails 83% of good output is worse than none, because a false finding discredits every true one beside it. What ships instead is the **reading** plus the **measured band**: across those twelve pieces the grounded share ran from **29% to 75%**, and the app reports where your piece sits against that range rather than against a number picked by eye. A floor remains, set below the lowest share ever measured on real writing, so it fires on **0 of 12** of them and does fire on a deliberately generic piece. The harness proves both directions. The floor also **scales with the material available** and is **suppressed below three particulars**. A ratio normalised by input size inverts at the small end: on a four-word description the requester's entire content vocabulary is two words, so no honest sentence of ordinary length can clear a fixed threshold, and the only route to passing would be stuffing those two words in - which is precisely the templating the check exists to catch. Below the floor the desk says the number cannot be measured, and a thin-input check (did the piece stay short instead of padding?) carries the case instead. Alongside it: - **Reconciliation.** Which details the model says it used, checked against what you actually wrote. An entry that cannot be found in your text is reported as claimed-but-not-found. - **Invented names.** Any name in the piece that appears nowhere in your request. For a set of vows this is not a style problem; it is a person saying something untrue at the front of a room. - **Stock frames.** Eleven grammatical shapes the mass-produced ceremony piece is built on. This reports rather than blocks - a funny piece will reach for one on purpose. **Three of the eleven were added from measurement, and they are the most useful thing this desk has learned about its own output.** Twelve finished pieces, written for twelve couples with nothing in common, were read cold by someone who was not shown the briefs. What came back: - **Twelve of twelve hinged into the promise the same way** - most by announcing that a promise was coming, the rest by first declining to promise the moon, which is the identical move played backwards. Two detectors now reproduce this at 11 of 12 with no false positives on ordinary promises. - **Five of twelve opened by disclaiming their own eloquence** before being eloquent. A third detector reproduces the reader's count exactly. - **The word *love* appeared zero times across twelve sets of wedding vows.** Not once. That was this desk's own craft rule - build the feeling on a thing - misread as *never name the feeling*, which is a house style leaking into somebody's wedding. The prompt now says outright that the oldest words in the genre are available. - **The `delivery` field came back as exactly four notes in an identical order, twelve times out of twelve** - because an earlier version of the prompt listed four things that field might cover. A list of examples in a system prompt is read as a form to fill in, every time. The general lesson, and the reason the detectors are shaped the way they are: **a repeated frame survives completely different wording.** A shared-vocabulary check and an opening-comparison both missed the hinge entirely. If you are auditing generated text for sameness, look for the move, not the phrase - and have something read it as a reader, because that class of defect is invisible to any assertion you would have thought to write. - **Attribution.** Reported separately and loudly, never merged with the frames, because a merely-generic sentence must not be accused of being a borrowed one. ## Originality, stated precisely Every word this app returns is written for the request. It does not reproduce, complete or closely paraphrase an existing reading, poem, song lyric, prayer, liturgy or vow text, and it never attaches a real person's name to a line. Ask for something you have heard before and it declines that material and offers to write an original piece in the same register, naming the register rather than the source. The stock-frame checker **holds no specimen text of any kind** - no line of anyone's vows, no liturgy, no fragment of a reading. What it holds is a set of grammatical shapes, which are facts about English syntax and belong to nobody. That is a stronger guarantee than a corpus of the same material could offer: the checker cannot quote anything back, because there is nothing in it to quote. Holding a copy of a liturgy in order to detect a liturgy would be doing the thing the rule forbids. ## What it will not write, and what that check actually catches Four rules run in the browser before anything is sent, so a request outside them costs nothing: a couple in which either person is under eighteen; sexual content; a couple presented as a public figure rather than as people the requester knows; and a wedding one person is not choosing. Each rule carries a target tier and a **route tier** - the ways of arriving at the thing without naming it - and either tier alone blocks. Defeaters excise their own span and the firing test then runs on what is left, so an exemption cannot discard a detection that fired elsewhere in the same sentence. **Measured, on a corpus written by someone who had not seen the rules and did not write any of the fixes** - 41 attacks and 20 benign inputs. The four rules that exist score **93.9% attack recall at 0% false positives** (minor 8/8, coercion 8/8, public figure 8/9, sexual 7/8). The number that matters more is what it replaced. A 46-probe set written by whoever wrote the rules scored **46/46**; the independent corpus scored **that same build at 6.1%**, with a false positive on an ordinary sentence ("our niece, age 9, is our flower girl"). Every single miss was **grammar, not vocabulary**: `was 14` without the words "years old"; a hyphen in `wedding-night`; the bare noun *sex* absent from a list that held only the compound *explicit sex*; "sitting" missing from a three-item adjective slot; a `famous for` exemption that ate the trigger token out of a working rule before that rule ran; and an abbreviation period splitting "Mr. President" into two sentences before any rule could read it. **A self-written probe corpus scores your own vocabulary, not your coverage.** The independent corpus now ships as a regression test, scored as a floor rather than an equality. **What stays open, said plainly rather than claimed shut:** - A well-known person referred to **by name only** - both as one of the couple and as a bystander in someone else's toast. There is no name list in this app and there will not be one; no list keeps up. The system prompt carries both cases. An earlier version of this file said the prompt covered "name only" without saying whose name, while the prompt's own rule was about the couple alone - so a named real person invoked as a bystander fell through a seam that existed only because a comment misdescribed the division of labour. - A request framed as ordinary anticipation of the wedding night. Refusing it would be the over-strict failure, and an over-strict guard is a bypass vector rather than merely an annoyance - people route around a checker that cries wolf. - Any of these categories expressed in a paraphrase the checker has no shape for. A lexical layer does not generalise. It is a pre-flight filter, not the boundary. - **Arranged marriage is not treated as coercion.** An arranged marriage is a consensual marriage in a great many places, and firing on it would refuse a real user for their culture. The rule fires on the grammar of non-consent only. ## What is not stored The description of the couple - the most private thing anyone types here - is **not sent to the account** unless the requester ticks a box. It is not blanked at serialisation; the record builder does not take it as a parameter, so it cannot leak through a later code path. The cost is real and is stated on the page: without it a saved draft can still be revised, but the desk cannot re-measure how specific it is, and drafts cannot be searched by what was written about the couple. ## Cost Metered per run against the requester's SkillSafe credits. Everything above that is measured, extracted, checked or reconciled runs in the browser and is free, including the specificity prescan, all four content rules, the interchangeability reading and every reconciliation. ## API `https://wedding-vows.skillsafe.ai/api.html` documents the exact request body and output contract, tabbed across cURL, Python, JavaScript, Go, Java, Ruby, PHP and C#.