Skip to content
Merged
47 changes: 47 additions & 0 deletions @api/careers-submit.post.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import type { ApiFunctionsContext } from '@redocly/config';

const GOOGLE_APPS_SCRIPT_URL = process.env.GOOGLE_APPS_SCRIPT_URL;
const MAX_RETRIES = 3;
const RETRY_DELAY_MS = 500;

export default async function (request: Request, context: ApiFunctionsContext) {
if (!GOOGLE_APPS_SCRIPT_URL) {
return context.status(503).json({ error: 'GOOGLE_APPS_SCRIPT_URL is not configured' });
}

let body: unknown;
try {
body = await request.json();
} catch {
return context.status(400).json({ error: 'Invalid JSON body' });
}

try {
const res = await postWithRetry(GOOGLE_APPS_SCRIPT_URL, body);
const data = await res.json().catch(() => ({}));
return context.status(res.status).json(data);
} catch {
return context.status(502).json({ error: 'Upstream request failed' });
}
}

async function postWithRetry(
url: string,
body: unknown,
retries = MAX_RETRIES,
): Promise<Response> {
for (let attempt = 0; attempt <= retries; attempt++) {
try {
const res = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
});
if (res.ok || attempt === retries) return res;
} catch {
if (attempt === retries) throw new Error('Upstream request failed');
}
await new Promise((r) => setTimeout(r, RETRY_DELAY_MS));
}
throw new Error('Upstream request failed');
}
10 changes: 7 additions & 3 deletions @theme/components/Navbar/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,21 @@ export function Navbar({ className }: NavbarProps): JSX.Element | null {
const isDocsOrLearnPage = isDocsPage || isLearnPage;
const isEditorPage = pathname === '/editor';
const isPreviewPage = pathname === '/preview';
const isCareersJobPage =
typeof pathname === 'string' && /^\/careers\/.+/.test(pathname);

const isDarkModeAllowed = isDocsOrLearnPage || isEditorPage || isPreviewPage || isCareersJobPage;

React.useEffect(() => {
if (!isDocsPage && !isLearnPage && !isEditorPage && !isPreviewPage) {
if (!isDarkModeAllowed) {
document.documentElement.classList.replace('dark', 'light');
} else {
document.documentElement.classList.replace(
'light',
localStorage.getItem('colorSchema') || 'light',
);
}
}, [isDocsPage, isLearnPage, isEditorPage, isPreviewPage]);
}, [isDarkModeAllowed]);

const menu = themeConfig.navbar?.items;

