diff --git a/frontend/public/audio-hardware-engineers.jpg b/frontend/public/audio-hardware-engineers.jpg deleted file mode 100644 index 53f41dc1d..000000000 Binary files a/frontend/public/audio-hardware-engineers.jpg and /dev/null differ diff --git a/frontend/public/badge-deepseek-logo.png b/frontend/public/badge-deepseek-logo.png deleted file mode 100644 index e6cef4db9..000000000 Binary files a/frontend/public/badge-deepseek-logo.png and /dev/null differ diff --git a/frontend/public/badge-google-logo.png b/frontend/public/badge-google-logo.png deleted file mode 100644 index eacde5d26..000000000 Binary files a/frontend/public/badge-google-logo.png and /dev/null differ diff --git a/frontend/public/badge-kimi-logo.png b/frontend/public/badge-kimi-logo.png deleted file mode 100644 index f8602db9c..000000000 Binary files a/frontend/public/badge-kimi-logo.png and /dev/null differ diff --git a/frontend/public/badge-meta-logo.png b/frontend/public/badge-meta-logo.png deleted file mode 100644 index d88d2d7c2..000000000 Binary files a/frontend/public/badge-meta-logo.png and /dev/null differ diff --git a/frontend/public/badge-openai-logo.png b/frontend/public/badge-openai-logo.png deleted file mode 100644 index 0f890e0b3..000000000 Binary files a/frontend/public/badge-openai-logo.png and /dev/null differ diff --git a/frontend/public/badge-qwen-logo.png b/frontend/public/badge-qwen-logo.png deleted file mode 100644 index 3c8ae3fb1..000000000 Binary files a/frontend/public/badge-qwen-logo.png and /dev/null differ diff --git a/frontend/public/badge-zai-logo.png b/frontend/public/badge-zai-logo.png deleted file mode 100644 index b5d2dfb9a..000000000 Binary files a/frontend/public/badge-zai-logo.png and /dev/null differ diff --git a/frontend/public/badge-zai-logo.svg b/frontend/public/badge-zai-logo.svg deleted file mode 100644 index 4f511bd72..000000000 --- a/frontend/public/badge-zai-logo.svg +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/public/javier-r.jpg b/frontend/public/javier-r.jpg deleted file mode 100644 index e221d5476..000000000 Binary files a/frontend/public/javier-r.jpg and /dev/null differ diff --git a/frontend/public/lauren-t.jpg b/frontend/public/lauren-t.jpg deleted file mode 100644 index 47e68916b..000000000 Binary files a/frontend/public/lauren-t.jpg and /dev/null differ diff --git a/frontend/public/legal-office.jpg b/frontend/public/legal-office.jpg deleted file mode 100644 index 2cd9f9d1d..000000000 Binary files a/frontend/public/legal-office.jpg and /dev/null differ diff --git a/frontend/public/maple-teams-startup-office.jpg b/frontend/public/maple-teams-startup-office.jpg deleted file mode 100644 index 692f6b614..000000000 Binary files a/frontend/public/maple-teams-startup-office.jpg and /dev/null differ diff --git a/frontend/public/ryan-g.jpg b/frontend/public/ryan-g.jpg deleted file mode 100644 index 44ee2c844..000000000 Binary files a/frontend/public/ryan-g.jpg and /dev/null differ diff --git a/frontend/public/social-worker-office.jpg b/frontend/public/social-worker-office.jpg deleted file mode 100644 index f5318775b..000000000 Binary files a/frontend/public/social-worker-office.jpg and /dev/null differ diff --git a/frontend/src/components/ComparisonChart.tsx b/frontend/src/components/ComparisonChart.tsx deleted file mode 100644 index f73da5b05..000000000 --- a/frontend/src/components/ComparisonChart.tsx +++ /dev/null @@ -1,250 +0,0 @@ -import { Check, X, HelpCircle, DollarSign, MinusCircle } from "lucide-react"; - -interface ComparisonData { - feature: string; - maple: string; - lumo: string; - duckAI: string; - chatGPT: string; -} - -const comparisonData: ComparisonData[] = [ - { - feature: "Public Proof of Encryption (TEE)", - maple: "Yes", - lumo: "No", - duckAI: "No", - chatGPT: "No" - }, - { - feature: "Open-Source Code", - maple: "Yes", - lumo: "Partial", - duckAI: "No", - chatGPT: "No" - }, - { - feature: "Open Models", - maple: "Yes", - lumo: "Yes", - duckAI: "Partial", - chatGPT: "No" - }, - { - feature: "Never uses your data to train AI", - maple: "Yes", - lumo: "?", - duckAI: "?", - chatGPT: "No" - }, - { - feature: "Doesn't log your chats", - maple: "Yes", - lumo: "?", - duckAI: "?", - chatGPT: "No" - }, - { - feature: "Zero Data Retention", - maple: "Yes", - lumo: "?", - duckAI: "?", - chatGPT: "$" - }, - { - feature: "Document Upload", - maple: "Yes", - lumo: "Yes", - duckAI: "No", - chatGPT: "Yes" - }, - { - feature: "Image Analysis", - maple: "Yes", - lumo: "No", - duckAI: "Yes", - chatGPT: "Yes" - }, - { - feature: "Voice Input", - maple: "Yes", - lumo: "No", - duckAI: "No", - chatGPT: "Yes" - }, - { - feature: "Integration With Coding IDE", - maple: "Yes", - lumo: "No", - duckAI: "No", - chatGPT: "Yes" - }, - { - feature: "Teams Plan", - maple: "Yes", - lumo: "No", - duckAI: "No", - chatGPT: "Yes" - }, - { - feature: "Developer API", - maple: "Yes", - lumo: "No", - duckAI: "No", - chatGPT: "Yes" - } -]; - -const ValueIcon = ({ value }: { value: string }) => { - switch (value) { - case "Yes": - return ( -
- -
- ); - case "No": - return ( -
- -
- ); - case "?": - return ( -
- -
- ); - case "$": - return ( -
- -
- ); - case "Partial": - return ( -
- -
- ); - default: - return {value}; - } -}; - -export function ComparisonChart() { - const products = [ - { key: "maple", name: "Maple", highlight: true }, - { key: "lumo", name: "Lumo", highlight: false }, - { key: "duckAI", name: "Duck AI", highlight: false }, - { key: "chatGPT", name: "ChatGPT, Gemini, Claude, Grok", highlight: false } - ]; - - return ( -
-
-
-

- How We Compare -

-

- See how Maple stacks up against other AI chat platforms when it comes to privacy, - security, and developer features. -

-
- -
-
-
- {/* Header Row */} -
-
- {products.map((product) => ( -
- {product.name} -
- ))} -
- - {/* Data Rows */} - {comparisonData.map((row, index) => ( -
-
- {row.feature} -
- {products.map((product) => ( -
-
- -
-
- ))} -
- ))} -
-
-
- - {/* Legend */} -
-
- - Available -
-
- - Not Available -
-
- - Partially Available -
-
- - Claim Unverifiable -
-
- - Expensive Paid Feature -
-
-
-
- ); -} diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index c2212d65e..6fd7db0f0 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -74,12 +74,6 @@ export function Footer() { > Security Proof - - Teams -
diff --git a/frontend/src/components/Marketing.tsx b/frontend/src/components/Marketing.tsx deleted file mode 100644 index 628d426f2..000000000 --- a/frontend/src/components/Marketing.tsx +++ /dev/null @@ -1,796 +0,0 @@ -import { Link } from "@tanstack/react-router"; -import { VerificationStatus } from "./VerificationStatus"; -import { - ArrowRight, - Check, - Lock, - MessageSquareMore, - Shield, - Sparkles, - Laptop, - Tag -} from "lucide-react"; -import { Footer } from "./Footer"; -import { useQuery } from "@tanstack/react-query"; -import { getBillingService } from "@/billing/billingService"; -import { PRICING_PLANS, type PlanFeature } from "@/config/pricingConfig"; -import { isIOS } from "@/utils/platform"; -import { ComparisonChart } from "./ComparisonChart"; -import type { DiscountResponse } from "@/billing/billingApi"; -import { Badge } from "@/components/ui/badge"; - -const AI_MODELS = [ - { src: "/badge-openai-logo.png", alt: "OpenAI", labels: ["OpenAI GPT-OSS"] }, - { src: "/badge-google-logo.png", alt: "Google", labels: ["Gemma 4"] }, - { - src: "/badge-kimi-logo.png", - alt: "Moonshot", - labels: ["Kimi K2.6"] - }, - { src: "/badge-zai-logo.png", alt: "Z.ai", labels: ["GLM 5.2"] }, - { src: "/badge-meta-logo.png", alt: "Meta", labels: ["Meta Llama"] } -]; - -function CTAButton({ - children, - to, - primary = false -}: { - children: React.ReactNode; - to: string; - primary?: boolean; -}) { - return ( - - {children} - {primary && ( -
-
-
- )} - - ); -} - -function FeatureCard({ - icon: Icon, - title, - description, - gradient = "from-[hsl(var(--purple))]/10 to-[hsl(var(--blue))]/10" -}: { - icon: React.ElementType; - title: string; - description: string; - gradient?: string; -}) { - return ( -
-
- -
-

{title}

-

{description}

-
- ); -} - -function TestimonialCard({ - quote, - author, - role, - avatar -}: { - quote: string; - author: string; - role: string; - avatar: string; -}) { - return ( -
-

“{quote}”

-
- {author} -
-

{author}

-

{role}

-
-
-
- ); -} - -function PricingTier({ - name, - price, - description, - features, - ctaText, - popular = false, - productId = "", - isIOS = false, - discount -}: { - name: string; - price: string; - description: string; - features: PlanFeature[]; - ctaText: string; - popular?: boolean; - productId?: string; - isIOS?: boolean; - discount?: DiscountResponse; -}) { - const isFreeplan = name.toLowerCase().includes("free"); - const discountPercent = discount?.active ? discount.percent_off : 0; - const originalPrice = price.replace("$", ""); - const discountedPrice = - !isFreeplan && discountPercent > 0 - ? `$${(Number(originalPrice) * ((100 - discountPercent) / 100)).toFixed(0)}` - : price; - const showDiscount = !isFreeplan && discountPercent > 0; - - return ( -
- {popular && ( -
- Most Popular -
- )} - {showDiscount && ( - - {discountPercent}% OFF - - )} -

{name}

-
- {discountedPrice} - {showDiscount && ( - {price} - )} - {name === "Team" ? ( - /user /mo - ) : ( - price !== "Free" && ( - /mo - ) - )} -
- {showDiscount && discount?.active && discount.duration_months && ( -

- {discountPercent}% off for first {discount.duration_months} month - {discount.duration_months > 1 ? "s" : ""} -

- )} -

{description}

-
- {features.map((feature, index) => ( -
- {feature.text !== "" && - (feature.icon || - (feature.included ? ( - - ) : null))} - - {feature.text} - -
- ))} -
- {/* For iOS devices, disable paid plans with "Coming Soon" text */} - {isIOS && !isFreeplan ? ( - - ) : productId ? ( - // When we have a product ID, create a button that handles the navigation - - ) : ( - // Default link when no product ID is available - - {ctaText} - - )} -
- ); -} - -export { PricingTier }; - -export function Marketing() { - // Use the platform detection function for iOS - // Android doesn't have App Store restrictions, so we only need to check for iOS - const isIOSPlatform = isIOS(); - - // Fetch products to get product IDs for pricing tiers - const { data: products } = useQuery({ - queryKey: ["marketing-products"], - queryFn: async () => { - try { - const billingService = getBillingService(); - return await billingService.getProducts(); - } catch (error) { - console.error("Error fetching products:", error); - return []; - } - }, - retry: 1 - }); - - // Fetch active discount/promotion - const { data: discount } = useQuery({ - queryKey: ["discount"], - queryFn: async () => { - const billingService = getBillingService(); - return await billingService.getDiscount(); - }, - staleTime: 5 * 60 * 1000 - }); - - // Find product IDs for each tier - const getProductId = (name: string) => { - if (!products || products.length === 0) return ""; - - const product = products.find((p) => p.name.toLowerCase() === name.toLowerCase() && p.active); - return product ? product.id : ""; - }; - - return ( -
- {/* Hero Section */} -
-
-
-
-

- - Private AI Chat - {" "} -
that's truly secure -

-

- End-to-end encryption means your conversations are confidential and protected at - every step. Only you can access your data — not even we can read your chats. -

-
-
- - - Start Chatting - - Log In -
- -
-
-
-
-
-
-
-
-
-
- Encrypted Chat -
-
-
-
-
- AI -
-
- How can I help you today? Your conversation is fully encrypted. -
-
-
-
- I need to discuss some sensitive information. Is this really secure? -
-
- U -
-
-
-
- AI -
-
- Yes, absolutely. Your messages are end-to-end encrypted. Even the server admins - can't read your conversations. We use secure enclaves and open-source code to - verify this. -
-
-
-
-
- End-to-End Encrypted -
-
-
- -
- - - Desktop - - - Download on the App Store - - {!isIOSPlatform && ( - - Get it on Google Play - - )} -
-
- - {/* AI Models Section */} -
-
-
-

- Powerful AI models.{" "} - No data sharing. -

-

- We use full-size open models from the biggest providers. -

-
-
- {AI_MODELS.map((model) => ( -
- {model.alt} -
- {model.labels.map((label, index) => ( - - {label} - - ))} -
-
- ))} -
-
-

-
- None of your data is transmitted to these companies. -
- Get the best without the mess. -

-
-
-
- - {/* Features Section */} -
-
-
-

- Privacy at Every Layer -

-

- Your security is our primary concern. We've engineered Maple to ensure your data - remains yours alone, protected by cutting-edge encryption. -

-
- -
- - - -
-
-
- - {/* Proof/Verification Section */} -
-
-
-
-

- We{" "} - - Prove - {" "} - Our Security -

-

- Unlike other services that merely claim to be secure, we provide cryptographic - proof. Our commitment to transparency means you don't have to trust us - you can - verify it yourself. -

-
- Live Secure Enclave Verification -
-
- -
- - Learn more about our verification system - -
-
-
- {/* Header */} -
-
- Secure Server -
-
- - {/* Main Content */} -
-
- {/* Container for mobile view to ensure proper spacing */} -
- {/* Phone - Mobile */} -
-
-
-
-
-
-
-
-
-
-
-
- - {/* Vertical Connection Line - Mobile */} -
-
-
-
- Encrypted Connection -
-
- - {/* Server - Mobile */} -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - {/* Desktop layout - hidden on mobile */} -
- {/* Phone - Desktop */} -
- {/* Same phone content as mobile */} -
-
-
-
-
-
-
-
-
-
-
- - {/* Horizontal Connection Line - Desktop */} -
-
-
-
-
- Encrypted Connection -
-
-
- - {/* Server - Desktop */} -
- {/* Same server content as mobile */} -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - {/* Crypto Text */} -
-
0x7B4...
-
ECDSA P-384
-
SHA-384
-
-
-
- - {/* Status Indicator */} -
- Secure Enclave Verified -
-
-
-
-
- - {/* Comparison Chart */} - - - {/* Testimonials */} -
-
-
-

- What Our Users Say -

-

- Hear from those who've made privacy a priority with Maple AI. -
- (Quotes are real, names are changed for privacy) -

-
- -
- - - -
-
-
- - {/* Pricing Section */} -
-
-
-

- Simple, Transparent{" "} - Pricing -

-

- No hidden fees. Choose the plan that works for your needs. -

-
- - {/* Promotion Banner */} - {discount?.active && ( -
-
- -
-
-

{discount.name}

-

- {discount.description} -

-
- - {discount.percent_off}% OFF - -
- )} - -
- {PRICING_PLANS.filter((plan) => { - // Always hide Starter plan on marketing page - return plan.name.toLowerCase() !== "starter"; - }).map((plan) => ( - - ))} -
-
-
- - {/* CTA Section */} -
-
-
-
-

- Ready to Chat Securely? -

-

- Join privacy-conscious users who've made the switch to truly secure AI chat. -

-
- - - Start Chatting Securely - - Log In -
-
-
-
-
- -
-
- ); -} diff --git a/frontend/src/components/TopNav.tsx b/frontend/src/components/TopNav.tsx index 45db5f7c7..619148792 100644 --- a/frontend/src/components/TopNav.tsx +++ b/frontend/src/components/TopNav.tsx @@ -60,7 +60,6 @@ export function TopNav() {
Pricing Proof - Teams setMobileMenuOpen(false)}> Proof - setMobileMenuOpen(false)}> - Teams - ("loading"); - const os = useOpenSecret(); - - useEffect(() => { - async function verify() { - try { - const verified = await os.getAttestation(); - await new Promise((resolve) => setTimeout(resolve, 800)); - setStatus(verified ? "verified" : "failed"); - } catch (error) { - console.error("Verification failed:", error); - setStatus("failed"); - } - } - verify(); - }, [os]); - - return ( - - {status === "loading" && ( - <> - - Verifying... - - )} - {status === "verified" && ( - <> - - Verified - - )} - {status === "failed" && ( - <> - - Verification failed - - )} - - ); -} diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index d9dcdcdb3..c469da3ab 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -10,7 +10,6 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as TermsRouteImport } from './routes/terms' -import { Route as TeamsRouteImport } from './routes/teams' import { Route as SignupRouteImport } from './routes/signup' import { Route as RedeemRouteImport } from './routes/redeem' import { Route as ProofRouteImport } from './routes/proof' @@ -34,11 +33,6 @@ const TermsRoute = TermsRouteImport.update({ path: '/terms', getParentRoute: () => rootRouteImport, } as any) -const TeamsRoute = TeamsRouteImport.update({ - id: '/teams', - path: '/teams', - getParentRoute: () => rootRouteImport, -} as any) const SignupRoute = SignupRouteImport.update({ id: '/signup', path: '/signup', @@ -139,7 +133,6 @@ export interface FileRoutesByFullPath { '/proof': typeof ProofRoute '/redeem': typeof RedeemRoute '/signup': typeof SignupRoute - '/teams': typeof TeamsRoute '/terms': typeof TermsRoute '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/password-reset/confirm': typeof PasswordResetConfirmRoute '/verify/$code': typeof VerifyCodeRoute @@ -160,7 +153,6 @@ export interface FileRoutesByTo { '/proof': typeof ProofRoute '/redeem': typeof RedeemRoute '/signup': typeof SignupRoute - '/teams': typeof TeamsRoute '/terms': typeof TermsRoute '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/password-reset/confirm': typeof PasswordResetConfirmRoute '/verify/$code': typeof VerifyCodeRoute @@ -182,7 +174,6 @@ export interface FileRoutesById { '/proof': typeof ProofRoute '/redeem': typeof RedeemRoute '/signup': typeof SignupRoute - '/teams': typeof TeamsRoute '/terms': typeof TermsRoute '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/password-reset/confirm': typeof PasswordResetConfirmRoute '/verify/$code': typeof VerifyCodeRoute @@ -205,7 +196,6 @@ export interface FileRouteTypes { | '/proof' | '/redeem' | '/signup' - | '/teams' | '/terms' | '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/password-reset/confirm' | '/verify/$code' @@ -226,7 +216,6 @@ export interface FileRouteTypes { | '/proof' | '/redeem' | '/signup' - | '/teams' | '/terms' | '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/password-reset/confirm' | '/verify/$code' @@ -247,7 +236,6 @@ export interface FileRouteTypes { | '/proof' | '/redeem' | '/signup' - | '/teams' | '/terms' | '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/password-reset/confirm' | '/verify/$code' @@ -269,7 +257,6 @@ export interface RootRouteChildren { ProofRoute: typeof ProofRoute RedeemRoute: typeof RedeemRoute SignupRoute: typeof SignupRoute - TeamsRoute: typeof TeamsRoute TermsRoute: typeof TermsRoute VerifyCodeRoute: typeof VerifyCodeRoute AuthProviderCallbackRoute: typeof AuthProviderCallbackRoute @@ -285,13 +272,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof TermsRouteImport parentRoute: typeof rootRouteImport } - '/teams': { - id: '/teams' - path: '/teams' - fullPath: '/teams' - preLoaderRoute: typeof TeamsRouteImport - parentRoute: typeof rootRouteImport - } '/signup': { id: '/signup' path: '/signup' @@ -440,7 +420,6 @@ const rootRouteChildren: RootRouteChildren = { ProofRoute: ProofRoute, RedeemRoute: RedeemRoute, SignupRoute: SignupRoute, - TeamsRoute: TeamsRoute, TermsRoute: TermsRoute, VerifyCodeRoute: VerifyCodeRoute, AuthProviderCallbackRoute: AuthProviderCallbackRoute, diff --git a/frontend/src/routes/teams.tsx b/frontend/src/routes/teams.tsx deleted file mode 100644 index bdb4d75f0..000000000 --- a/frontend/src/routes/teams.tsx +++ /dev/null @@ -1,299 +0,0 @@ -import { createFileRoute } from "@tanstack/react-router"; -import { TopNav } from "@/components/TopNav"; -import { FullPageMain } from "@/components/FullPageMain"; -import { MarketingHeader } from "@/components/MarketingHeader"; -import { Shield, Lock, Users, Sparkles, Building2, ArrowRight, FileText } from "lucide-react"; -import { Link } from "@tanstack/react-router"; -import { PricingTier } from "@/components/Marketing"; -import { PRICING_PLANS } from "@/config/pricingConfig"; - -export const Route = createFileRoute("/teams")({ - component: TeamsPage -}); - -function FeatureCard({ - icon: Icon, - title, - description -}: { - icon: React.ElementType; - title: string; - description: string; -}) { - return ( -
-
- -
-

{title}

-

{description}

-
- ); -} - -function TeamsPage() { - return ( - <> - - - - Secure AI for Teams - - } - subtitle={ - - Protect your trade secrets while using AI.
- No data is shared with advertisers, competitors, or third parties. Period. -
- } - /> - - {/* Hero CTA */} -
- - Get Started with Teams - - - Request a Demo - -
- - {/* Features Section */} -
-
-
-

- Why Choose{" "} - Maple Teams? -

-

- Experience the productivity gains of AI without the data tracking. -
Maple Teams scales AI across your entire organization to meet your needs. -

-
- - {/* Centered Image */} -
- A company office with different departments of Accounting, Finance, Marketing, Engineering, and Sales -
- -
- - - -
-
-
- - {/* AI Models Section */} -
-
-
-

- Powerful AI models.{" "} - No data sharing. -

-

- We use open-source models from the biggest providers. -

-
- {(() => { - const models = [ - { src: "/badge-openai-logo.png", alt: "OpenAI", label: "OpenAI GPT-OSS" }, - { src: "/badge-google-logo.png", alt: "Google", label: "Gemma 4" }, - { src: "/badge-kimi-logo.png", alt: "Moonshot", label: "Kimi K2.6" }, - { src: "/badge-zai-logo.png", alt: "Z.ai", label: "GLM 5.2" }, - { src: "/badge-meta-logo.png", alt: "Meta", label: "Meta Llama" } - ]; - return ( -
- {models.map((model) => ( -
- {model.alt} - {model.label} -
- ))} -
- ); - })()} -
-

-
- None of your data is transmitted to these companies. -
- Get the best without the mess. -

-
-
-
- - {/* Security Section */} -
-
-
-

- Security by Design -

-

- You don't share company secrets with competitors, so why should your AI? Whether - you're designing products in a highly competitive market or dealing with sensitive - client information at a firm or non-profit, Teams protects it all. -

-
- - {/* Centered Image */} -
- Two audio hardware engineers collaborating at work using secure Maple AI -
- -
- - - -
-
-
- - {/* How It Works Section */} -
-
-
-

How Maple Teams Works

-
-
    -
  1. Purchase seats for your team
  2. -
  3. Invite members by email
  4. -
  5. Use AI securely with your data, encrypted
  6. -
-
- -
-
-
-
- - For Businesses -
-

- Maple Teams is trusted by organizations in big tech, legal, higher education, - healthcare, finance, consulting, and more. Draft contracts, analyze client data, - and collaborate on sensitive projects with full privacy and compliance. -

-
- Legal professionals working in a modern law office with secure AI assistance -
-
-
-
- - For Non-Profits -
-

- Non-profits and advocacy groups use Maple to securely manage sensitive - information, collaborate on grant writing, and protect the privacy of those they - serve—no IT headaches, just secure, private AI for your mission. -

-
- Social workers collaborating in a non-profit office using secure AI tools -
-
-
-
-
- - {/* Pricing/CTA Section */} -
-
-

Simple, Transparent Pricing

-

- $30/month per seat. All features included. No hidden fees. Cancel anytime. -

-
-
- plan.name === "Team")!.name} - price={PRICING_PLANS.find((plan) => plan.name === "Team")!.price} - description={PRICING_PLANS.find((plan) => plan.name === "Team")!.description} - features={PRICING_PLANS.find((plan) => plan.name === "Team")!.features} - ctaText={PRICING_PLANS.find((plan) => plan.name === "Team")!.ctaText} - popular={PRICING_PLANS.find((plan) => plan.name === "Team")!.popular} - /> -
-
-
- Need a larger deployment or have compliance questions?{" "} - - Contact us - {" "} - for enterprise options. -
-
-
- - - ); -}