Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion components/ContactBookingSection.js
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,10 @@ export default function ContactBookingSection({
</p>
)}

<p className="text-sm text-white/70">
You&apos;ll hear back from a founder within one
business day.
</p>
<div className="flex flex-wrap gap-3">
<button
type="submit"
Expand Down Expand Up @@ -228,7 +232,9 @@ export default function ContactBookingSection({
<div className="mt-8 space-y-4">
<div className="rounded-xl border border-emerald-300/30 bg-emerald-500/10 px-4 py-4">
<p className="text-sm text-emerald-50/95">
Thanks, you can now select a time directly below.
Thanks — you&apos;ll hear from a founder within
one business day. Or skip the wait and book a
time directly below.
</p>
</div>
<BookingEmbed name={form.name} email={form.email} />
Expand Down
6 changes: 3 additions & 3 deletions components/Developers.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ export default function Developers() {
<div className={styles.row} id="start">
<div className="relative flex items-center justify-center mx-4 sm:mx-8 md:mx-12 lg:mx-20 max-w-5xl">
<div className="grid grid-cols-1 break-words w-full">
<h2 id="start" className="text-xl mt-8 mb-4 font-medium text-center tracking-tight">
<h2 className="text-xl mt-8 mb-4 font-medium text-center tracking-tight">
Getting Started
</h2>
{buildWarnings.length > 0 && (
Expand All @@ -119,8 +119,8 @@ export default function Developers() {
</div>
)}
<p className="font-light mt-2 mb-6 mx-auto text-center max-w-2xl text-sm text-white/75">
OpenAdapt is an open-source platform for GUI automation with ML.
Record human demonstrations, train models, and deploy agents that can operate any software.
OpenAdapt is an open-source demonstration compiler for desktop automation.
Record a workflow once and it compiles into a deterministic, self-healing automation that runs on your own machines.
</p>

{/* New uv-first Installation Section */}
Expand Down
51 changes: 51 additions & 0 deletions components/Faq.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
export const faqItems = [
{
question: 'What is OpenAdapt?',
answer: 'OpenAdapt is an open-source demonstration compiler for desktop automation. You record yourself doing a task once, and OpenAdapt compiles that recording into a deterministic, self-healing script that runs on your own machines. Healthy runs make no cloud model calls, so each run costs nothing.',
},
{
question: 'How is OpenAdapt different from RPA tools like UiPath?',
answer: 'Traditional RPA makes you hand-author brittle selectors and flowcharts, and the bot breaks when the UI changes. OpenAdapt compiles the automation from a demonstration instead — no selector authoring — and when the UI drifts it heals itself, proposing the fix as a reviewable diff. It also runs entirely on your machines.',
},
{
question: 'How is OpenAdapt different from AI computer-use agents?',
answer: "Computer-use agents re-reason through your task with a large model on every run, so they are slow, non-deterministic, and bill you per run. OpenAdapt compiles the task once and replays it deterministically for free. A model is only invoked to heal the script when the UI drifts.",
},
{
question: 'Does my data leave my machines?',
answer: 'No. OpenAdapt is local-first by architecture: recordings, compiled scripts, and replays all stay on your own infrastructure. Nothing is uploaded to run an automation. PII/PHI scrubbing tooling is included for teams that need to sanitize captured data before anyone — human or model — sees it.',
},
{
question: 'Is OpenAdapt free?',
answer: 'Yes — OpenAdapt is MIT-licensed open source, free to use and modify. For regulated deployments in healthcare and lending we run commercial pilots with hands-on support: we help compile your first workflows, set up review, and keep the automations healthy. Book a demo to talk about a pilot.',
},
{
question: 'What software does OpenAdapt work with?',
answer: "Anything with a screen. Because OpenAdapt watches pixels and inputs rather than APIs or browser internals, it works with desktop applications, web apps, and software delivered over VDI or RDP — including EMRs and loan origination systems that cloud automation tools can't reach.",
},
]

export default function Faq() {
return (
<section id="faq" className="mx-auto max-w-3xl px-4 py-12">
<h2 className="text-center text-xl font-medium text-white/95 mb-8 tracking-tight">
Frequently asked questions
</h2>
<dl className="space-y-6">
{faqItems.map((item) => (
<div
key={item.question}
className="rounded-xl border border-white/10 bg-white/5 p-5"
>
<dt className="text-base font-semibold text-white/95">
{item.question}
</dt>
<dd className="mt-2 text-sm font-light leading-relaxed text-white/75">
{item.answer}
</dd>
</div>
))}
</dl>
</section>
)
}
8 changes: 8 additions & 0 deletions components/Footer.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ export default function Footer() {
Email
</a>
</div>
<div className={styles.footerLinks}>
<a href="/solutions/healthcare" className={styles.link}>
Healthcare
</a>
<a href="/solutions/lending" className={styles.link}>
Lending
</a>
</div>
<div className={styles.footerLinks}>
<a href="/privacy-policy" className={styles.link}>
Privacy Policy
Expand Down
61 changes: 61 additions & 0 deletions components/HowItWorks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import styles from './HowItWorks.module.css'

const steps = [
{
number: '1.0',
name: 'Record',
description:
'Do the task once while OpenAdapt captures screens and inputs.',
},
{
number: '2.0',
name: 'Compile',
description:
'The demonstration becomes an editable script: visual anchors, per-step assertions, parameters.',
},
{
number: '3.0',
name: 'Run',
description:
'Deterministic replay in milliseconds, locally, no per-run model calls.',
},
{
number: '4.0',
name: 'Self-heal',
description:
'When the UI drifts, a fallback ladder finds the target and proposes the fix as a diff.',
},
{
number: '5.0',
name: 'Audit',
description:
'Every run produces an illustrated report: what ran, what it saw, what changed.',
},
]

export default function HowItWorks() {
return (
<section id="how-it-works" className={styles.section}>
<div className={styles.inner}>
<h2 className={styles.heading}>How it works</h2>
<p className={styles.subheading}>
A demonstration compiler: one recording in, a deterministic
automation out.
</p>
<ol className={styles.steps}>
{steps.map((step) => (
<li key={step.number} className={styles.step}>
<span className={styles.number}>{step.number}</span>
<div className={styles.body}>
<h3 className={styles.name}>{step.name}</h3>
<p className={styles.description}>
{step.description}
</p>
</div>
</li>
))}
</ol>
</div>
</section>
)
}
95 changes: 95 additions & 0 deletions components/HowItWorks.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
.section {
background: rgba(0, 0, 30, 1);
padding: 72px 20px 80px;
scroll-margin-top: 24px;
}

.inner {
max-width: 760px;
margin: 0 auto;
}

.heading {
color: rgba(255, 255, 255, 0.95);
font-size: 24px;
font-weight: 500;
letter-spacing: -0.01em;
text-align: center;
margin: 0 0 8px;
}

.subheading {
color: rgba(255, 255, 255, 0.6);
font-size: 15px;
font-weight: 300;
text-align: center;
margin: 0 0 44px;
}

.steps {
list-style: none;
margin: 0;
padding: 0;
border-top: 1px solid rgba(86, 13, 248, 0.25);
}

.step {
display: flex;
align-items: baseline;
gap: 22px;
padding: 22px 8px;
border-bottom: 1px solid rgba(86, 13, 248, 0.25);
}

.number {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 15px;
color: #60a5fa;
min-width: 42px;
text-align: right;
flex-shrink: 0;
}

.body {
flex: 1;
}

.name {
display: inline;
color: rgba(255, 255, 255, 0.95);
font-size: 16px;
font-weight: 600;
letter-spacing: 0.01em;
margin: 0;
}

.name::after {
content: ' — ';
color: rgba(255, 255, 255, 0.4);
font-weight: 300;
}

.description {
display: inline;
color: rgba(255, 255, 255, 0.7);
font-size: 15px;
font-weight: 300;
line-height: 1.6;
margin: 0;
}

@media (max-width: 640px) {
.section {
padding: 52px 16px 60px;
}

.step {
gap: 14px;
padding: 18px 4px;
}

.number {
min-width: 34px;
font-size: 14px;
}
}
83 changes: 32 additions & 51 deletions components/IndustriesGrid.js
Original file line number Diff line number Diff line change
Expand Up @@ -621,68 +621,41 @@ export default function IndustriesGrid({
}) {
const gridData = [
{
title: 'HR',
title: 'Healthcare clinics',
href: '/solutions/healthcare',
descriptions:
'Boost team productivity in HR operations. Automate candidate sourcing using LinkedIn Recruiter, LinkedIn Talent Solutions, GetProspect, Reply.io, outreach.io, Gmail/Outlook, and more.',
logo: '/images/noun-human-resources.svg',
},
{
title: 'Law',
descriptions:
'Streamline legal procedures and case management. Automate tasks like generating legal documents, managing contracts, tracking cases, and conducting legal research with LexisNexis, Westlaw, Adobe Acrobat, Microsoft Excel, and more.',
logo: '/images/noun-law.svg',
},
{
title: 'Insurance',
descriptions:
'Optimize productivity in insurance. Automate policy management, claims processing, data analysis, and document collaboration with PolicyCenter, Xactimate, Excel, SharePoint, PowerBI, and more.',
logo: '/images/noun-insurance.svg',
},
{
title: 'Healthcare',
descriptions:
'Advance patient care and streamline operations. Automate revenue cycle management, clinical documentation, and scheduling in Cerner, Epic, and more.',
'Referral and fax intake, EMR data entry and extraction — desktop and VDI EMRs included. PHI handling stays fully local.',
logo: '/images/noun-healthcare.svg',
},
{
title: 'Finance',
title: 'Mortgage & lending ops',
href: '/solutions/lending',
descriptions:
'Enhance efficiency and compliance in financial services. Automate tasks like data entry, reporting, and portfolio management using tools like Excel, Bloomberg, QuickBooks, and more.',
'Loan-file data extraction and entry in desktop LOS software like Encompass. Borrower data stays in your environment.',
logo: '/images/noun-finance.svg',
},
{
title: 'Logistics',
descriptions:
'Automate tasks with Transportation Management Systems (TMS), Freight Management Systems (FMS), Load Tracking Systems, and Document Management Systems for efficient tracking, scheduling, and financial record-keeping.',
logo: '/images/noun-freight.svg',
},
{
title: 'Pharmacy',
descriptions:
'Enhance accuracy and inventory management. Automate prescription management, inventory control, medication dispensing, and patient records with Krol (Telus), Filware, Healthwatch, and more.',
logo: '/images/noun-pharmacy.svg',
},
{
title: 'Customer Support',
title: 'Other regulated back-offices',
href: '#book',
descriptions:
'Automate customer inquiries, ticket management, collaboration, data analysis, and communication using OracleHCM, Workday, SAP, Excel, SharePoint, Outlook, LinkedIn, Teams, PowerBI, and more.',
logo: '/images/noun-customer-support.svg',
},
{
title: 'Sales Development',
descriptions:
'Automate repetitive tasks in OracleHCM, LinkedIn, SalesForce, and Gmail for lead generation, prospecting, and communication to optimize revenue growth.',
logo: '/images/noun-sales-development.svg',
'Document-heavy, compliance-bound workflows — tell us yours.',
logo: '/images/noun-law.svg',
},
]

const industryMessages = {
'Healthcare clinics':
"I'm interested in automating referral intake and EMR data entry at our clinic.",
'Mortgage & lending ops':
"I'm interested in automating loan-file data entry and extraction in our LOS.",
'Other regulated back-offices':
"I'm interested in automating a document-heavy workflow in a regulated back-office.",
}

const getDataFromTitle = (title) => {
return {
email: '',
message:
title === 'Let us build for you'
? ''
: `I'm interested in how OpenAdapt can help me make ${title} better.`,
message: industryMessages[title] || '',
}
}

Expand All @@ -705,11 +678,13 @@ export default function IndustriesGrid({
</div>
<div className="mt-12">
<h2 className="text-center text-xl font-medium text-white/95 mb-3 tracking-tight">
Transform Your Industry with OpenAdapt
Built for regulated back-offices
</h2>
<p className={styles.p}>
From demonstration to automation in minutes. Just do the task once and OpenAdapt learns from watching.
No prompt engineering. No scripting. No brittle selectors.
Record the workflow once and OpenAdapt compiles it into an
automation your team can review, run, and audit — entirely
on your own machines. No brittle selectors to hand-author.
No per-run model costs.
<br />
<a href="https://github.com/OpenAdaptAI/openadapt-privacy">
Built-in PII/PHI scrubbing
Expand All @@ -730,7 +705,13 @@ export default function IndustriesGrid({
alt={grid.title}
/>
</div>
<h2 className={styles.title}>{grid.title}</h2>
<h2 className={styles.title}>
{grid.href ? (
<Link href={grid.href}>{grid.title}</Link>
) : (
grid.title
)}
</h2>
<ul className={styles.descriptions}>
{grid.descriptions
.split('\n')
Expand Down
Loading