Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Public marketing, feature, pricing, contact, demo-booking, and coaching-call site for MultiplyOS. This repository is separate from the product app so marketing work can be reviewed and deployed independently.
| Link | Access / status |
|---|---|
| Marketing website | Public production |
| Implementation packages | Public production; linked from the top navigation but noindex |
| Coaching-call page | Public production; form submission writes to GoHighLevel |
| Start free trial | Separate product-app signup |
| MultiplyOS app | Separate product; redirects to login |
| Vercel preview | Preview; the branch-specific link is posted on each pull request |
Here (multiplyos.com) | Product app (app.multiplyos.com) |
|---|---|
| Marketing home, pricing, implementation, feature, privacy, and terms pages | Signup, login, billing, company data, and the product itself |
| Contact and demo lead capture | Authenticated product workflows |
| Demo availability and appointment booking | — |
| Coaching-call qualification and optional booking handoff | — |
The current site exposes /api/lead, /api/slots, and /api/book for the demo/contact journey, plus /api/coaching-lead for the separate coaching journey. These are live integration routes, not mock forms.
/api/lead upserts a GoHighLevel contact and applies website-lead plus a source-derived tag such as demo-request or contact-form./api/slots reads availability and /api/book creates the appointment./coaching-call captures contact and qualification fields through /api/coaching-lead.coaching-call-request and mos-coaching-lead tags./api/lead requires a non-blank name and /api/coaching-lead requires a non-blank first and last name; both return 400 before any GoHighLevel write. If a contact is ever upserted without a name anyway, upsertContact still saves it and logs MULTIPLYOS_WEBSITE_CONTACT_NAME_MISSING at error level with the contact id only. npm test covers this with a mocked fetch.
Server-side configuration is documented in .env.example. Never commit tokens, webhook URLs, customer data, or copied production payloads.
/, /pricing, /contact/implementation is linked from the top navigation but marked noindex, so it stays out of search results/coaching-call and /coaching-call/thank-you/rukcon redirects to the app's trial, and exists only while the pricing v2 switch is on (see below)/features/* for the individual product capabilities/privacy and /termsThe source of truth for page routes is the app/ directory.
npm install
npm run dev
The site uses Next.js 15, React 19, TypeScript, Tailwind CSS, and Framer Motion. Copy .env.example to .env.local only when integration work requires local credentials; public page review does not require submitting forms.
The three plan pricing (GROW, SCALE, MULTIPLY) is built behind two build time flags. Both are read in lib/pricing-v2-switch.mjs (the typed door is lib/pricing-v2.ts), and only the value 1 or true turns one on.
NEXT_PUBLIC_PRICING_V2 is the main switch. Unset, the site is exactly as it was: the single $299 pricing page, Sign up buttons, and no /rukcon.NEXT_PUBLIC_PRICING_V2_ANNUAL only does anything while the main switch is on. Set, the site offers annual billing. Unset, it launches monthly only. Keep it unset until counsel approves the annual consent text, because the app blocks annual checkout until then.With the main switch on:
/pricing renders components/PricingTiersPage.tsx. Prices and the math are in lib/pricing-tiers.ts; the words are in lib/pricing-copy.ts./trial/signup?plan=scale&billing=annual, or billing=monthly when annual billing is off). Every link into the app is built in lib/app-links.mjs./rukcon redirects (307) to the SCALE trial with the RUKCON code applied, on the same billing. Ashley names the final code; it is RUKCON_PROMO_CODE in lib/app-links.mjs.With annual billing on, the pricing page opens on Annual with a Monthly toggle and "Save up to 25%", and Launch onboarding is included with annual MULTIPLY only. With it off, the page shows monthly prices only, has no toggle, and says nothing about annual billing or about Launch being included.
Turn the main switch on only after the app's pricing_v2 switch is on, because the trial links lead to the app's /trial/signup. Set the variables in the Vercel environment (not as Sensitive) and redeploy; both are read at build time. npm test checks that each is read in one place only.
The Vercel project and multiplyos.com production domain already exist. Vercel's Git deployment integration is disabled in vercel.json; GitHub Actions creates pull-request previews and deploys pushes to main through the shared Vercel workflow.
Preview and production deployment are separate events. A successful preview or merge is not by itself evidence that the production deployment completed.