Skip to content
CAI
Software that uses CAICheck a score

AccessOwl/open_owl

60.0

Adequate · 18 September 2026

1.3k

lines of production code

Elixir

with TypeScript

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

OpenOwl is a command-line tool that automates the extraction of user data from various SaaS applications. It uses a YAML-based recipe system to define vendor-specific workflows, handling browser-based login automation via Playwright and subsequent API data retrieval. The system supports diverse pagination strategies to ensure complete data collection and exports the results to CSV files.

Features

Initial login automation and recipe management infrastructure

This change introduces the core infrastructure for automated vendor login workflows. It adds a Playwright-based login flow (ts\_src/login\_flow.ts) that automates browser interactions to fill credentials, capture screenshots, and persist authentication cookies and session storage. Supporting this are a main entry point (ts\_src/main.ts) that orchestrates the login using environment variables, a RecipeManager (ts\_src/recipe\_manager.ts) that loads vendor configurations from a YAML file, and TypeScript type definitions (ts\_src/types.ts) for vendor templates and HTTP actions.

_ts\src · high confidence

Initial release of OpenOwl with Docker support and SaaS integrations

This change introduces the initial version of OpenOwl, a tool for downloading user lists from SaaS applications. It adds a Dockerfile and docker-compose.yml to containerize the application, an owl.sh shell wrapper for easy execution, and a recipes.yml file defining integrations for Adobe, Amplitude, Calendly, Figma, Loom, Mezmo, and Miro. The entry also includes configuration files for the Elixir/Node.js toolchain (.tool-versions, .formatter.exs, tsconfig.json) and project metadata (LICENSE, README.md).

(repo-wide) · high confidence

Initial release of the OpenOwl CLI and API automation framework

This change introduces the core library components for the OpenOwl tool, enabling users to execute predefined automation recipes via a command-line interface. The new \lib/cli.ex\ module provides commands to list available recipes, perform vendor-specific login flows (wrapping external npm-based authentication), and execute API actions that fetch data and export results to CSV. Supporting this are \lib/api\_client.ex\ for handling HTTP requests with pagination and placeholder substitution, \lib/recipes.ex\ for parsing and validating YAML-based recipe definitions, and various helper modules (\lib/helpers/\) for utility functions like cookie filtering, environment variable parsing, and response transformation.

lib, lib/helpers · high confidence

Support for diverse API pagination strategies in data extraction recipes

Users can now configure data extraction recipes to handle various API pagination patterns automatically. The system introduces a new \OpenOwl.PaginationStrategy\ behavior and specific implementations for offset-based, page-number-based, cursor-in-body, next-link-in-body, and next-cursor-in-body strategies. These strategies allow the tool to traverse paginated endpoints by incrementing URL parameters, following next-page links, or extracting cursors from response bodies, ensuring complete data retrieval across different API designs.

_lib/pagination\strategies, lib/recipes · high confidence

Test coverage

Added test suite for API client, recipe loading, and response transformation

Added comprehensive tests for the \ApiClient\ module, verifying HTTP method handling, response body extraction, and pagination strategies (\url\_in\_body\, \next\_page\_in\_body\, \next\_cursor\_in\_body\_to\_send\_as\_json\, \page\_params\_in\_url\, \offset\_params\_in\_url\). Included tests for recipe loading from YAML fixtures (covering Adobe, Asana, Calendly, Loom, and Miro configurations) and validation of recipe lookup and action retrieval. Added tests for the \ResponseTransformer\ module, ensuring correct flattening of nested records, CSV generation, and error handling for invalid inputs. Also added helper tests for \ApiUtils\, \CliUtils\, \StructUtils\, and \LoginFlowWrapper\.

test · high confidence

Dependencies

Initial dependency manifests for Elixir and Node.js projects

Added mix.exs and mix.lock for the Elixir application (open\_owl v0.1.0), specifying dependencies including yaml\_elixir, jason, nimble\_csv, and req, along with test and dev tools like bypass and mix\_test\_watch. Added package.json and package-lock.json for the Node.js project, defining runtime dependencies for js-yaml and playwright, and dev dependencies for ts-node.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 60.

Lenses

  • Code Health 98
  • Architecture 69
  • Maturity 59
  • Readiness 49
  • Security 89

Changes since last survey

  • 9 commits — 9 feature/other, 0 fixes

By area

  • (root) — 6 commits
  • .github/workflows — 1 commit
  • lib/cli.ex — 1 commit
  • lib/pagination_strategies — 1 commit

Notable commits

  • change: Add Demo to README
  • change: Add License
  • change: Add asdf for managing tool versions
  • change: Add gh actions to run tests
  • change: Add login flow via pw
  • change: CLI interface
  • change: Docker support and README
  • change: Handling various responses and requests with predefined recipes
  • change: Init with .gitignore

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

AccessOwl/open_owl was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2ced9f72db6689b036ee4434ec8bb338e3858f2e — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.