PageSourceSearch

https://www.verticelabs.io/_next/static/chunks/0kyndfy0t0810.js?dpl=dpl_Bn3LnEYKctSgivffz65x6uXRYC5c

js verticelabs.io collected 2026-10-06 05:55:55 UTC 51,684 bytes, 12 lines download raw bytes

1;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="eb0d484c-8ca6-e31a-35fc-d0df6f2e0a2c")}catch(e){}}();
2(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,115044,e=>{"use strict";let t={belief:"Build it like it matters."},o={hero:{eyebrow:"For operators in regulated industries.",headline:t.belief,subhead:"Custom software for regulated service businesses. Fixed price, fixed date, and a working environment you can log into in weeks. When we’ve missed, we’ve absorbed it.",ctaPrimary:"Work With Us",ctaSecondary:"See Our Work"},video:{mediaId:"jt79r8vezy",eyebrow:"What we do",headline:"How we quote a fixed price and a fixed date.",body:"Andrew Duncan on why most firms won't commit to both before they start, why we do, and what happens when we're wrong about scope. A minute and a half, with a client who confirms it.",cta:"Work With Us"},principles:{eyebrow:"Principles",headline:"What We Believe.",subhead:"Three commitments that shape every engagement. The full set lives on our About page."},problem:{eyebrow:"The Problem",headline:"Most AI and software projects fail the same way.",body:["Someone describes what they need. A team starts building. Six months later, something ships. It’s not what anyone had in mind. The team built what they were told, not what was meant. The operation didn’t change. The data is still scattered. The investment didn’t move a needle.","The reason is almost always the same: nobody understood the real problem before they started building."],callout:"We start every engagement by mapping the real problem. Not from a slide deck. From the actual work, the actual data, the actual decisions being made. We align on what we’re building before we build it."},vertex:{eyebrow:"The Vertex",headline:"The process behind every engagement.",body:"Two motions. Understand and architect what matters. Commit and measure against the outcome. Built over twenty years. Weeks to impact, not months.",cta:"See how it works"},results:[{client:"Homesite Mortgage",person:"Darin Chase",result:"RESPA Compliance",timeline:"Delivered early, zero cost overruns",description:"RESPA evidence a regulator can verify independently, instead of someone assembling it by hand every quarter. Patent-pending.",slug:"homesite-mortgage",logo:"/images/logos/homesite-mortgage.svg"},{client:"Executive Linguist",person:"Robert Randolph",result:"Enterprise HIPAA Product",timeline:"20 weeks, zero scope changes",description:"Secure messaging and an interpreter mobile app, built to the standard their enterprise clients demanded. Their team never left revenue work.",slug:"executive-linguist",logo:"/images/logos/Executive Linguist-01.svg"},{client:"IMR Billing",person:"Isabel Mingle",result:"80% automated",timeline:"20 hours/week saved",description:"AI agent for medical billing exception processing. Tribal knowledge codified. Scale unlocked.",slug:"imr-billing",logo:"/images/logos/imr-billing-services.svg"}],testimonial:{text:"I’ve talked to a number of firms, and this is one of those few times you picked the right one, and you know it.",name:"Darin Chase",title:"Homesite Mortgage"},solutions:{eyebrow:"Solutions",headline:"What we build.",items:[{badge:"For operations leaders",title:"Operations Automation",description:"Your operation is the bottleneck on growth. We embed with your team, find where the leverage actually is, and build the automation.",audience:"COOs and owners of a regulated operation",href:"/solutions/ai-operations"},{badge:"For revenue leaders",title:"Sales Intelligence",description:"Your customer data is scattered across systems that don’t talk to each other. We connect them, layer AI on top, and put the intelligence in your team’s hands.",audience:"Presidents and COOs",href:"/solutions/sales-intelligence"},{badge:"For operating software businesses",title:"Product Build",description:"You have a product with real customers that can’t reach production inside your compliance regime. Auth, audit trails, data handling and the review are the other 80%. We take it the rest of the way.",audience:"Software businesses with a compliance gate",href:"/solutions/software-product"},{badge:"After the build",title:"Operating Partner",description:"The team that built it stays building. Same engineers, same context. For operators with more on the backlog than the build covered.",audience:"Existing clients",href:"/solutions/operating-partner"}]},proofPoints:{eyebrow:"The Standard",headline:"Every engagement, without exception.",items:[{label:"Staff engineers. No outsourcing.",detail:"Principal and staff-level engineers. US-based. No offshore teams, no subcontracting. The people on your call are the people writing your co
2de."},{label:"Working software in weeks.",detail:"A test environment you can log into and use within weeks. Not a demo. Your software in the cloud."},{label:"We commit to scope.",detail:"The number we quote is the number you pay. The scope we agree to is what gets built. No hourly billing. No surprise overruns."}]},compliance:{eyebrow:"Compliance",headline:"We ship inside the rules.",subhead:"Auth, audit trails, data handling and the compliance review are where most builds lose their timeline. We scope them at the start, not after the demo works.",items:[{title:"HIPAA",detail:"PHI boundaries, access control and audit trails designed in from the first schema, not retrofitted before launch."},{title:"RESPA",detail:"Homesite Mortgage documents 5 of 11 functions on every transaction. The fine is $25,000 per occurrence."},{title:"SOC 2 Type 2",detail:"Change management and access evidence produced by the system, so an auditor gets a report instead of a fire drill."},{title:"HUD",detail:"Program rules encoded in the workflow itself, not tracked in a spreadsheet running alongside it."}]}},a=[{title:"The Code Is the Craft.",detail:"Our delivery infrastructure enforces the standards. Our engineers direct the build. The output is production-grade from the first commit. No technical debt to pay down later."},{title:"We Want to Win.",detail:"We are intrinsically motivated to overachieve. Not for the invoice. For the impact. We build software that helps your business win because that's what we measure ourselves against."},{title:"Excellence, Not the Bare Minimum.",detail:"We don't build to spec and call it done. We anticipate what the end user needs, surface what the requirements missed, and ship something that exceeds what was asked for."},{title:"Show, Don't Tell.",detail:"We don't send status decks. We ship working software. You have a live test environment within weeks. You see it, use it, give feedback on the real thing."},{title:"Honesty Before Everything.",detail:"If what you need isn't what we do, we'll tell you. If the timing isn't right, we'll say so. We only engage when we can make measurable impact."},{title:"Outcome Over Output.",detail:"We don't count hours. We count what changed. The only question that matters is whether the thing we built moved your business forward. That's how we measure ourselves."}],i=[a[0],a[3],a[4]],n={hero:{eyebrow:"How we work.",headline:"The Vertex.",subhead:"Our process for turning what a business needs into software that moves it. Built over twenty years. Weeks to strategic impact, not months."},why:{eyebrow:"Why it exists",headline:"The work isn’t the code.",paragraphs:["Most software firms sell output. Code shipped, tickets closed, features delivered. That’s the business they think they’re in.","The real work of building software isn’t writing code. It’s understanding what needs to be built. It’s finding the trajectory to an outcome that actually matters. It’s making sure what you build moves the needle.","Engineering, at its core, is solving for a desired outcome within real-world constraints. That’s the work. Code, AI models, APIs, integrations, UI. Those are the tools.","Every executive we’ve worked with has been in the same place when we met them. They know where the business needs to go. They can’t always see how to get there. Each decision is a gamble made with partial information."],closing:"Most firms build to the spec. We build to the outcome."},origin:{headline:"A process, not a playbook.",body:"The Vertex is the process Andrew Duncan built after twenty years in technology. Amazon, Slalom, Fortune 500 operators in between. In every role, he watched companies build software to a spec and miss the outcome. The Vertex was his answer. It’s now the firm’s."},trajectory:{eyebrow:"What engineering actually is",headline:"We don’t just build the rocket. We engineer the mission.",paragraphs:["When NASA sends a craft around the moon, engineering isn’t one thing. It’s the rocket, the launch angle, the gravitational assists, the trajectory that uses the moon’s pull as much as the propulsion. Engineered end to end. Aimed at one outcome."],closing:"Your business has its own physics. Your team, your customers, your data, your operations. Most firms build the rocket and ignore the rest. We engineer the mission."},motions:{eyebrow:"How it works",headline:"Two motions.",intro:"That’s how we engineer the mission. One sets direction. One moves the needle. After Week 6 they braid together. Every cycle of delivery sharpens what comes next. The outcome compounds.",items:[{label:"Motion 1",title:"Understand & Architect",timing:"Weeks 1 to 6, then continuous.",phases:[{name:"Understand.",body:["Every engagement starts with making sure we’re solving the right problem. The technology you think you need is often a hypothesis. The outcome is the real target.","We interview your team. Record every conversation. Surface the tribal knowledge that’s been drifting for years. In a company past $20M, the unknown unknowns are the expensive ones. By the time we’re done, you know things about your own operation you didn’t know you knew. That’s yours to keep."]},{name:"Architect.",body:["We architect to the outcome, not a spec. Every decision traces back to what we’ve agreed matters. What gets cut is as important as what gets built.","No two businesses are identical, but the shapes repeat. We’ve charted these courses before. We know where the gravitational fields are."]}],artifact:"By week 6: a map of your operation, a ranked list of moves, a technical plan for the first one, and a shared definition of the outcome that matters most."},{label:"Motion 2",title:"Commit & Measure",timing:"6 to 12 weeks per 
2cycle. Repeats.",phases:[{name:"Commit.",body:["A commitment is earned, not taken. Understand surfaces what’s true. Architect scopes the path. By the time we commit, the risk is out of it. What’s left is the build. Six to twelve week cycles, not small sprints. Real needle-movers.","Agile wanted to be small, measurable iterations. It became capacity management. Teams couldn’t get enough done in two weeks to test a real hypothesis, so they stopped iterating and started staffing. With AI in the loop, a cycle actually builds enough to move something that matters."]},{name:"Measure.",body:["We ship early. What we build is live in your environment while we’re still building it. Your team uses it. Impact becomes measurable week by week. What we learn shapes what ships next.","Every cycle compounds. The second build is sharper than the first. The third is sharper than the second. Momentum is the output."]}],artifact:"By the end of each cycle: a working system in your environment, measurable against the outcome. Production learnings. A sharper next commitment."}]},aiNative:{eyebrow:"How the work actually changes",headline:"Using the tools isn’t the same as changing how you operate.",paragraphs:["Most firms put AI tools in their engineers’ hands and call it transformation. Cursor, Claude Code, Copilot. We use those tools too. Everyone should.","Using the tools isn’t changing how you operate. Most firms still run the same process, the same team structure, the same workflows. They just type less.","The difference is understanding what AI actually unlocks. What works at scale. What fails. Which problems it solves. Which problems it creates. Where human judgment matters, and where it gets in the way.","We know because we’re doing it. Not just in engineering. Across the firm. Every discovery call becomes searchable knowledge the moment it ends. Proposals draft themselves from the transcripts. We automate what other firms still staff.","That’s how we know what works. We’ve built it, deployed it, and run it at volume. At real companies with real revenue."],closing:"Using AI is table stakes. Changing how you operate is the work."},name:{eyebrow:"The name",headline:"Why we call it The Vertex.",paragraphs:["Vertice is the Italian word for the peak. From the Latin vertex: the turning point, the pinnacle, the point where everything converges.","The Vertex is where your team, your data, and AI converge.","It’s the reason you hire a partner like us."],closing:"That’s the point."},inPractice:{eyebrow:"In practice",headline:"What this looks like per engagement.",items:[{title:"Product Build",timing:"8 to 16 weeks",detail:"Product shipped. In your customers’ hands. Built to scale from 10 to 10,000.",href:"/solutions/software-product"},{title:"Operations Automation",timing:"~18 weeks",detail:"Ceiling moved. 80% automated. 4x capacity.",href:"/solutions/ai-operations"},{title:"Sales Intelligence",timing:"~18 weeks",detail:"Answers on demand. Dormant accounts reactivated. White space visible.",href:"/solutions/sales-intelligence"}]}};e.s(["aboutMessages",0,{hero:{eyebrow:"How we work."}},"aiOperationsMessages",0,{hero:{eyebrow:"Your operations should think with you.",headline:"You can’t hire your way out of this.",subhead:"You know you need AI. You don’t know where to point it. We figure out where it goes, then we build it."},walls:{eyebrow:"The Wall",headline:"Every growing operation hits the same ceiling. It just looks different depending on where you sit.",items:[{title:"The scale wall.",detail:"Volume is growing faster than you can hire. Every quarter you’re asking for more headcount and the answer keeps coming back the same. The backlog grows. The SLAs slip."},{title:"The knowledge wall.",detail:"The expertise lives in one person’s head. You tried to train someone. The logic was too complex to transfer. Your business can’t grow past that person’s capacity."},{title:"The bandwidth wall.",detail:"Your team is maxed. You have the vision for what needs to be built, but pulling anyone off current work means something else breaks."}],closing:"The common thread: the operation became the bottleneck. Hiring won’t fix it."},howWeWork:{eyebrow:"How We Work",headline:"Strategy first. Then engineering.",body:"Most operations teams arrive knowing two things: AI can change how they work, and they can’t do it alone. The question isn’t whether to adopt AI. It’s where to point it for the most leverage.",detail:"We start by embedding with your team. We map the operation from the actual work, not a slide deck. We find where human effort is being burned on decisions that don’t require human judgment. Then we build the automation, deploy it into the live operation, and stay until it’s working.",closing:"One team. Strategy and engineering. No handoff.",phases:[{title:"Map.",detail:"We embed with your team and map the real operation. Where time burns. Where decisions repeat. Where scale breaks."},{title:"Build.",detail:"We build the highest-leverage automation first and deploy it live. Your team uses it, gives feedback, and we iterate."},{title:"Accelerate.",detail:"You decide what’s next. Same team, deeper context. Each priority moves faster than the last."}]},outcomes:{eyebrow:"Outcomes",headline:"What it looks like when the ceiling moves.",items:[{title:"80% of manual work, automated.",detail:"Exception processing that took hours runs in minutes. Your team handles the 20% that actually requires judgment."},{title:"4x capacity. Same team.",detail:"Same headcount. Volume that used to break the operation now runs through it."},{title:"Tribal knowledge becomes system knowledge.",detail:"The logic in one person’s head is codified. Training takes weeks instead of months. Hiring gets easier because there’s less to absorb."}]},quotes:[{text:"The agent has given me self-confidence, has saved time for my business, and it has allowed me to dream bigger for my company.",name:"Isabel Mingle",title:"Owner, IMR Billing"}
2,{text:"Your entire pitch had no BS in it. You weren’t trying to convince me of anything. It was just: here’s what we do, here’s what you’re going to get at the end.",name:"Robert Randolph",title:"CEO, Executive Linguist Agency"}],faq:[{question:"How long does it take to see results?",answer:"You should see measurable improvements within the first 4-6 weeks. We deploy the highest-leverage automation first, so the impact is immediate. Full transformation typically takes 3-4 months, but the gains compound as we tackle additional processes."},{question:"Will your team need extensive training?",answer:"Minimal training required. We build the automation to fit your team's existing workflow. The system learns from your team's patterns, not the other way around. Most teams are fully productive with the new system in 2-3 weeks."},{question:"What if we change our processes?",answer:"That's where the real value shows up. Because the intelligence is embedded in the system—not hard-coded—the automation adapts as your operations evolve. We stay engaged during that transition to ensure everything keeps working."},{question:"Can this work for our specific operation?",answer:"Probably. We've built operations automation for everything from logistics to customer service to finance. If there's repetitive decision-making or manual processing, there's usually AI leverage. One call with us will tell you if this makes sense for your business."},{question:"What happens to people whose jobs are automated?",answer:"They shift to higher-value work. In every engagement we've done, automation reduced the tedium, but it didn't reduce headcount. Your team ends up doing the thinking work that actually matters, not drowning in exceptions and data entry."},{question:"How much does this cost?",answer:"It depends on scope and complexity. Most operations projects run between $50K-$200K for initial deployment, with ongoing support contracts after that. We'll size it based on the work we're automating and the gains you'll realize."}]},"brand",0,t,"capabilitiesMessages",0,{hero:{eyebrow:"What we can build.",headline:"Capabilities.",subhead:"You might arrive here thinking “data warehouse” or “mobile app.” That’s the technology. We start with the outcome, then build the technology to get there."},categories:[{title:"Data Warehousing & Analytics",detail:"Unified data layers that connect your CRM, ERP, email, call transcripts, website analytics, and social signals into one queryable source of truth. Snowflake, Aurora, RDS.",outcome:"Ask questions of your data in natural language. Get answers without a developer."},{title:"AI Agents & Automation",detail:"Multi-agent systems that process, classify, route, and act on operational data. Claude, GPT, and Gemini via AWS Bedrock. LangChain orchestration. Exception handling, document verification, intelligent triage, automated decisioning.",outcome:"80% of manual work automated. Your team handles the 20% that requires judgment."},{title:"Custom Web Platforms",detail:"Multi-tenant B2B SaaS, internal tools, client portals, admin dashboards. Next.js, React, TypeScript. Production-grade from day one with auth, billing, and compliance.",outcome:"A platform your customers use daily, built to scale from 10 to 10,000 tenants."},{title:"Mobile Applications",detail:"iOS and Android. React Native for cross-platform, Swift or Kotlin for native performance. Push notifications, offline support, field-optimized workflows.",outcome:"Your team or your customers, productive in the field without calling the office."},{title:"API Integrations",detail:"Salesforce, HubSpot, NetSuite, Twilio, Stripe, Outlook, Teams, Slack, Google Workspace. We connect whatever systems your operation runs on.",outcome:"Systems that talk to each other. No more copy-pasting between tools."},{title:"AI-Powered Search & Recommendations",detail:"Semantic search, vector databases, RAG systems, recommendation engines. Powered by Claude, GPT, or Gemini via AWS Bedrock for data privacy.",outcome:"Your users find what they need by describing it, not by clicking through filters."}
2,{title:"Document Processing & Classification",detail:"Automated ingestion, classification, and extraction from PDFs, faxes, emails, and scanned documents. AWS Textract, Tesseract OCR, LLM-powered parsing, custom rule engines.",outcome:"Documents that used to take hours to process get classified in seconds."},{title:"Infrastructure & DevOps",detail:"AWS, Vercel, Docker, GitHub Actions. CI/CD pipelines, monitoring, alerting, automated deployments, APM. Your cloud account, your IP. We build it, you own it.",outcome:"Production infrastructure that scales without surprising you with a bill or an outage."}]},"homeMessages",0,o,"homepagePrinciples",0,i,"operatingPartnerMessages",0,{hero:{eyebrow:"Launched. Now what?",headline:"Operating Partner.",subhead:"The team that built it stays building. Same engineers. Same context. Outcome-driven, not hours-driven."},why:{eyebrow:"Why This Exists",headline:"Every prospect asks the same question: what happens when you’re done?",body:"The build ships. Customers start using it. Feedback comes in fast. The backlog grows faster than your internal team can absorb. You’re not ready to hire full-time, but you need engineering velocity from a team that already knows the system.",closing:"Operating Partner is the answer before the question becomes a problem."},contexts:{eyebrow:"Two Contexts",headline:"Same engagement. Different reasons.",items:[{title:"For teams after launch.",detail:"You need engineering capacity during early traction. Iterate on customer feedback. Support onboarding. Bridge to your first in-house hire once revenue or funding catches up."},{title:"For operations leaders post-implementation.",detail:"The fire is out. Your team can breathe. Now you can see everything else on the list you couldn’t get to before. Same team. Deeper context. More off your plate."}]},howItWorks:{eyebrow:"How It Works",headline:"Same team. Deeper context. Faster every month.",items:[{title:"Outcome-driven.",detail:"Every month is tied to specific deliverables. New features, iterations on feedback, capability extensions. Not hours logged."},{title:"Same engineers.",detail:"The team that built the system stays on it. No onboarding a new vendor. No context loss. No learning curve."},{title:"You decide what’s next.",detail:"Month to month after the initial commitment. When you’re ready to bring engineering in-house, we help with the transition."}]},vsHiring:{eyebrow:"The Math",headline:"Why this instead of hiring.",items:[{title:"Speed.",detail:"Hiring a senior engineer takes 4-6 months. Operating Partner starts day one."},{title:"Depth.",detail:"One hire gives you one skill set. Operating Partner gives you access to the firm’s full capability: frontend, backend, AI, infrastru
2cture, product thinking."},{title:"Compounding velocity.",detail:"Senior engineers directing teams of AI coding agents, and we push that boundary constantly. Your in-house hire is learning what we’ve already operationalized."},{title:"No management overhead.",detail:"You manage the outcome, not the engineer. No 1:1s, no performance reviews, no PTO coverage."}]},conviction:{text:"We don’t manufacture reasons to stay. When your team is ready to own it, we help with the transition. That’s the point."}},"ourWorkMessages",0,{hero:{eyebrow:"Receipts, not promises.",headline:"Work That Speaks for Itself.",subhead:"Real clients. Real outcomes. The proof behind the pitch."},process:{eyebrow:"How We Deliver",headline:"Same Process. Every Time.",body:"Rigorous discovery before any code. Staff engineers on every engagement. The team that starts is the team that finishes. Working software in your hands within weeks, not months.",closing:"The results above aren’t outliers. They’re what happens when the process is right and the team is experienced enough to execute it."}},"principles",0,a,"saasProductMessages",0,{hero:{eyebrow:"Built like the product matters.",headline:"You built something that works. Production is the other 80%.",subhead:"Auth, audit trails, data handling and the compliance review are where builds lose their timeline. We scope them at the start, not after the demo works. Fixed price, fixed date, staff engineers."},pattern:{eyebrow:"The Pattern",headline:"You’ve probably already tried one of these.",items:[{label:"Offshore team.",detail:"The price looked good. Then you spent months trying to communicate a vision across timezones to a team that builds what you say, not what you meant."},{label:"US agency.",detail:"Sold by a senior person, delivered by juniors. Timeline stretched. Scope creep became scope explosion. The price moved."},{label:"Hobbyist developer.",detail:"Fine for a prototype. Not built for multi-tenancy, role-based access, compliance, or the edge cases that show up when real customers start using it."},{label:"Vibe coded it yourself.",detail:"AI generates code. It doesn’t generate a multi-tenant data model, a billing integration, or an architecture that holds when you go from 5 users to 5,000."}],closing:"The common thread: nobody understood what needed to be built before they started building."},howWeWork:{eyebrow:"How We Work",headline:"Discover. Build. Launch.",phases:[{title:"Discover.",detail:"We build a clickable prototype of your product. You see it, share it with your team, react. We align on exactly what we’re building before we write a line of code."},{title:"Build.",detail:"Staff engineers build the platform. Multi-tenant architecture, billing, compliance, AI capabilities. Working software in your test environment within weeks."},{title:"Launch.",detail:"We deploy to production and support you through early customers. Feedback loops are tight. Iteration is fast. When your users push back, we respond in days."}]},capabilities:{eyebrow:"What You Get",headline:"Production-grade from day one.",items:[{title:"Multi-Tenant Architecture",detail:"Tenant isolation, role-based access, org-level configuration. Built for your first 10 customers and your first 10,000."}
2,{title:"AI Capabilities",detail:"Not a chatbot bolted onto a dashboard. AI woven into the core product. Intelligent workflows, semantic search, automated decision support."},{title:"Billing and Subscriptions",detail:"Stripe integration. Plans, upgrades, downgrades, usage-based pricing, invoicing. Handled from day one."},{title:"Production Infrastructure",detail:"CI/CD pipelines, monitoring, alerting, automated deployments. APM built in. We know before you do if something breaks."},{title:"Auth and Compliance",detail:"SSO, RBAC, audit logging. HIPAA, SOC 2, and industry-specific compliance built into the architecture."},{title:"Admin and Ops Tooling",detail:"The internal tools your team needs to onboard customers, manage accounts, and operate the platform."}]},quotes:[{text:"People always promise you the moon and they can’t deliver. We had to go through the bad experience to know how good it was to have a different group put it together for us.",name:"Tony Spurlin",title:"Founder, Excel Pickleball"},{text:"We developed a plan and executed against it nearly down to the day for product completion. From design to implementation, the team was excellent to work with and truly believed in our product and vision.",name:"Clem McDavid",title:"CEO, HomeLedger"},{text:"You could have easily milked us... and you didn’t. That is a huge deal. Because you could have said we got the other things and then found ways to need some extra budget.",name:"Robert Randolph",title:"CEO, Executive Linguist Agency"}]},"salesIntelligenceMessages",0,{hero:{eyebrow:"Your data knows more than your dashboards show.",headline:"You have the data. You don’t have the answers.",subhead:"Your customer data is scattered across systems that don’t talk to each other. We connect them, layer AI on top, and put the intelligence in your team’s hands."},gap:{eyebrow:"The Gap",headline:"Your sales team has more data on your customers than anyone in your industry. They just can’t get to it.",items:[{title:"The fragmentation problem.",detail:"CRM, email, call recordings, website analytics, social, texts. Every system captures a piece of the picture. None of them talk to each other. The full picture of any account lives in six different tools and one salesperson’s memory."},{title:"The reporting problem.",detail:"When leadership needs an answer, someone files a ticket with the Salesforce admin. Three days later, a dashboard appears. By then, the question has changed. The business moves faster than the reporting can follow."},{title:"The tribal knowledge problem.",detail:"Your best sellers know things about key accounts that aren’t in any system. When they leave, that knowledge leaves with them. The next person starts from zero."}],closing:"The result: your team is making million-dollar decisions on partial information."},howWeWork:{eyebrow:"How We Work",headline:"Connect. Analyze. Activate.",body:"We start the same way we do in every engagement: by understanding the operation. What systems hold the data. How your team actually makes decisions. Where the gaps cost you revenue.",detail:"Then we connect your existing systems into a unified data layer. Salesforce, HubSpot, email, call transcripts, website behavior, social signals. No rip-and-replace. Your team keeps using the tools they already know. On top of that data, we build an AI intelligence layer your team can actually talk to.",phases:[{title:"Connect.",detail:"We integrate your existing systems into one data layer. No rip-and-replace. No new tools to learn."},{title:"Analyze.",detail:"AI processes, correlates, and surfaces patterns across every data source. Trend shifts, account signals, white space."},{title:"Activate.",detail:"Your team asks questions and gets real answers. No tickets. No dashboards. No developer."}]},outcomes:{eyebrow:"Outcomes",headline:"When your team can actually ask, the business gets smarter.",items:[{title:"Dynamic intelligence on every account.",detail:"Know what’s happening across all accounts without clicking through 30 dashboards. Full context, real-time, searchable."},{title:"Dormant clients, reactivated.",detail:"AI identifies accounts that should be active but aren’t. Your team sees who to call, why, and what changed since last contact."},{title:"White space in key accounts, visible.",detail:"A client runs 140 events a year. You handle 20. The other 12
20 are revenue you’re leaving on the table. Now you can see it."},{title:"Collective intelligence as competitive advantage.",detail:"Tribal knowledge that lived in one salesperson’s head is now available to every seller. The institutional memory doesn’t walk out the door."}]},conviction:{text:"This is newer work for us. The pattern is clear. The first engagement is underway. If you’re evaluating this, ask us about it on the call."},faq:[{question:"Do we need to migrate our existing CRM?",answer:"No. We connect your existing systems—Salesforce, HubSpot, whatever you're using—into a unified intelligence layer. Your team keeps using their current tools. Nothing changes about your workflow except the decisions are smarter."},{question:"How quickly can our team start asking questions?",answer:"Usually within 2-3 weeks of launch. The first week is data connection and validation. The second week is training your team on how to ask the right questions. By week three, your reps are getting insights they couldn't get before."},{question:"What happens to our existing dashboards and reports?",answer:"They stay. This isn't a replacement for your reporting infrastructure. It's a complementary layer that lets your team ask natural questions instead of waiting for someone to build a dashboard."},{question:"Can this identify accounts at risk of churn?",answer:"Absolutely. That's one of the first insights we surface. Unusual activity drops, engagement patterns shifting, competitive signals. Your team sees it before the client calls to cancel."},{question:"How much ramp-up do we need from sales leadership?",answer:"Minimal. The intelligence layer adapts to how your team already works. We don't require them to change their process or adopt new tools. The insights just get better as the system learns their patterns."},{question:"What kind of ROI should we expect?",answer:"Varies by business, but typical gains: 10-15% improvement in forecast accuracy, 20-30% reduction in time spent on reporting, and better close rates on reactivation campaigns because you're targeting the right accounts with the right intelligence."}]},"vertexMessages",0,n])},808806,(e,t,o)=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0}),Object.defineProperty(o,"useMergedRef",{enumerable:!0,get:function(){return i}});let a=e.r(961937);function i(e,t){let o=(0,a.useRef)(null),i=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=o.current;e&&(o.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(o.current=n(e,a)),t&&(i.current=n(t,a))},[e,t])}function n(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let o=e(t);return"function"==typeof o?o:()=>e(null)}}("function"==typeof o.default||"object"==typeof o.default&&null!==o.default)&&void 0===o.default.__esModule&&(Object.defineProperty(o.default,"__esModule",{value:!0}),Object.assign(o.default,o),t.exports=o.default)},434308,(e,t,o)=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0}),Object.defineProperty(o,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},289560,(e,t,o)=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0});var a={default:function(){return y},useLinkStatus:function(){return b}};for(var i in a)Object.defineProperty(o,i,{enumerable:!0,get:a[i]});let n=e.r(744066),r=e.r(809639),s=n._(e.r(961937)),l=e.r(346548),u=e.r(134890),d=e.r(808806),h=e.r(398122),c=e.r(484091);e.r(643565);let m=e.r(229711),p=e.r(313952),g=e.r(360779),f=e.r(608513);function y(t){var o,a;let i,n,y,[b,v]=(0,s.useOptimistic)(p.IDLE_LINK_STATUS),k=(0,s.useRef)(null),{href:x,as:T,children:W,prefetch:A=null,passHref:C,replace:S,shallow:I,scroll:P,onClick:N,onMouseEnter:j,onTouchStart:M,legacyBehavior:E=!1,onNavigate:O,transitionTypes:R,ref:Y,unstable_dynamicOnHover:q,...B}=t;i=W,E&&("string"==typeof i||"number"==typeof i)&&(i=(0,r.jsx)("a",{children:i}));let L=s.default.useContext(u.AppRouterContext),D=!1!==A,H=!1!==A?null===(a=A)||"auto"===a?f.FetchStrategy.PPR:f.FetchStrategy.Full:f.FetchStrategy.PPR,F="string"==typeof(o=T||x)?o:(0,l.formatUrl)(o);if(E){if(i?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>
2` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=s.default.Children.only(i)}let U=E?n&&"object"==typeof n&&n.ref:Y,_=s.default.useCallback(e=>(null!==L&&(k.current=(0,p.mountLinkInstance)(e,F,L,H,D,v)),()=>{k.current&&((0,p.unmountLinkForCurrentNavigation)(k.current),k.current=null),(0,p.unmountPrefetchableInstance)(e)}),[D,F,L,H,v]),z={ref:(0,d.useMergedRef)(_,U),onClick(t){E||"function"!=typeof N||N(t),E&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!L||t.defaultPrevented||function(t,o,a,i,n,r,l){if("u">typeof window){let u,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((u=t.currentTarget.getAttribute("target"))&&"_self"!==u||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,g.isLocalURL)(o)){i&&(t.preventDefault(),location.replace(o));return}if(t.preventDefault(),r){let e=!1;if(r({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:h}=e.r(106696);s.default.startTransition(()=>{h(o,i?"replace":"push",!1===n?m.ScrollBehavior.NoScroll:m.ScrollBehavior.Default,a.current,l)})}}(t,F,k,S,P,O,R)},onMouseEnter(e){E||"function"!=typeof j||j(e),E&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),L&&D&&(0,p.onNavigationIntent)(e.currentTarget,!0===q)},onTouchStart:function(e){E||"function"!=typeof M||M(e),E&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),L&&D&&(0,p.onNavigationIntent)(e.currentTarget,!0===q)}};return(0,h.isAbsoluteUrl)(F)?z.href=F:E&&!C&&("a"!==n.type||"href"in n.props)||(z.href=(0,c.addBasePath)(F)),y=E?s.default.cloneElement(n,z):(0,r.jsx)("a",{...B,...z,children:i}),(0,r.jsx)(w.Provider,{value:b,children:y})}e.r(434308);let w=(0,s.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,s.useContext)(w);("function"==typeof o.default||"object"==typeof o.default&&null!==o.default)&&void 0===o.default.__esModule&&(Object.defineProperty(o.default,"__esModule",{value:!0}),Object.assign(o.default,o),t.exports=o.default)},152088,e=>{"use strict";var t=e.i(7284),o=e.i(877130);e.s(["cn",0,function(...e){return(0,o.twMerge)((0,t.clsx)(e))}])},985902,e=>{"use strict";let t,o;var a=e.i(809639),i=e.i(7284);let n=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,r=i.clsx;var s=e.i(152088),l=e.i(961937);let u=(t="inline-flex items-center justify-center font-display font-bold text-sm uppercase tracking-[2px] transition-all duration-300 cursor-pointer disabled:opacity-50 disabled:pointer-events-none",o={variants:{variant:{primary:"bg-electric-violet text-white rounded-full px-8 py-3 hover:bg-white hover:text-electric-violet",secondary:"text-white border-b border-mauve bg-transparent px-0 py-1 hover:text-aqua tracking-[1.44px]",tertiary:"border border-electric-violet text-white rounded-full px-8 py-3 hover:bg-white hover:text-electric-violet",ghost:"text-white bg-transparent hover:text-aqua px-0 py-0"},size:{default:"",lg:"px-10 py-4 text-sm"}},defaultVariants:{variant:"primary",size:"default"}},e=>{var a;if((null==o?void 0:o.variants)==null)return r(t,null==e?void 0:e.class,null==e?void 0:e.className);let{variants:i,defaultVariants:s}=o,l=Object.keys(i).map(t=>{let o=null==e?void 0:e[t],a=null==s?void 0:s[t];if(null===o)return null;let r=n(o)||n(a);return i[t][r]}),u=e&&Object.entries(e).reduce((e,t)=>{let[o,a]=t;return void 0===a||(e[o]=a),e},{});return r(t,l,null==o||null==(a=o.compoundVariants)?void 0:a.reduce((e,t)=>{let{class:o,className:a,...i}=t;return Object.entries(i).every(e=>{let[t,o]=e;return Array.isArray(o)?o.includes({...s,...u}[t]):({...s,...u})[t]===o})?[...e,o,a]:e},[]),null==e?void 0:e.class,null==e?void 0:e.className)}),d=(0,l.forwardRef)(({className:e,variant:t,size:o,...i},n)=>(0,a.jsx)("button",{className:(0,s.cn)(u({variant:t,size:o,className:e})),ref:n,...i}));d.displayName="Button",e.s(["Button",0,d],985902)},610012,541247,e=>{"use strict";var t=e.i(809639),o=e.i(152088),a=e.i(961937);let i=(0,a.forwardRef)(({className:e,label:a,id:i,...n},r)=>(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[a&&(0,t.jsx)("label",{htmlFor:i,className:"font-display text-[11px] font-normal tracking-[2.09px] uppercase leading-[181%] text-silver",children:a}),(0,t.jsx)("input",{id:i,className:(0,o.cn)("h-10 rounded-[5px] bg-iceberg text-[11px] text-[#333] px-3 outline-none focus:ring-2 focus:ring-electric-violet transition-shadow",e),ref:r,...n})]}));i.displayName="Input",e.s(["Input",0,i],610012);let n=(0,a.forwardRef)(({className:e,label:a,id:i,...n},r)=>(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[a&&(0,t.jsx)("label",{htmlFor:i,className:"font-display text-[11px] font-normal tracking-[2.09px] uppercase leading-[181%] text-silver",children:a}),(0,t.jsx)("textarea",{id:i,className:(0,o.cn)("min-h-[120px] rounded-[5px] bg-iceberg text-[11px] text-[#333] px-3 py-3 outline-none resize-y focus:ring-2 focus:ring-electric-violet transition-shadow",e),ref:r,...n})]}));n.displayName="Textarea",e.s(["Textarea",0,n],541247)},807096,e=>{"use strict";var t=e.i(809639),o=e.i(493831),a=e.i(961937),i=e.i(610012),n=e.i(541247),r=e.i(985902),s=e.i(289560);e.s(["ContactForm",0,function({embedded:e=!1}={}){let[l,u]=(0,a.useState)("idle");async function d(e){e.preventDefault(),u("submitting");let t=new FormData(e.currentTarget),a=t.get("email"),i=crypto.randomUUID(),n=new URLSearchParams(window.location.search).get("ttclid")||void 0,r=function(e){if("u"<typeof document)return;let t=document.cookie.match(RegExp("(?:^|; )"+e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}("_ttp");"function"==typeof window.ttq?.identify&&window.ttq.identify({email:a}),"function"==typeof window.ttq?.track&&window.ttq.track("Contact",{},{event_id:i});let s={name:`${t.get("firstName")} ${t.get("lastName")}`,company:t.get("company"),email:a,message:t.get("message"),eventId:i,tiktok:{ttclid:n,ttp:r,url:window.location.href}};try{if(!(await fetch("/api/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})).ok)throw Error("Failed to submit");u("success")}
2catch(e){o.captureException(e,{tags:{component:"contact-form"}}),u("error")}}let h=e?"":"bg-black-pearl border border-white/10 rounded-2xl p-10 max-md:p-6";return"success"===l?(0,t.jsxs)("div",{className:h,children:[(0,t.jsx)("h3",{className:"font-display text-2xl font-medium text-white mb-3",children:"Thanks. We'll be in touch shortly."}),(0,t.jsx)("p",{className:"text-iceberg text-[17px] leading-[168%] mb-6",children:"We've received your message and will follow up soon to schedule time or provide the info you need."}),(0,t.jsx)("p",{className:"text-silver text-sm",children:"The Vertice Labs team"})]}):(0,t.jsxs)("div",{className:h,children:[!e&&(0,t.jsx)("h3",{className:"font-display text-2xl font-medium text-white mb-6",children:"Get in Touch"}),(0,t.jsxs)("form",{onSubmit:d,className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,t.jsx)(i.Input,{id:"firstName",name:"firstName",label:"First Name",required:!0}),(0,t.jsx)(i.Input,{id:"lastName",name:"lastName",label:"Last Name",required:!0})]}),(0,t.jsx)(i.Input,{id:"company",name:"company",label:"Company"}),(0,t.jsx)(i.Input,{id:"email",name:"email",label:"Email",type:"email",required:!0}),(0,t.jsx)(n.Textarea,{id:"message",name:"message",label:"Briefly Describe Your Software Initiative"}),(0,t.jsxs)("p",{className:"text-[12px] text-silver leading-relaxed",children:["By submitting this form, you agree to our"," ",(0,t.jsx)(s.default,{href:"/privacy-policy",className:"text-mauve hover:underline",children:"Privacy Policy"}),"."]}),"error"===l&&(0,t.jsxs)("p",{className:"text-error text-sm",children:["Oops! Something went wrong. Send your message to"," ",(0,t.jsx)("a",{href:"mailto:[email protected]",className:"text-mauve underline",children:"[email protected]"})]}),(0,t.jsx)(r.Button,{type:"submit",disabled:"submitting"===l,className:"self-start mt-2",children:"submitting"===l?"Sending...":"Send Message"})]})]})}])},582365,e=>{"use strict";e.s(["mergeClasses",0,(...e)=>e.filter((e,t,o)=>!!e&&""!==e.trim()&&o.indexOf(e)===t).join(" ").trim()])},813073,974960,e=>{"use strict";e.s(["default",0,{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}],813073),e.s(["hasA11yProp",0,e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1}],974960)},793739,e=>{"use strict";var t=e.i(961937),o=e.i(813073),a=e.i(974960),i=e.i(582365);let n=(0,t.createContext)({}),r=(0,t.forwardRef)(({color:e,size:r,strokeWidth:s,absoluteStrokeWidth:l,className:u="",children:d,iconNode:h,...c},m)=>{let{size:p=24,strokeWidth:g=2,absoluteStrokeWidth:f=!1,color:y="currentColor",className:w=""}=(0,t.useContext)(n)??{},b=l??f?24*Number(s??g)/Number(r??p):s??g;return(0,t.createElement)("svg",{ref:m,...o.default,width:r??p??o.default.width,height:r??p??o.default.height,stroke:e??y,strokeWidth:b,className:(0,i.mergeClasses)("lucide",w,u),...!d&&!(0,a.hasA11yProp)(c)&&{"aria-hidden":"true"},...c},[...h.map(([e,o])=>(0,t.createElement)(e,o)),...Array.isArray(d)?d:[d]])});e.s(["default",0,r],793739)},54864,e=>{"use strict";var t=e.i(961937),o=e.i(582365);let a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,o)=>o?o.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var i=e.i(793739);e.s(["default",0,(e,n)=>{let r=(0,t.forwardRef)(({className:r,...s},l)=>(0,t.createElement)(i.default,{ref:l,iconNode:n,className:(0,o.mergeClasses)(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...s}));return r.displayName=a(e),r}],54864)},140802,e=>{"use strict";e.i(488736);var t=e.i(809639),o=e.i(961937),a=e.i(807464),i=e.i(134174),n=e.i(736986),r=e.i(370338),s=e.i(250438),l=o,u=e.i(753942);function d(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class h extends l.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,s.isHTMLElement)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,o=(0,s.isHTMLElement)(e)&&e.offsetWidth||0,a=(0,s.isHTMLElement)(e)&&e.offsetHeight||0,i=getComputedStyle(t),n=this.props.sizeRef.current;n.height=parseFloat(i.height),n.width=parseFloat(i.width),n.top=t.offsetTop,n.left=t.offsetLeft,n.right=o-n.width-n.left,n.bottom=a-n.height-n.top}return null}componentDidUpdate(){}render(){return this.props.children}}function c({children:e,isPresent:a,anchorX:i,anchorY:n,root:r,pop:s}){let m=(0,l.useId)(),p=(0,l.useRef)(null),g=(0,l.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:f}=(0,l.useContext)(u.MotionConfigContext),y=function(...e){return o.useCallback(function(...e){return t=>{let o=!1,a=e.map(e=>{let a=d(e,t);return o||"function"!=typeof a||(o=!0),a});if(o)return()=>{for(let t=0;t<a.length;t++){let o=a[t];"function"==typeof o?o():d(e[t],null)}}}}(...e),e)}(p,e.props?.ref??e?.ref);return(0,l.useInsertionEffect)(()=>{let{width:e,height:t,top:o,left:l,right:u,bottom:d}=g.current;if(a||!1===s||!p.current||!e||!t)return;let h="left"===i?`left: ${l}`:`right: ${u}`,c="bottom"===n?`bottom: ${d}`:`top: ${o}`;p.current.dataset.motionPopId=m;let y=document.createElement("style");f&&(y.nonce=f);let w=r??document.head;return w.appendChild(y),y.sheet&&y.sheet.insertRule(`
3          [data-motion-pop-id="${m}"] {
4            position: absolute !important;
5            width: ${e}px !important;
6            height: ${t}px !important;
7            ${h}px !important;
8            ${c}px !important;
9          }
10        `),()=>{p.current?.removeAttribute("data-motion-pop-id"),w.contains(y)&&w.removeChild(y)}},[a]),(0,t.jsx)(h,{isPresent:a,childRef:p,sizeRef:g,pop:s,children:!1===s?e:l.cloneElement(e,{ref:y})})}let m=({children:e,initial:a,isPresent:n,onExitComplete:s,custom:l,presenceAffectsLayout:u,mode:d,anchorX:h,anchorY:m,root:g})=>
10{let f=(0,i.useConstant)(p),y=(0,o.useId)(),w=!0,b=(0,o.useMemo)(()=>(w=!1,{id:y,initial:a,isPresent:n,custom:l,onExitComplete:e=>{for(let t of(f.set(e,!0),f.values()))if(!t)return;s&&s()},register:e=>(f.set(e,!1),()=>f.delete(e))}),[n,f,s]);return u&&w&&(b={...b}),(0,o.useMemo)(()=>{f.forEach((e,t)=>f.set(t,!1))},[n]),o.useEffect(()=>{n||f.size||!s||s()},[n]),e=(0,t.jsx)(c,{pop:"popLayout"===d,isPresent:n,anchorX:h,anchorY:m,root:g,children:e}),(0,t.jsx)(r.PresenceContext.Provider,{value:b,children:e})};function p(){return new Map}var g=e.i(718015);let f=e=>e.key||"";function y(e){let t=[];return o.Children.forEach(e,e=>{(0,o.isValidElement)(e)&&t.push(e)}),t}e.s(["AnimatePresence",0,({children:e,custom:r,initial:s=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:d="sync",propagate:h=!1,anchorX:c="left",anchorY:p="top",root:w})=>{let[b,v]=(0,g.usePresence)(h),k=(0,o.useMemo)(()=>y(e),[e]),x=h&&!b?[]:k.map(f),T=(0,o.useRef)(!0),W=(0,o.useRef)(k),A=(0,i.useConstant)(()=>new Map),C=(0,o.useRef)(new Set),[S,I]=(0,o.useState)(k),[P,N]=(0,o.useState)(k);(0,n.useIsomorphicLayoutEffect)(()=>{T.current=!1,W.current=k;for(let e=0;e<P.length;e++){let t=f(P[e]);x.includes(t)?(A.delete(t),C.current.delete(t)):!0!==A.get(t)&&A.set(t,!1)}},[P,x.length,x.join("-")]);let j=[];if(k!==S){let e=[...k];for(let t=0;t<P.length;t++){let o=P[t],a=f(o);x.includes(a)||(e.splice(t,0,o),j.push(o))}return"wait"===d&&j.length&&(e=j),N(y(e)),I(k),null}let{forceRender:M}=(0,o.useContext)(a.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:P.map(e=>{let o=f(e),a=(!h||!!b)&&(k===P||x.includes(o));return(0,t.jsx)(m,{isPresent:a,initial:(!T.current||!!s)&&void 0,custom:r,presenceAffectsLayout:u,mode:d,root:w,onExitComplete:a?void 0:()=>{if(C.current.has(o)||!A.has(o))return;C.current.add(o),A.set(o,!0);let e=!0;A.forEach(t=>{t||(e=!1)}),e&&(M?.(),N(W.current),h&&v?.(),l&&l())},anchorX:c,anchorY:p,children:e},o)})})}],140802)},463352,e=>{"use strict";let t=(0,e.i(54864).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],463352)},523820,e=>{"use strict";var t=e.i(809639),o=e.i(961937),a=e.i(112086),i=e.i(140802),n=e.i(463352);function r({open:e,onClose:s,children:l}){let u=(0,o.useCallback)(e=>{"Escape"===e.key&&s()},[s]);return(0,o.useEffect)(()=>(e&&(document.addEventListener("keydown",u),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",u),document.body.style.overflow=""}),[e,u]),(0,t.jsx)(i.AnimatePresence,{children:e&&(0,t.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,t.jsx)(a.motion.div,{initial:{opacity:0}
10,animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"absolute inset-0 bg-black/70 backdrop-blur-sm",onClick:s}),(0,t.jsxs)(a.motion.div,{initial:{opacity:0,scale:.95,y:10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},transition:{duration:.2,ease:"easeOut"},className:"relative z-10 w-full max-w-lg mx-4 bg-violet border border-white/10 rounded-2xl p-8 md:p-10",children:[(0,t.jsx)("button",{onClick:s,className:"absolute top-4 right-4 text-silver hover:text-white transition-colors cursor-pointer","aria-label":"Close",children:(0,t.jsx)(n.X,{size:20})}),l]})]})})}var s=e.i(807096);function l({open:e,onClose:o}){return(0,t.jsxs)(r,{open:e,onClose:o,children:[(0,t.jsx)("h3",{className:"font-display text-2xl font-medium text-white mb-6",children:"Request a Consultation"}),(0,t.jsx)(s.ContactForm,{embedded:!0},e?"open":"closed")]})}let u=(0,o.createContext)({openModal:()=>{},closeModal:()=>{}});e.s(["ConsultModalProvider",0,function({children:e}){let[a,i]=(0,o.useState)(!1),n=(0,o.useCallback)(()=>i(!0),[]),r=(0,o.useCallback)(()=>i(!1),[]);return(0,t.jsxs)(u.Provider,{value:{openModal:n,closeModal:r},children:[e,(0,t.jsx)(l,{open:a,onClose:r})]})},"useConsultModal",0,function(){return(0,o.useContext)(u)}],523820)}]);
11
12//# debugId=eb0d484c-8ca6-e31a-35fc-d0df6f2e0a2c

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.