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}”
-
-
-
-
-
- );
-}
-
-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 ? (
-
- Coming Soon
-
- ) : productId ? (
- // When we have a product ID, create a button that handles the navigation
-
{
- // Use window.location to navigate with search params
- window.location.href = `/signup?next=/pricing&selected_plan=${productId}`;
- }}
- className="mt-auto py-3 px-6 rounded-lg text-center font-medium transition-all duration-300
- dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
- bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
- border border-[hsl(var(--purple))]/30 hover:border-[hsl(var(--purple))]
- shadow-[0_0_15px_rgba(var(--purple-rgb),0.2)] hover:shadow-[0_0_25px_rgba(var(--purple-rgb),0.3)]"
- >
- {ctaText}
-
- ) : (
- // 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
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
- {!isIOSPlatform && (
-
-
-
- )}
-
-
-
- {/* AI Models Section */}
-
-
-
-
- Powerful AI models.{" "}
- No data sharing.
-
-
- We use full-size open models from the biggest providers.
-
-
-
- {AI_MODELS.map((model) => (
-
-
-
- {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 */}
-
-
- {/* 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 */}
-
-
- {/* 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 */}
-
-
-
-
-
-
-
-
-
-
-
-
- {/* 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.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 */}
-
-
-
-
-
-
-
-
-
-
-
-
- {/* How It Works Section */}
-
-
-
-
How Maple Teams Works
-
-
- Purchase seats for your team
- Invite members by email
- Use AI securely with your data, encrypted
-
-
-
-
-
-
-
-
- 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.
-
-
-
-
-
-
-
-
- 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.
-
-
-
-
-
-
-
-
-
- {/* 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.
-
-
-
-
- >
- );
-}