1(function(){ 2const { 3 W: NW, 4 Eyebrow: NEb, 5 H2: NH2, 6 Sec: NSec, 7 SBtn: NBtn, 8 Lk: NLk, 9 routeHref: NHref, 10 track: NTrack 11} = window; 12const VERSUS = { 13 vinius: { 14 name: 'Vinius', 15 kind: 'Wine operating system for hospitality and collectors', 16 h1: 'Vinius and Aivin overlap on the record. They diverge on what the record is for.', 17 lede: 'Vinius publishes itself as a wine operating system: lot-based inventory, a pricing engine, live wine cards, supplier reordering and governed AI, for restaurants, hospitality groups, sommeliers and collectors. That is a genuine overlap with Aivin\u2019s Record, and in two places Vinius does things Aivin does not do at all. The difference is what each system does with the record once it exists.', 18 theirs: ['Lot-based inventory, with every movement and pour recorded as it happens', 'A pricing engine that applies markup, rounding and tax across the list and shows the margin behind each price', 'Wine cards generated from live inventory, for print or tablet', 'Supplier reordering', 'Organization defaults with site-level overrides, for groups running several properties'], 19 gap: ['In the product information reviewed we did not find a per-lot valuation working \u2014 the named adjustments, their multipliers and the order they apply in', 'We did not find a published evidence grade on a market reference, and no stated threshold below which a figure will not be certified', 'We did not find a published effective-dated snapshot that reproduces a valuation as at a date rather than recomputing it today', 'We did not find a published reconciliation between two valuations that attributes the difference to depletion, market movement, condition edits and additions', 'We did not find published material about an appraiser of record, or a signing permission a credentialed appraiser holds alone'], 20 ours: 'Aivin\u2019s difference is not a longer feature list \u2014 it is that every figure opens its working, and that Aivin will not mark a cellar appraiser-review ready when the evidence is too thin. Six bases of value per lot with each adjustment named, an evidence grade on every market reference, snapshots that reproduce, a reconciliation bridge between two valuations, and a document only a credentialed appraiser can sign. On the service side, coverage before pairing: what tonight\u2019s bins cannot cover at your cover count, stated before anyone starts.', 21 buyThat: 'If your problem is pricing the list, publishing wine cards and reordering from suppliers, Vinius does those and Aivin does not. Aivin has no pricing engine and no ordering, and it is not going to grow one.', 22 together: 'Aivin\u2019s prices are published on the pricing page. Vinius does not publish its pricing publicly, so we are not going to put a number against it here.' 23 }, 24 binwise: { 25 name: 'BinWise', 26 kind: 'Beverage inventory platform', 27 h1: 'Aivin and BinWise do different jobs. Most houses that run one should keep running it.', 28 lede: 'BinWise counts bottles and manages purchasing. Aivin values the cellar and answers what can be poured tonight. They read the same wine and answer different questions, which is why Aivin imports from BinWise rather than replacing it.', 29 theirs: ['Bin locations and physical counts, maintained properly', 'Par levels, purchase orders and receiving', 'Reconciliation against the point of sale', 'Cost of goods and variance reporting', 'A mature product with a real support organization'], 30 gap: ['We did not find a published market-reference or per-lot valuation capability in the product information reviewed', 'We did not find a published evidence-grading capability in the product information reviewed', 'We did not find a published house-defined service-window capability in the product information reviewed', 'We did not find a published provenance-chain capability in the product information reviewed. Aivinâs own working method values a documented chain at up to 12% of adjusted market', 'We did not find a published service-coverage answer in the product information reviewed'], 31 ours: 'Where a connection is implemented, Aivin can read the relevant bin locations and counts while leaving the inventory system in place. Current availability is stated on the status page. What it adds is the valuation layer and the service layer: six bases of value with the working on every lot, and coverage before service at tonight\u2019s cover count.', 32 buyThat: 'If what you need is ordering, receiving, par levels and variance, buy BinWise and do not buy Aivin. Aivin is not an inventory system and will not become one.', 33 together: '$125 to $295 a month per property on top of what BinWise costs, depending on whether you take the service layer or only the monitoring.' 34 }, 35 backbar: { 36 name: 'Backbar', 37 kind: 'Beverage inventory and ordering', 38 h1: 'Backbar runs the bar. Aivin values the cellar.', 39 lede: 'Backbar is built for beverage programs at volume â ordering, counting, costing across a whole bar. Aivin is built for the fine-dining cellar specifically: what the wine is worth on six bases, and whether tonightâs menu can be poured from it.', 40 theirs: ['Ordering and receiving across the full beverage program', 'Counting workflows designed for speed', 'Cost and margin reporting per item', 'Accessible pricing for a single room'], 41 gap: ['Beverage-wide rather than cellar-specific, so wine-only concepts are thin', 'We did not find published basis-of-value, comparable-sale or evidence-grading capabilities in the product information reviewed', 'We did not find a published appraisal output for an insurer, an executor or a bank in the product information reviewed', 'We did not find a published pairing or service-coverage layer in the product information reviewed'], 42 ours: 'Aivin reads lots, bins, counts and costs from Backbar. It adds what a beverage system has no reason to carry: a market reference per lot, six bases of value, an appraisal document, and the coverage answer before service.', 43 buyThat: 'If your problem is the whole beverage program rather than the cellar, and nobody has asked you what the wine is worth, Backbar is the better purchase and Aivin is premature.', 44 together: 'The same $125 to $295 a month per property, alongside Backbar.' 45 }, 46 appraisal: { 47 name: 'an appraisal firm', 48 kind: 'Credentialed personal-property appraisers', 49 h1: 'Aivin does not replace an appraiser. It removes the fortnight of work underneath the opinion.', 50 lede: 'An appraisal is a professional judgment and no software substitutes for one â including this one. What a firm currently spends two to
50six weeks doing is building the schedule: the references, the multipliers, the comparables by venue and date. Aivin assembles that, so the appraiser arrives at the judgment with the evidence already built.', 51 theirs: ['A signed, defensible opinion of value that carries professional liability', 'Judgment on condition, authenticity and market that no system replicates', 'Standing with insurers, executors, banks and courts', 'Experience of what survives a challenge'], 52 gap: ['Traditional engagements may require significant schedule-building before professional judgment begins', 'Reproducing last yearâs figure depends on whether the firm kept the file', 'Two to six weeks of turnaround, and $2,500 to $6,000 (illustrative) per engagement', 'No continuous view between engagements â the cellar is measured when someone commissions it'], 53 ours: 'Aivin produces the schedule, the comparables and the derivation in signature-ready form, and takes an effective-dated snapshot so the figure reproduces exactly next year. The signature stays the appraiserâs â yours if you have one, or one we introduce. Unsigned, every document states on its own face that it is appraisal support rather than a certified appraisal.', 54 buyThat: 'If you need a signed appraisal this month and nobody is available to review Aivinâs output, engage a firm directly. That is the faster path and we will say so on a call.', 55 together: 'From $750 for the document, $375 to re-certify against a new effective date, plus whatever your appraiser charges to review and sign.' 56 } 57}; 58function Versus2({ 59 id, 60 go 61}) { 62 const v = VERSUS[id]; 63 if (!v) return null; 64 return React.createElement("div", null, React.createElement("div", { 65 style: { 66 background: 'var(--gradient-hero)' 67 } 68 }, React.createElement(window.SiteNav, { 69 route: 'vs-' + id, 70 go: go 71 }), React.createElement(NW, { 72 style: { 73 padding: 'clamp(30px,6vh,60px) clamp(20px,5vw,40px) clamp(40px,7vh,70px)' 74 } 75 }, React.createElement(NEb, { 76 on: true 77 }, 'Aivin and ' + v.name), React.createElement("h1", { 78 style: { 79 fontFamily: 'var(--font-display)', 80 fontWeight: 500, 81 fontSize: 'var(--fs-display)', 82 lineHeight: 1.05, 83 letterSpacing: '-.014em', 84 color: 'var(--white)', 85 margin: '14px 0 0', 86 maxWidth: 900, 87 textWrap: 'pretty' 88 } 89 }, v.h1), React.createElement("p", { 90 style: { 91 fontSize: 'var(--fs-lead)', 92 lineHeight: 1.62, 93 color: 'rgba(255,255,255,.88)', 94 margin: '18px 0 0', 95 maxWidth: 700 96 } 97 }, v.lede), React.createElement("div", { 98 style: { 99 marginTop: 26 100 } 101 }, React.createElement(NBtn, { 102 variant: "mint", 103 href: NHref('report'), 104 onClick: () => NTrack('cta_click', { 105 cta: 'free_report', 106 place: 'vs_' + id 107 }) 108 }, "Get your free cellar report")))), React.createElement(NSec, null, React.createElement("div", { 109 style: { 110 display: 'grid', 111 gridTemplateColumns: 'repeat(auto-fit,minmax(min(100%,280px),1fr))', 112 gap: 'clamp(22px,3.4vw,48px)' 113 } 114 }, React.createElement("div", null, React.createElement(NEb, null, 'What ' + v.name + ' does well'), React.createElement("div", { 115 style: { 116 marginTop: 14 117 } 118 }, v.theirs.map(t => React.createElement("div", { 119 key: t, 120 style: { 121 display: 'flex', 122 gap: 11, 123 alignItems: 'baseline', 124 padding: '11px 0', 125 borderTop: '1px solid var(--border-subtle)' 126 } 127 }, React.createElement("span", { 128 "aria-hidden": "true", 129 style: { 130 color: 'var(--text-muted)', 131 fontSize: 'var(--fs-meta)' 132 } 133 }, '\u2014'), React.createElement("span", { 134 style: { 135 fontSize: 'var(--fs-body)', 136 lineHeight: 1.6, 137 color: 'var(--text-body)' 138 } 139 }, t))))), React.createElement("div", null, React.createElement(NEb, null, "What it does not answer"), React.createElement("div", { 140 style: { 141 marginTop: 14 142 } 143 }, v.gap.map(t => React.createElement("div", { 144 key: t, 145 style: { 146 display: 'flex', 147 gap: 11, 148 alignItems: 'baseline', 149 padding: '11px 0', 150 borderTop: '1px solid var(--border-subtle)' 151 } 152 }, React.createElement("span", { 153 "aria-hidden": "true", 154 style: { 155 color: 'var(--aivin-mint)', 156 fontSize: 'var(--fs-meta)' 157 } 158 }, '\u2014'), React.createElement("span", { 159 style: { 160 fontSize: 'var(--fs-body)', 161 lineHeight: 1.6, 162 color: 'var(--text-body)' 163 } 164 }
164, t)))))), React.createElement("p", { 165 style: { 166 fontSize: 'var(--fs-note)', 167 color: 'var(--text-muted)', 168 marginTop: 22, 169 lineHeight: 1.7, 170 maxWidth: 700 171 } 172 }, v.name + ' is described by what its own published documentation says it does. Nothing here is a benchmark or a test result. If we have described it incorrectly, write to ', React.createElement("a", { 173 href: "mailto:[email protected]", 174 style: { 175 color: 'var(--text-link)' 176 } 177 }, "[email protected]"), " and this page changes.")), React.createElement(NSec, { 178 style: { 179 background: 'var(--surface-tint)' 180 } 181 }, React.createElement(NEb, null, "Where Aivin sits"), React.createElement("p", { 182 style: { 183 fontSize: 'var(--fs-lead)', 184 lineHeight: 1.66, 185 color: 'var(--text-body)', 186 marginTop: 14, 187 maxWidth: 720 188 } 189 }, v.ours), React.createElement("div", { 190 style: { 191 display: 'flex', 192 gap: 11, 193 alignItems: 'baseline', 194 marginTop: 24, 195 padding: 'clamp(14px,2vw,18px)', 196 borderRadius: 12, 197 border: '1px solid rgba(240,179,126,.26)', 198 background: 'rgba(240,179,126,.06)' 199 } 200 }, React.createElement("span", { 201 style: { 202 fontSize: 'var(--fs-micro)', 203 letterSpacing: '.13em', 204 textTransform: 'uppercase', 205 fontWeight: 600, 206 color: 'var(--signal-caution)', 207 flex: '0 0 auto' 208 } 209 }, "Buy that, not this"), React.createElement("span", { 210 style: { 211 fontSize: 'var(--fs-body)', 212 lineHeight: 1.6, 213 color: 'var(--text-body)' 214 } 215 }, v.buyThat)), React.createElement("p", { 216 style: { 217 fontSize: 'var(--fs-note)', 218 color: 'var(--text-muted)', 219 marginTop: 18, 220 lineHeight: 1.7 221 } 222 }, React.createElement("strong", { 223 style: { 224 color: 'var(--text-primary)', 225 fontWeight: 400 226 } 227 }, "Running both:"), " ", v.together)), React.createElement(NSec, null, React.createElement("div", { 228 style: { 229 display: 'flex', 230 gap: 20, 231 flexWrap: 'wrap', 232 alignItems: 'baseline', 233 justifyContent: 'space-between' 234 } 235 }, React.createElement("div", { 236 style: { 237 maxWidth: 560 238 } 239 }, React.createElement(NEb, null, "The comparison that matters more"), React.createElement(NH2, { 240 style: { 241 maxWidth: 480 242 } 243 }, "Against a spreadsheet and an appraisal every third year."), React.createElement("p", { 244 style: { 245 fontSize: 'var(--fs-note)', 246 lineHeight: 1.7, 247 color: 'var(--text-muted)', 248 marginTop: 14 249 } 250 }, "That is the real competition for most houses, and two thirds of it works. The arithmetic, and the five situations where Aivin is the wrong purchase, are on their own page.")), React.createElement("div", { 251 style: { 252 display: 'grid', 253 gap: 10, 254 justifyItems: 'start' 255 } 256 }, React.createElement(NBtn, { 257 variant: "white", 258 href: NHref('vs') 259 }, "Against what you do now"), React.createElement(NLk, { 260 to: "alternatives", 261 style: { 262 fontSize: 'var(--fs-note)', 263 color: 'var(--aivin-mint)' 264 } 265 }, 'All five alternatives \u2192')))), React.createElement("div", { 266 style: { 267 maxWidth: 1100, 268 margin: '0 auto', 269 padding: '0 clamp(20px,5vw,40px) 44px' 270 } 271 }, React.createElement("p", { 272 style: { 273 fontSize: 'var(--fs-meta)', 274 color: 'var(--text-muted)', 275 lineHeight: 1.65, 276 margin: 0, 277 borderTop: '1px solid var(--border-subtle)', 278 paddingTop: 16 279 } 280 }, "Comparison based on the product information available to us at the time of writing. Products change. If we have described a capability incorrectly, tell us and we will correct it.")), React.createElement(window.Close, { 281 go: go 282 })); 283} 284Object.assign(window, { 285 Versus2, 286 VERSUS 287}); 288})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.