Expand Down Expand Up @@ -125,7 +129,7 @@ export function Navbar({ className }: NavbarProps): JSX.Element | null {
<RightPanelWrapper>
<LanguagePicker onChangeLanguage={changeLanguage} onlyIcon alignment="end" />
<ColorModeSwitcherWrapper
isVisible={isDocsOrLearnPage || pathname?.startsWith('/learn') || isEditorPage || isPreviewPage}
isVisible={isDarkModeAllowed}
isMobileOpen={isOpen}
>
<ColorModeSwitcher />
Expand Down
3 changes: 3 additions & 0 deletions @theme/templates/OpenPosition.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import Page from '@redocly/marketing-pages/templates/OpenPosition.js';

export default Page;
28 changes: 14 additions & 14 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"author": "team@redocly.com",
"license": "UNLICENSED",
"dependencies": {
"@redocly/marketing-pages": "0.1.47",
"@redocly/marketing-pages": "0.1.51",
"@redocly/realm": "0.132.0-next.0",
"buffer": "^6.0.3",
"highlight-words-core": "^1.2.3",
Expand Down
58 changes: 58 additions & 0 deletions pages/careers/data-engineer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
template: ../../@theme/templates/OpenPosition
title: Data Engineer
locations:
- Remote
employmentType: Full time
slug: /careers/data-engineer
---

#### About the role
We’re looking for a data scientist who bridges technical depth with curiosity. You’ll help Redocly turn data into insight — driving smarter product, growth, and business decisions. This role combines data governance, analytics, and development. You’ll build reliable data pipelines, improve observability, and uncover meaningful patterns that guide how we grow and evolve. You’ll work closely with product and technical teams to analyze user behavior, run experiments, build predictive models, and turn complex findings into actionable recommendations. You’ll also design and support systems for collecting, transforming, and analyzing data across our stack.

#### What you'll do
- Analyze product and user behavior to uncover trends, bottlenecks, and opportunities.
- Design and evaluate experiments (A/B tests) to guide product and growth decisions.
- Build and maintain data pipelines, ETL processes, and dashboards for analytics and reporting.
- Develop and validate statistical and machine learning models for prediction, segmentation, and forecasting.
- Design and optimize data models for new features and analytics (e.g., using dbt).
- Work with event-driven architectures and standards like AsyncAPI and CloudEvents.
- Collaborate with engineers to improve data quality, consistency, and governance across systems.
- Use observability and tracing tools (e.g., OpenTelemetry) to monitor and improve performance.
- Create visualizations and reports that clearly communicate results to technical and non-technical audiences.
- Support existing frontend and backend systems related to analytics and data processing.
- Champion experimentation, measurement, and data-driven decision-making across teams.

#### What we’re looking for
- 5+ years of software engineering experience, with 3+ years focused on data science or analytics
- Strong SQL skills and experience with data modeling (dbt preferred)
- Solid understanding of statistics, hypothesis testing, and experimental design
- Proven experience in data governance, analytics, and backend systems
- Familiarity with columnar databases or analytics engines (ClickHouse, Postgres, etc.)
- Experience with modern data visualization tools
- Strong analytical mindset, attention to detail, and clear communication
- Passionate about clarity, simplicity, and quality in both data and code
- English proficiency: Upper-Intermediate or higher

#### Nice to have
- Understanding of product analytics and behavioral data
- Experience with causal inference or time-series modeling
- Strong proficiency with Node.js, React, JavaScript, and TypeScript
- Experience with frontend or backend performance optimization
- Familiarity with Git-based workflows and CI/CD for data pipelines

#### How you’ll know you’re doing a great job
- Teams make better product decisions, faster, because of your insights.
- Data pipelines are trusted, observable, and performant.
- Experiments drive measurable product and business outcomes.
- Metrics and dashboards are used across teams — not just built once.
- You’re the go-to person for clarity when questions arise about “what the data says.”.

#### About Redocly
Redocly builds tools that accelerate API ubiquity. Our platform helps teams create world-class developer experiences — from API documentation and catalogs to internal developer hubs and public showcases. We’re a globally distributed team that values clarity, autonomy, and craftsmanship. You’ll work alongside engineers, designers, and writers who love building tools that make technical work simpler and more joyful.

#### Life at Redocly
Redocly is a fun, supportive, and high-performing environment. We celebrate small victories, stay curious, and keep focused on progress. If you enjoy complex challenges, meaningful data, and building systems that empower others — you’ll feel right at home here.

#### Trying our products while applying?
Add `RECR-` to your name during trial registration, so we can spot candidates among trial users. Thanks!
67 changes: 67 additions & 0 deletions pages/careers/developer-marketer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
template: ../../@theme/templates/OpenPosition
title: Developer Marketer
locations:
- Ukraine, Office
employmentType: Full time
slug: /careers/developer-marketer
---

Redocly helps companies build better developer experiences. Our products (Reunite, Redoc, Revel, Reef, and Realm) empower teams to create, manage, and share APIs beautifully. We're looking for a senior sales professional who can help more developers and organizations discover that value — and convert trials into long-term customers.

#### What you'll do
You'll focus on helping teams move from trying Redocly to loving and buying it. You'll combine technical understanding, empathy for developers, and data-driven sales skills to grow conversions and revenue. You'll:
- Engage with free-trial users to understand their goals and blockers.
- Create follow-up sequences and campaigns that feel helpful, not pushy.
- Use CRM and analytics tools to identify high-potential accounts.
- Work with our product and technical teams to clarify use cases, pricing, and ROI.
- Help improve onboarding flows and trial experiences based on user feedback.
- Write clear, authentic sales copy and outreach messages.
This is not a cold-calling role — it's a thoughtful, consultative position...

#### You'll love this role if you...
- Understand technical products or developer-facing tools.
- Are comfortable using and interpreting data (CRM, analytics, funnels).
- Have strong written and verbal communication skills.
- Enjoy collaborating with marketing and product teams.
- Can balance empathy and persuasion — helping customers make confident decisions.
Bonus points if you've worked in SaaS, API, or developer-tools sales before.

#### How you'll know you're doing a great job
- Conversion rate from trial to paid increases.
- Absolute number of new paying customers grows steadily.
- Sales cycles shorten as you improve communication and clarity.
- Customer feedback improves, with users describing smoother onboarding and better support.

#### How you’ll know you’re doing a great job
- Teams make better product decisions, faster, because of your insights.
- Data pipelines are trusted, observable, and performant.
- Experiments drive measurable product and business outcomes.
- Metrics and dashboards are used across teams — not just built once.
- You’re the go-to person for clarity when questions arise about “what the data says.”.

### 30-60-90 day plan

#### First 30 days
- Learn Redocly’s product lineup, sales funnel, and customer segments.
- Review current trial process, analytics, and CRM data.
- Reach out to a small set of trial users to test messaging.

#### Next 30 days
- Design and implement an improved trial-to-conversion sequence.
- Begin A/B testing messages and tracking engagement.
- Collaborate with the developer marketer on shared campaigns.

#### Next 30 days
- Optimize the funnel with data insights.
- Build a repeatable playbook for engaging trials.
- Identify expansion or upsell opportunities among active customers.

#### About Redocly
Redocly builds tools that accelerate API ubiquity. Our platform helps teams create world-class developer experiences — from API documentation and catalogs to internal developer hubs and public showcases. We’re a globally distributed team that values clarity, autonomy, and craftsmanship. You’ll work alongside engineers, designers, and writers who love building tools that make technical work simpler and more joyful.

#### Life at Redocly
Redocly is a fun, supportive, and high-performing environment. We celebrate small victories, stay curious, and keep focused on progress. If you enjoy complex challenges, meaningful data, and building systems that empower others — you’ll feel right at home here.

#### Trying our products while applying?
Add RECR- to your name during trial registration, so we can spot candidates among trial users. Thanks!
Loading
Loading