From 64642d8bf7f8499b3290830c52c81983bd229b30 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 30 Jul 2026 08:07:43 +0000 Subject: [PATCH 1/2] feat(core,intelligence): add Mobile Engineer archetype Adds a Mobile Engineer role archetype (iOS/Android, native and cross-platform) with 28 keywords, evaluation weights, 12 action verbs, and 6 anti-patterns, sourced from real job postings and resume-review guides (cited in research/sources.md). Closes issue #1. Registered in both archetype registries (core and intelligence) to avoid widening the gap documented in docs/ARCHETYPE_GAP_AUDIT.md, with matching content and tests in each. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_0171nbXwVrmCpKKFqCKa5N5o --- README.md | 3 +- docs/ARCHETYPE_GAP_AUDIT.md | 3 +- .../core/src/__tests__/archetypes.test.ts | 35 ++++++++++ packages/core/src/archetypes/index.ts | 66 ++++++++++++++++++ .../src/__tests__/intelligence.test.ts | 7 ++ packages/intelligence/src/archetypes/index.ts | 10 ++- .../src/archetypes/mobile-engineer.ts | 68 +++++++++++++++++++ research/sources.md | 5 ++ 8 files changed, 193 insertions(+), 4 deletions(-) create mode 100644 packages/core/src/__tests__/archetypes.test.ts create mode 100644 packages/intelligence/src/archetypes/mobile-engineer.ts diff --git a/README.md b/README.md index 40cd5e0..1b526d1 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,7 @@ pack): - QA / Test Engineer - DevOps / SRE - Data Engineer +- Mobile Engineer **Want to add your role?** Use the [New Archetype issue template](.github/ISSUE_TEMPLATE/new_archetype.md) and submit a PR. Each archetype needs 15+ keywords, evaluation weights, action verbs, and anti-patterns. @@ -206,7 +207,7 @@ pack): ### v0.1 (Current Sprint — MVP) - [x] Core evaluation engine with 6 dimensions -- [x] 7 role archetypes +- [x] 8 role archetypes - [x] Universal anti-pattern detection - [x] CLI: basic evaluate command - [x] Web UI: paste and score screen (local demo) diff --git a/docs/ARCHETYPE_GAP_AUDIT.md b/docs/ARCHETYPE_GAP_AUDIT.md index 8a34490..2f47a60 100644 --- a/docs/ARCHETYPE_GAP_AUDIT.md +++ b/docs/ARCHETYPE_GAP_AUDIT.md @@ -94,6 +94,7 @@ registries being out of sync — is filed as a follow-up issue and | `software-engineer` | Software Engineer | ❌ | ✅ | ❌ (eval fixtures only) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ (eval fixture `swe-strong`) | Lives only in `intelligence`. Not exposed in the live CLI/Web UI. | | `product-manager` | Product Manager | ❌ | ✅ | ❌ (eval fixtures only) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ (eval fixture `pm-strong`) | Lives only in `intelligence`. **Plain PM detection is broken in the live system** — see *Highest-priority gap* below. | | `data-ml-engineer` | Data & ML Engineer | ❌ | ✅ | ❌ (eval fixtures only) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ (eval fixture `data-ml-strong`) | Lives only in `intelligence`. Different id from `core.data-engineer`. | +| `mobile-engineer` | Mobile Engineer | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (`core.__tests__/archetypes.test.ts`, `intelligence` detect test) | Closes issue #1. Added to both registries with matching content, keeping the two in sync rather than widening the gap. No `intelligence` eval fixture yet. | **Notes on the table:** @@ -123,7 +124,7 @@ registries being out of sync — is filed as a follow-up issue and | AI Engineer | Issue #81, PR #69 (rubric v1 base) | ✅ Implemented in `core` as `ai-engineer` | `intelligence` has `software-engineer` (broader) but not `ai-engineer`. | | QA / Test Engineer | Issue #5 (closed), PR #28 | ✅ Implemented in `core` as `qa-test-engineer` | | | Machine Learning Engineer | Issue #3 | ❌ Missing | Closest existing: `intelligence.data-ml-engineer` (and `core.ai-engineer`). No plain `ml-engineer` (scikit-learn, classical ML) anywhere. | -| Mobile Engineer (iOS/Android) | Issue #1 | ❌ Missing | From `scripts/create-issues.sh` seed list. | +| Mobile Engineer (iOS/Android) | Issue #1 | ✅ Implemented in both `core` (`mobile-engineer`) and `intelligence` (`mobile-engineer`) | Closed by the follow-up PR to this audit. | | Security Engineer | Issue #2 | ❌ Missing | From `scripts/create-issues.sh` seed list. | | Full-Stack Engineer | Issue #4 | ❌ Missing | From `scripts/create-issues.sh` seed list. | | Technical Program Manager | Issue #6 | ❌ Missing | From `scripts/create-issues.sh` seed list. | diff --git a/packages/core/src/__tests__/archetypes.test.ts b/packages/core/src/__tests__/archetypes.test.ts new file mode 100644 index 0000000..57ac7f9 --- /dev/null +++ b/packages/core/src/__tests__/archetypes.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, it } from "vitest"; +import { detectArchetype, getArchetype } from "../archetypes/index.js"; + +describe("mobile-engineer archetype", () => { + const archetype = getArchetype("mobile-engineer"); + + it("is registered under the core registry", () => { + expect(archetype.name).toBe("Mobile Engineer"); + }); + + it("has 15-30 keywords", () => { + expect(archetype.keywords.length).toBeGreaterThanOrEqual(15); + expect(archetype.keywords.length).toBeLessThanOrEqual(30); + }); + + it("has 10+ action verbs", () => { + expect(archetype.actionVerbs.length).toBeGreaterThanOrEqual(10); + }); + + it("has 5+ anti-patterns", () => { + expect(archetype.antiPatterns.length).toBeGreaterThanOrEqual(5); + }); + + it("has evaluation weights summing to 1.0", () => { + const sum = Object.values(archetype.evaluationWeights).reduce((a, b) => a + b, 0); + expect(sum).toBeCloseTo(1, 5); + }); + + it("is detected from a representative mobile resume", () => { + const text = + "Built iOS features in Swift and SwiftUI, shipped Android screens with Kotlin " + + "and Jetpack Compose, released through TestFlight and Google Play Console."; + expect(detectArchetype(text).id).toBe("mobile-engineer"); + }); +}); diff --git a/packages/core/src/archetypes/index.ts b/packages/core/src/archetypes/index.ts index e061481..bb5cc88 100644 --- a/packages/core/src/archetypes/index.ts +++ b/packages/core/src/archetypes/index.ts @@ -492,6 +492,72 @@ ARCHETYPES.set("data-engineer", { ], }); +ARCHETYPES.set("mobile-engineer", { + id: "mobile-engineer", + name: "Mobile Engineer", + description: "iOS/Android engineers building native and cross-platform mobile apps", + keywords: [ + "swift", + "swiftui", + "objective-c", + "uikit", + "kotlin", + "jetpack compose", + "android sdk", + "xcode", + "android studio", + "react native", + "flutter", + "dart", + "kotlin multiplatform", + "core data", + "room", + "coroutines", + "combine", + "mvvm", + "ci/cd", + "fastlane", + "app store connect", + "google play console", + "testflight", + "crashlytics", + "firebase", + "rest api", + "push notifications", + "deep linking", + ], + evaluationWeights: { + shippedEvidence: 0.3, + quantifiedImpact: 0.2, + toolingVisibility: 0.2, + atsCompatibility: 0.1, + keywordMatch: 0.1, + publicProof: 0.1, + }, + actionVerbs: [ + "Built", + "Shipped", + "Launched", + "Optimized", + "Reduced", + "Migrated", + "Refactored", + "Integrated", + "Released", + "Automated", + "Debugged", + "Improved", + ], + antiPatterns: [ + "familiar with mobile development", + "worked on the app", + "various mobile frameworks", + "responsible for app maintenance", + "passionate about mobile technologies", + "experience with cross-platform development", + ], +}); + // --- Registry API --- export function getArchetype(id: string): RoleArchetype { diff --git a/packages/intelligence/src/__tests__/intelligence.test.ts b/packages/intelligence/src/__tests__/intelligence.test.ts index f5bce41..250f0e8 100644 --- a/packages/intelligence/src/__tests__/intelligence.test.ts +++ b/packages/intelligence/src/__tests__/intelligence.test.ts @@ -37,6 +37,13 @@ describe("detectArchetype", () => { expect(detectArchetype(text).id).toBe("product-manager"); }); + it("detects a mobile engineer resume", () => { + const text = + "Built iOS features in Swift and SwiftUI, shipped Android screens with Kotlin " + + "and Jetpack Compose, released through TestFlight and Google Play Console."; + expect(detectArchetype(text).id).toBe("mobile-engineer"); + }); + it("falls back to the default on no signal", () => { expect(detectArchetype("hello world").id).toBe("software-engineer"); }); diff --git a/packages/intelligence/src/archetypes/index.ts b/packages/intelligence/src/archetypes/index.ts index 5cfcd87..49e0f6b 100644 --- a/packages/intelligence/src/archetypes/index.ts +++ b/packages/intelligence/src/archetypes/index.ts @@ -1,11 +1,17 @@ import type { Archetype } from "@cv-builder/schemas"; import { dataMlEngineer } from "./data-ml-engineer.js"; +import { mobileEngineer } from "./mobile-engineer.js"; import { productManager } from "./product-manager.js"; import { softwareEngineer } from "./software-engineer.js"; // Register new archetypes here. Software Engineer is the fallback when nothing // else clearly matches. -export const ARCHETYPES: Archetype[] = [softwareEngineer, productManager, dataMlEngineer]; +export const ARCHETYPES: Archetype[] = [ + softwareEngineer, + productManager, + dataMlEngineer, + mobileEngineer, +]; export const DEFAULT_ARCHETYPE = softwareEngineer; @@ -17,4 +23,4 @@ export function listArchetypes(): Archetype[] { return ARCHETYPES; } -export { dataMlEngineer, productManager, softwareEngineer }; +export { dataMlEngineer, mobileEngineer, productManager, softwareEngineer }; diff --git a/packages/intelligence/src/archetypes/mobile-engineer.ts b/packages/intelligence/src/archetypes/mobile-engineer.ts new file mode 100644 index 0000000..110b36d --- /dev/null +++ b/packages/intelligence/src/archetypes/mobile-engineer.ts @@ -0,0 +1,68 @@ +import type { Archetype } from "@cv-builder/schemas"; + +export const mobileEngineer: Archetype = { + id: "mobile-engineer", + name: "Mobile Engineer", + description: "iOS/Android engineers building native and cross-platform mobile apps", + keywords: [ + "swift", + "swiftui", + "objective-c", + "uikit", + "kotlin", + "jetpack compose", + "android sdk", + "xcode", + "android studio", + "react native", + "flutter", + "dart", + "kotlin multiplatform", + "core data", + "room", + "coroutines", + "combine", + "mvvm", + "ci/cd", + "fastlane", + "app store connect", + "google play console", + "testflight", + "crashlytics", + "firebase", + "rest api", + "push notifications", + "deep linking", + ], + evaluationWeights: { + shippedEvidence: 0.3, + quantifiedImpact: 0.2, + toolingVisibility: 0.2, + atsCompatibility: 0.1, + keywordMatch: 0.1, + publicProof: 0.1, + }, + actionVerbs: [ + "Built", + "Shipped", + "Launched", + "Optimized", + "Reduced", + "Migrated", + "Refactored", + "Integrated", + "Released", + "Automated", + "Debugged", + "Improved", + ], + antiPatterns: [ + "familiar with mobile development", + "worked on the app", + "various mobile frameworks", + "responsible for app maintenance", + "passionate about mobile technologies", + "experience with cross-platform development", + ], + version: "1.0.0", +}; diff --git a/research/sources.md b/research/sources.md index 5c41724..400d8da 100644 --- a/research/sources.md +++ b/research/sources.md @@ -27,6 +27,11 @@ Last updated: May 2026 | Machine Learning Engineer | ML engineers build, evaluate, productionize, optimize, monitor, and improve ML models; core areas include model architecture, data/ML pipelines, metrics interpretation, MLOps, and data engineering. | Google Cloud Professional Machine Learning Engineer Exam Guide | https://cloud.google.com/learn/certification/guides/machine-learning-engineer | 2026-06-01 | | Machine Learning Engineer | scikit-learn covers model selection, cross-validation, hyperparameter tuning, metrics, pipelines, preprocessing, feature extraction, feature selection, and model persistence. | scikit-learn User Guide | https://scikit-learn.org/stable/user_guide | 2026-06-01 | | Machine Learning Engineer | XGBoost's Python API supports scikit-learn-style estimators, evaluation sets, early stopping, feature weights, and feature importance for tree boosters. | XGBoost Python API Reference | https://xgboost.readthedocs.io/en/stable/python/python_api.html | 2026-06-01 | +| Mobile Engineer | iOS roles require Swift, Objective-C, Xcode, Core Data, and RESTful APIs; by 2026 SwiftUI proficiency (plus Combine and async/await) is explicitly required, not optional, for senior iOS postings. | Toptal Swift Developer Job Description | https://www.toptal.com/swift/job-description | 2026-07-30 | +| Mobile Engineer | iOS assessments cover Swift fundamentals, UIKit or SwiftUI, MVVM/Clean Architecture/Coordinator patterns, App Store submission experience, and Xcode proficiency. | Lemon.io iOS Developer Job Description | https://lemon.io/job-description/ios-developer/ | 2026-07-30 | +| Mobile Engineer | Android postings expect 3+ years Kotlin (OOP, coroutines, Flow) and 2+ years Jetpack Compose, plus Jetpack libraries (Room, WorkManager, Hilt) and MVVM architecture. | KORE1 "How to Hire Kotlin Developers for Android in 2026" | https://www.kore1.com/hire-kotlin-developers-2026/ | 2026-07-30 | +| Mobile Engineer | Recruiters screen for shipped App Store/Google Play releases with real MAU, a crash-free session rate, a code-signing/release story, and a named cross-platform stack (React Native, Flutter, or Kotlin Multiplatform) where applicable. | TechieCV Mobile Engineer Resume Skills & ATS Keywords | https://www.techiecv.com/resume-skills/mobile-engineer | 2026-07-30 | +| Mobile Engineer | Generic summaries and undifferentiated skill lists dilute mobile expertise; bullets without business impact (crash rate, engagement, ratings) get skipped; Flutter resumes that don't name a state-management approach (Bloc/Riverpod/Provider) read as weak. | Enhancv Mobile Application Developer resume guide | https://enhancv.com/resume-examples/mobile-application-developer/ | 2026-07-30 | ## Expert Opinions From be498c1aaa4097e4f407b6f35f010de7c809e9e8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 30 Jul 2026 11:39:43 +0000 Subject: [PATCH 2/2] fix(mobile-engineer): address CodeRabbit review on PR #97 - Add standalone "ios"/"android" keywords to both registries so platform-only resumes are still detected - Make core detectArchetype use whole-word matching (like the intelligence package already does) so "swift" no longer matches "swiftly"; add regression tests for both fixes - Replace generic action verbs with mobile-specific ones (Instrumented, Profiled) in place of the most generic entries - Replace generic hiring-guide/resume-advice sources with dated, verified company job postings (Bumble, Airalo, Hinge/Match Group, HighLevel, Whoop) and add section references for traceability - Update sources.md "Last updated" to July 30, 2026 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01Ps8ZX5EzuCTehQX7etAEPb --- packages/core/src/__tests__/archetypes.test.ts | 14 ++++++++++++++ packages/core/src/archetypes/index.ts | 18 +++++++++++++----- .../src/__tests__/intelligence.test.ts | 9 +++++++++ .../src/archetypes/mobile-engineer.ts | 10 ++++++---- research/sources.md | 12 ++++++------ 5 files changed, 48 insertions(+), 15 deletions(-) diff --git a/packages/core/src/__tests__/archetypes.test.ts b/packages/core/src/__tests__/archetypes.test.ts index 57ac7f9..53a17b3 100644 --- a/packages/core/src/__tests__/archetypes.test.ts +++ b/packages/core/src/__tests__/archetypes.test.ts @@ -32,4 +32,18 @@ describe("mobile-engineer archetype", () => { "and Jetpack Compose, released through TestFlight and Google Play Console."; expect(detectArchetype(text).id).toBe("mobile-engineer"); }); + + it("is detected from platform-only mentions", () => { + expect(detectArchetype("Shipped iOS apps for the retail team.").id).toBe( + "mobile-engineer" + ); + expect(detectArchetype("Shipped Android apps for the retail team.").id).toBe( + "mobile-engineer" + ); + }); + + it("does not treat 'swiftly' as a swift keyword match", () => { + const text = "Swiftly delivered backend services using Node and Postgres."; + expect(detectArchetype(text).id).not.toBe("mobile-engineer"); + }); }); diff --git a/packages/core/src/archetypes/index.ts b/packages/core/src/archetypes/index.ts index bb5cc88..c2c92db 100644 --- a/packages/core/src/archetypes/index.ts +++ b/packages/core/src/archetypes/index.ts @@ -497,6 +497,8 @@ ARCHETYPES.set("mobile-engineer", { name: "Mobile Engineer", description: "iOS/Android engineers building native and cross-platform mobile apps", keywords: [ + "ios", + "android", "swift", "swiftui", "objective-c", @@ -535,18 +537,18 @@ ARCHETYPES.set("mobile-engineer", { publicProof: 0.1, }, actionVerbs: [ - "Built", "Shipped", "Launched", + "Released", + "Migrated", "Optimized", "Reduced", - "Migrated", "Refactored", "Integrated", - "Released", "Automated", "Debugged", - "Improved", + "Instrumented", + "Profiled", ], antiPatterns: [ "familiar with mobile development", @@ -578,6 +580,12 @@ export function registerArchetype(archetype: RoleArchetype): void { ARCHETYPES.set(archetype.id, archetype); } +function hasKeyword(text: string, keyword: string): boolean { + const escaped = keyword.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + // hyphen counts as a word char so "go" doesn't match "go-to-market" + return new RegExp(`(? - text.includes(kw.toLowerCase()) + hasKeyword(text, kw.toLowerCase()) ).length; const score = matchCount / archetype.keywords.length; diff --git a/packages/intelligence/src/__tests__/intelligence.test.ts b/packages/intelligence/src/__tests__/intelligence.test.ts index 250f0e8..1c790cd 100644 --- a/packages/intelligence/src/__tests__/intelligence.test.ts +++ b/packages/intelligence/src/__tests__/intelligence.test.ts @@ -44,6 +44,15 @@ describe("detectArchetype", () => { expect(detectArchetype(text).id).toBe("mobile-engineer"); }); + it("detects platform-only mobile mentions", () => { + expect(detectArchetype("Shipped iOS apps for the retail team.").id).toBe( + "mobile-engineer" + ); + expect(detectArchetype("Shipped Android apps for the retail team.").id).toBe( + "mobile-engineer" + ); + }); + it("falls back to the default on no signal", () => { expect(detectArchetype("hello world").id).toBe("software-engineer"); }); diff --git a/packages/intelligence/src/archetypes/mobile-engineer.ts b/packages/intelligence/src/archetypes/mobile-engineer.ts index 110b36d..c20bbfc 100644 --- a/packages/intelligence/src/archetypes/mobile-engineer.ts +++ b/packages/intelligence/src/archetypes/mobile-engineer.ts @@ -5,6 +5,8 @@ export const mobileEngineer: Archetype = { name: "Mobile Engineer", description: "iOS/Android engineers building native and cross-platform mobile apps", keywords: [ + "ios", + "android", "swift", "swiftui", "objective-c", @@ -43,18 +45,18 @@ export const mobileEngineer: Archetype = { publicProof: 0.1, }, actionVerbs: [ - "Built", "Shipped", "Launched", + "Released", + "Migrated", "Optimized", "Reduced", - "Migrated", "Refactored", "Integrated", - "Released", "Automated", "Debugged", - "Improved", + "Instrumented", + "Profiled", ], antiPatterns: [ "familiar with mobile development", diff --git a/research/sources.md b/research/sources.md index 400d8da..0275ba9 100644 --- a/research/sources.md +++ b/research/sources.md @@ -2,7 +2,7 @@ All research sources used to build CV Builder's rules and scoring engine. -Last updated: May 2026 +Last updated: July 30, 2026 ## Market Data @@ -27,11 +27,11 @@ Last updated: May 2026 | Machine Learning Engineer | ML engineers build, evaluate, productionize, optimize, monitor, and improve ML models; core areas include model architecture, data/ML pipelines, metrics interpretation, MLOps, and data engineering. | Google Cloud Professional Machine Learning Engineer Exam Guide | https://cloud.google.com/learn/certification/guides/machine-learning-engineer | 2026-06-01 | | Machine Learning Engineer | scikit-learn covers model selection, cross-validation, hyperparameter tuning, metrics, pipelines, preprocessing, feature extraction, feature selection, and model persistence. | scikit-learn User Guide | https://scikit-learn.org/stable/user_guide | 2026-06-01 | | Machine Learning Engineer | XGBoost's Python API supports scikit-learn-style estimators, evaluation sets, early stopping, feature weights, and feature importance for tree boosters. | XGBoost Python API Reference | https://xgboost.readthedocs.io/en/stable/python/python_api.html | 2026-06-01 | -| Mobile Engineer | iOS roles require Swift, Objective-C, Xcode, Core Data, and RESTful APIs; by 2026 SwiftUI proficiency (plus Combine and async/await) is explicitly required, not optional, for senior iOS postings. | Toptal Swift Developer Job Description | https://www.toptal.com/swift/job-description | 2026-07-30 | -| Mobile Engineer | iOS assessments cover Swift fundamentals, UIKit or SwiftUI, MVVM/Clean Architecture/Coordinator patterns, App Store submission experience, and Xcode proficiency. | Lemon.io iOS Developer Job Description | https://lemon.io/job-description/ios-developer/ | 2026-07-30 | -| Mobile Engineer | Android postings expect 3+ years Kotlin (OOP, coroutines, Flow) and 2+ years Jetpack Compose, plus Jetpack libraries (Room, WorkManager, Hilt) and MVVM architecture. | KORE1 "How to Hire Kotlin Developers for Android in 2026" | https://www.kore1.com/hire-kotlin-developers-2026/ | 2026-07-30 | -| Mobile Engineer | Recruiters screen for shipped App Store/Google Play releases with real MAU, a crash-free session rate, a code-signing/release story, and a named cross-platform stack (React Native, Flutter, or Kotlin Multiplatform) where applicable. | TechieCV Mobile Engineer Resume Skills & ATS Keywords | https://www.techiecv.com/resume-skills/mobile-engineer | 2026-07-30 | -| Mobile Engineer | Generic summaries and undifferentiated skill lists dilute mobile expertise; bullets without business impact (crash rate, engagement, ratings) get skipped; Flutter resumes that don't name a state-management approach (Bloc/Riverpod/Provider) read as weak. | Enhancv Mobile Application Developer resume guide | https://enhancv.com/resume-examples/mobile-application-developer/ | 2026-07-30 | +| Mobile Engineer | Senior iOS postings now explicitly require Combine and Swift Concurrency (async/await, actors, structured concurrency) alongside UIKit/SwiftUI and MVVM-style architecture, not just legacy UIKit. (§ "About You") | Bumble Inc. — Lead iOS Engineer (Date) | https://jobs.lever.co/bumbleinc/9dd631a9-ba49-4e71-b2d5-b655c943bed9 | 2026-07-30 | +| Mobile Engineer | iOS postings expect 3+ years shipping Swift-based apps with MVVM (or similar) architecture, SwiftUI + Auto Layout UI work, and a track record of publishing and maintaining live App Store apps. (§ "Does this sound like you") | Airalo — iOS Developer | https://jobs.lever.co/airalo/4c06be41-69bc-4b28-9f8d-df75027e0eda | 2026-07-30 | +| Mobile Engineer | Android postings expect Kotlin, Jetpack Compose, coroutines, Room, and Hilt, plus hands-on experience publishing at least one app to the Google Play Store. (§ "What We're Looking For") | Match Group (Hinge) — Android Engineer II | https://jobs.lever.co/matchgroup/eeb31906-5f8f-4599-a77a-dbee6c2079c9 | 2026-07-30 | +| Mobile Engineer | Cross-platform Flutter roles require naming a specific state-management approach (Provider, Bloc, Riverpod, or MobX) and tie mobile performance to concrete metrics like startup time and crash rate. (§ "Requirements") | HighLevel — SDE III, Content Hub (Mobile Flutter) | https://jobs.lever.co/gohighlevel/d792b13b-f415-4164-b295-2d37f122ba32 | 2026-07-30 | +| Mobile Engineer | Recruiters for senior iOS roles screen for shipped native apps in production, Fastlane/CI tooling, and disciplined release practices backed by crash and performance monitoring. (§ "QUALIFICATIONS") | Whoop — Senior iOS Engineer (Healthcare) | https://jobs.lever.co/whoop/e3fc699a-e921-4015-8f0a-652af1cdb0a2 | 2026-07-30 | ## Expert Opinions