diff --git a/README.md b/README.md
index 02ece22..ebe064c 100644
--- a/README.md
+++ b/README.md
@@ -40,9 +40,19 @@ cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings
```
-### Landing page & billing checkout
+### Landing page, billing checkout & Vercel
-ShadowMap now ships with a minimalist marketing landing page, localized pricing, and optional Stripe Checkout integration.
+ShadowMap now includes a minimalist, luxury-inspired landing page that mirrors the in-app experience. The Rust server renders it dynamically with localized pricing and optional Stripe checkout, while a static export in `landing-page/index.html` is ready for Vercel hosting.
+
+#### Keep the static export in sync
+
+```bash
+cargo run --bin export_landing
+```
+
+The helper binary regenerates `landing-page/index.html` from the latest templates in `src/web/views.rs`. Run it after copy or styling updates so commits (and deployments) always ship the current markup.
+
+#### Optional: enable Stripe checkout
1. Export your Stripe credentials and price IDs (test or live):
```bash
@@ -59,10 +69,7 @@ ShadowMap now ships with a minimalist marketing landing page, localized pricing,
export STRIPE_CANCEL_URL=https://shadowmap.io/pricing
```
-
-2. (Optional) Point the lead-capture database at a custom SQLite location. The server defaults to
- `sqlite://shadowmap.db` in the working directory and will automatically create the
- `landing_leads` table when it starts:
+2. (Optional) Point the lead-capture database at a custom SQLite location. The server defaults to `sqlite://shadowmap.db` in the working directory and creates the `landing_leads` table automatically:
```bash
export DATABASE_URL=sqlite:///var/lib/shadowmap/leads.db
```
@@ -72,9 +79,19 @@ ShadowMap now ships with a minimalist marketing landing page, localized pricing,
cargo run --bin shadowmap-server
```
-4. Visit `http://localhost:8080/` for the public landing page and `http://localhost:8080/app` for the authenticated recon dashboard. Every checkout attempt stores the work email, plan, and region in
- the `landing_leads` table for follow-up.
+4. Visit `http://localhost:8080/` for the public landing page and `http://localhost:8080/app` for the recon dashboard. Checkout attempts log the work email, plan, and region to the `landing_leads` table for follow-up.
+
+#### Deploy the static page to Vercel
+
+1. Install the [Vercel CLI](https://vercel.com/cli) and authenticate (`vercel login`).
+2. From the repository root, deploy the static export:
+ ```bash
+ vercel --prod
+ ```
+ The included `vercel.json` registers `landing-page/index.html` as the build artifact and rewrites all routes to it.
+3. Future updates only require re-running `cargo run --bin export_landing`, committing the refreshed HTML, and redeploying with `vercel --prod`.
+> **Note:** Checkout buttons remain disabled in the static export until the server exposes Stripe keys, keeping the hosted page aligned with production capabilities.
### Supply Chain Security
diff --git a/landing-page/index.html b/landing-page/index.html
new file mode 100644
index 0000000..42c40cd
--- /dev/null
+++ b/landing-page/index.html
@@ -0,0 +1,778 @@
+
+
+
+
+
+ ShadowMap – Luxury Reconnaissance for Revenue Teams
+
+
+
+
+
+
+
+
+
+
+
ShadowMap Intelligence Suite
+
Precision reconnaissance without the cognitive overhead.
+
ShadowMap condenses thousands of signals into a curated dossier so your revenue team can respond with conviction. Luxury-grade reporting, tuned for fast-moving sellers and operators who can’t afford noise.
Trusted by boutique security firms and elite GTM teams.
+
+ Helios
+ Blackshore
+ SignalForge
+ Quietline
+
+
+
+
+
+
+
14x
+
Average increase in qualified pipeline sourced from recon insights.
+
+
+
92%
+
Reduction in analyst hours spent triaging low-signal data.
+
+
+
<48 hrs
+
Time to first actionable dossier for new customer targets.
+
+
+
+
+
Designed for decisive teams
+
Every interaction with ShadowMap is engineered to lower cognitive load and amplify urgency. Surface only the signals that help you secure the meeting and close the deal.
+
+
+ 01
+
Command-center clarity
+
Unified view across attack surface, misconfigurations, and business risk with context-rich summaries your clients actually understand.
+
+
+ 02
+
Executive-grade collateral
+
Presentations, talking points, and proposals generated automatically so your team can move from recon to revenue without rework.
+
+
+ 03
+
Concierge insight layering
+
Our operators fine-tune automations with human analysis to deliver luxury-level polish on every engagement.
+
+
+
+
+
+
The ShadowMap experience
+
From the first scan to final briefing, each step is choreographed to reinforce confidence and accelerate close rates.
+
+
+ Scope
+
Curated intake
+
Drop in a domain or account name and apply bespoke guardrails. We tailor the crawl to your opportunity.
+
+
+ Signal
+
Adaptive intelligence
+
Machine precision blended with expert review eliminates noise and distills the angles that win conversations.
+
+
+ Stage
+
Concierge delivery
+
Receive beautifully composed dossiers, ready-to-send outreach, and live enablement support on demand.
+
+
+
+
+
+
“ShadowMap reinvented our reconnaissance motion. Meetings that used to take weeks of manual research now book within days because every insight is packaged for executive consumption.”
+
+
+
+
diff --git a/src/bin/export_landing.rs b/src/bin/export_landing.rs
new file mode 100644
index 0000000..362204c
--- /dev/null
+++ b/src/bin/export_landing.rs
@@ -0,0 +1,72 @@
+use std::fs;
+use std::path::Path;
+
+use anyhow::Result;
+use shadowmap::web::{render_landing_page, LandingPageContext, PricingPlan};
+
+fn main() -> Result<()> {
+ let context = LandingPageContext {
+ publishable_key: None,
+ plans: vec![
+ PricingPlan {
+ id: "starter",
+ name: "Starter",
+ summary: "Launch automation-grade recon for boutique agencies and red teams.",
+ ideal_for: "Solo operators",
+ highlight: false,
+ usd_cents: 7900,
+ eur_cents: 7500,
+ features: &[
+ "Unlimited on-demand reconnaissance jobs",
+ "Live subdomain, DNS, and takeover detection",
+ "Automated PDF & JSON reporting exports",
+ "Email support with 1-business-day SLA",
+ ],
+ checkout_ready_us: false,
+ checkout_ready_eu: false,
+ },
+ PricingPlan {
+ id: "growth",
+ name: "Growth",
+ summary: "Scale your practice with team workspaces, automations, and real-time monitoring.",
+ ideal_for: "Agencies & MSSPs",
+ highlight: true,
+ usd_cents: 15900,
+ eur_cents: 14900,
+ features: &[
+ "Everything in Starter plus scheduled monitoring",
+ "Team workspaces with role-based access control",
+ "Slack and webhook alerting for high-risk findings",
+ "Dedicated success engineer and quarterly playbooks",
+ ],
+ checkout_ready_us: false,
+ checkout_ready_eu: false,
+ },
+ PricingPlan {
+ id: "enterprise",
+ name: "Enterprise",
+ summary: "For global security organizations that need private deployments and custom workflows.",
+ ideal_for: "Global teams",
+ highlight: false,
+ usd_cents: 34900,
+ eur_cents: 32900,
+ features: &[
+ "Private cloud or on-premise deployment options",
+ "Custom modules and API surface for internal tooling",
+ "Advanced compliance reporting & SOC2 documentation",
+ "24/7 incident response with named TAM",
+ ],
+ checkout_ready_us: false,
+ checkout_ready_eu: false,
+ },
+ ],
+ };
+
+ let html = render_landing_page(&context);
+ let output_dir = Path::new("landing-page");
+ fs::create_dir_all(output_dir)?;
+ fs::write(output_dir.join("index.html"), html)?;
+ println!("Wrote {}", output_dir.join("index.html").display());
+
+ Ok(())
+}
diff --git a/src/lib.rs b/src/lib.rs
index 5e3921b..d92ed65 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -12,6 +12,7 @@ mod ports;
mod reporting;
mod social;
mod takeover;
+pub mod web;
pub use agent::BoxError;
pub use agent::{AutonomousReconAgent, ReconEngine, ReconReport};
diff --git a/src/web/views.rs b/src/web/views.rs
index c1df41c..19d6209 100644
--- a/src/web/views.rs
+++ b/src/web/views.rs
@@ -38,7 +38,10 @@ pub fn render_landing_page(context: &LandingPageContext) -> String {
let mut feature_list = String::new();
for feature in plan.features {
feature_list.push_str(&format!(
- "
\n ✓\n {}\n
",
+ r#"
+ ✓
+ {}
+
"#,
escape(feature)
));
}
@@ -51,36 +54,33 @@ pub fn render_landing_page(context: &LandingPageContext) -> String {
""
};
let badge = if plan.highlight {
- "Most popular"
+ r#"Preferred"#
} else {
""
};
let cta_state = if plan.checkout_ready_us || plan.checkout_ready_eu {
""
} else {
- " data-disabled-copy=\"Email us to activate payments\""
+ r#" data-disabled-copy="Email us to activate payments""#
};
plan_cards.push_str(&format!(
- r#"
+ r#"
{badge}
-
-
-
{name}
- {ideal}
-
+
+ For {ideal}
+
{name}
{summary}
-
-
- /month
+
+
+ per seat / month
-
+
{features}
-
-
-"#,
+
+ "#,
highlight_class = highlight_class,
id = escape(plan.id),
name = escape(plan.name),
@@ -101,6 +101,7 @@ pub fn render_landing_page(context: &LandingPageContext) -> String {
.as_ref()
.map(|key| escape(key))
.unwrap_or_else(|| escape(""));
+ let year = Utc::now().format("%Y").to_string();
format!(
r##"
@@ -108,48 +109,58 @@ pub fn render_landing_page(context: &LandingPageContext) -> String {
- ShadowMap – Precision Reconnaissance Without the Busywork
+ ShadowMap – Luxury Reconnaissance for Revenue Teams
-
+
@@ -430,90 +571,129 @@ pub fn render_landing_page(context: &LandingPageContext) -> String {
-
ShadowMap Recon Platform
-
Land more clients with enterprise-grade recon in minutes.
-
Feed ShadowMap a target domain and receive a prioritized report covering subdomains, misconfigurations, cloud assets, and takeover risks. Built by operators for revenue teams who need answers fast.
Precision reconnaissance without the cognitive overhead.
+
ShadowMap condenses thousands of signals into a curated dossier so your revenue team can respond with conviction. Luxury-grade reporting, tuned for fast-moving sellers and operators who can’t afford noise.
Trusted by boutique security firms and elite GTM teams.
+
+ Helios
+ Blackshore
+ SignalForge
+ Quietline
+
+
14x
-
Faster than manual reconnaissance workflows.
+
Average increase in qualified pipeline sourced from recon insights.
92%
-
Of beta customers closed new business within 30 days.
+
Reduction in analyst hours spent triaging low-signal data.
-
4.9/5
-
Average rating from security teams across the US & EU.
+
<48 hrs
+
Time to first actionable dossier for new customer targets.
-
Why fast-moving teams choose ShadowMap
+
Designed for decisive teams
+
Every interaction with ShadowMap is engineered to lower cognitive load and amplify urgency. Surface only the signals that help you secure the meeting and close the deal.
-
-
Agentic reconnaissance
-
Autonomous workflows pair our curated fingerprint database with graph intelligence to surface exploitable insight automatically.
-
-
-
Enterprise ready
-
Privacy-first architecture, EU data residency options, and SOC2-aligned controls keep compliance teams comfortable.
-
-
-
Sales enablement focus
-
Actionable narratives, not raw logs—our reports plug straight into proposals and client portals.
-
+
+ 01
+
Command-center clarity
+
Unified view across attack surface, misconfigurations, and business risk with context-rich summaries your clients actually understand.
+
+
+ 02
+
Executive-grade collateral
+
Presentations, talking points, and proposals generated automatically so your team can move from recon to revenue without rework.
+
+
+ 03
+
Concierge insight layering
+
Our operators fine-tune automations with human analysis to deliver luxury-level polish on every engagement.
+
-
-
-
-
Transparent pricing for US & EU teams
-
Choose your operating region to see localized pricing. Every plan includes unlimited workspaces, automated monitoring, and concierge onboarding.
+
+
The ShadowMap experience
+
From the first scan to final briefing, each step is choreographed to reinforce confidence and accelerate close rates.
+
+
+ Scope
+
Curated intake
+
Drop in a domain or account name and apply bespoke guardrails. We tailor the crawl to your opportunity.
-
-
-
+
+ Signal
+
Adaptive intelligence
+
Machine precision blended with expert review eliminates noise and distills the angles that win conversations.
+
+
+ Stage
+
Concierge delivery
+
Receive beautifully composed dossiers, ready-to-send outreach, and live enablement support on demand.
-
-{plan_cards}
+
+
+
+
“ShadowMap reinvented our reconnaissance motion. Meetings that used to take weeks of manual research now book within days because every insight is packaged for executive consumption.”
+ — Ava Collins, Managing Director, Blackshore Advisory
+
-
+
+
+
+
+
Pricing
+
Choose the cadence that suits your firm
+
+
+
+
+
+
+
Every plan includes concierge onboarding, guided workflows, and premium reporting templates. Upgrade or pause anytime.
+
+
+{plan_cards}
+
+
+
-
-
Frequently asked
-
-
-
Can we self-host ShadowMap?
-
Growth and Enterprise plans support private cloud deployments with automated updates and optional managed services.
-
-
-
Do you support procurement in the EU?
-
Yes—pricing is VAT-ready and we issue localized invoices through Stripe. Need a DPA? We provide one-click execution.
-
-
-
What does onboarding look like?
-
You'll get a dedicated security engineer, custom playbooks, and Slack-based support within one business day of signing up.
-
+
+
Let’s orchestrate your next decisive win
+
Book a private strategy call and see how ShadowMap elevates every client touchpoint.