Skip to main content

Northbridge Workflow Analysis API

Workflow Analysis API

Programmatic workflow and automation-readiness analysis for business applications and internal tools.

Overview

The Northbridge Workflow Analysis API accepts a description of an operational workflow and returns a structured analysis: an automation readiness score, workflow complexity, identified bottlenecks, prioritized recommendations, integration opportunities between the tools you use, and an estimate of manual steps that could potentially be reduced.

Version 1.0 uses a deterministic, rule-based analysis engine: the same input produces the same analysis. Results are an automated starting point for planning, not a guarantee of savings or a substitute for a reviewed project scope.

Provided by Northbridge Software LLC · https://nbsoftware.net

Getting Started

API Access

API access is currently available to approved customers and integration partners.

To request a key, email support@nbsoftware.net with your company name and intended use. Keys are issued by Northbridge and shown to you once.

  1. Store your key in a server-side secret or environment variable.
  2. Call GET /api/v1/health to confirm connectivity.
  3. Send a workflow to POST /api/v1/workflow-analysis.

Authentication

Authenticate every analysis request with a Bearer token:

Authorization: Bearer <API_KEY>

# Example
Authorization: Bearer nb_live_your_api_key

Never expose production API keys in client-side JavaScript or public repositories.

A missing key returns 401. An invalid, disabled or revoked key returns 403.

Base URL

https://nbsoftware.net

Endpoints

Workflow Analysis

POST /api/v1/workflow-analysis

Requires authentication. Body: JSON (Content-Type: application/json), maximum 32 KB.

Health Check

GET /api/v1/health

No authentication required. Response:

{
  "status": "ok",
  "service": "Northbridge Workflow Analysis API",
  "version": "1.0"
}

Request Fields

FieldTypeRequiredConstraints
workflow_namestringYes2–120 characters
descriptionstringYes20–5000 characters
monthly_volumeintegerNo0–10,000,000
current_toolsstring[]NoUp to 50 items, each ≤ 100 characters
manual_stepsintegerNo0–1000
business_goalstringNo≤ 1000 characters

Unknown fields are rejected with 400. List current_tools in the order data flows between them.

Response Fields

FieldTypeDescription
request_idstringUnique id prefixed wa_ (also in the X-Request-Id header)
workflow_namestringEcho of the submitted name
automation_scoreinteger0–100 automation readiness
complexitystringlow, medium or high
summarystringPlain-language summary
bottlenecksstring[]Identified manual bottlenecks
recommendationsobject[]title, category, priority (high | medium | low)
estimated_manual_steps_removedintegerManual steps that could potentially be reduced
integration_opportunitiesstring[]Suggested connections between listed tools
generated_atstringISO-8601 timestamp

Example response:

{
  "request_id": "wa_550e8400-e29b-41d4-a716-446655440000",
  "workflow_name": "Customer onboarding",
  "automation_score": 82,
  "complexity": "low",
  "summary": "\"Customer onboarding\" shows strong automation potential, with 5 automation signals identified at roughly 250 runs per month. Complexity is assessed as low.",
  "bottlenecks": [
    "Manual transfer of data between systems",
    "Routine notifications sent by hand",
    "CRM updated outside of the originating workflow",
    "Form submissions processed by hand after arrival"
  ],
  "recommendations": [
    { "title": "Synchronize records between systems automatically", "category": "integration", "priority": "high" },
    { "title": "Trigger routine emails and notifications automatically", "category": "workflow-automation", "priority": "high" }
  ],
  "estimated_manual_steps_removed": 2,
  "integration_opportunities": ["Google Forms → HubSpot", "HubSpot → Gmail"],
  "generated_at": "2026-10-20T12:00:00.000Z"
}

Automation Score

The score rises with signals such as copy/paste or re-keyed data, manual data entry, duplicate checks, routine emails and notifications, form processing, spreadsheet tracking, CRM updates, file handling, follow-up task creation, reporting and invoicing, higher monthly volume, more manual steps, and multiple connected tools.

It falls with exception-heavy or conditional logic, compliance-sensitive steps, escalations, and very short descriptions. Complexity increases with the number of tools, manual steps, approvals and conditional logic.

ScoreInterpretation
70–100Strong automation potential
45–69Moderate automation potential
0–44Limited signals; more detail or process mapping recommended

Error Responses

Errors share one format:

{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "The description field must contain at least 20 characters."
  }
}
StatusCodeMeaning
400INVALID_JSONBody is not valid JSON
400INVALID_REQUESTValidation failure or wrong Content-Type
401MISSING_API_KEYNo Bearer token supplied
403INVALID_API_KEYKey is invalid, disabled or revoked
405METHOD_NOT_ALLOWEDWrong HTTP method
413PAYLOAD_TOO_LARGEBody larger than 32 KB
429RATE_LIMIT_EXCEEDEDToo many requests
500INTERNAL_ERRORUnexpected server error

Rate Limits

Default: 60 requests per minute per API key, plus a per-IP abuse limit of 120 requests per minute. Exceeding a limit returns 429 with a Retry-After header in seconds. Limits may be adjusted per key.

Examples

curl

curl -X POST "https://nbsoftware.net/api/v1/workflow-analysis" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "workflow_name": "Customer onboarding",
    "description": "New customers submit a form. Staff manually copies information into the CRM and sends a confirmation email.",
    "monthly_volume": 250,
    "current_tools": ["Google Forms", "HubSpot", "Gmail"]
  }'

JavaScript

SERVER-SIDE EXAMPLE

// SERVER-SIDE EXAMPLE (Node.js 18+). Never put API keys in browser code.
const response = await fetch("https://nbsoftware.net/api/v1/workflow-analysis", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.NORTHBRIDGE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    workflow_name: "Customer onboarding",
    description:
      "New customers submit a form. Staff manually copies information into the CRM and sends a confirmation email.",
    monthly_volume: 250,
    current_tools: ["Google Forms", "HubSpot", "Gmail"],
  }),
});

const data = await response.json();
if (!response.ok) {
  throw new Error(`${response.status} ${data.error?.code}: ${data.error?.message}`);
}
console.log(data.automation_score, data.complexity, data.recommendations);

Python

import os
import requests

response = requests.post(
    "https://nbsoftware.net/api/v1/workflow-analysis",
    headers={
        "Authorization": f"Bearer {os.environ['NORTHBRIDGE_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "workflow_name": "Customer onboarding",
        "description": "New customers submit a form. Staff manually copies information into the CRM and sends a confirmation email.",
        "monthly_volume": 250,
        "current_tools": ["Google Forms", "HubSpot", "Gmail"],
    },
    timeout=30,
)

data = response.json()
if response.ok:
    print(data["automation_score"], data["complexity"])
    for rec in data["recommendations"]:
        print(f"- [{rec['priority']}] {rec['title']}")
else:
    print(f"Error {response.status_code}: {data['error']['code']} - {data['error']['message']}")

Security

  • HTTPS only. Keys are stored by Northbridge as one-way hashes and can be revoked at any time.
  • Submitted workflow descriptions, tools and goals are analyzed in memory and are not stored. Only operational metadata (request id, key identifier, timestamp, status, latency) is recorded.
  • Call the API from your server. The API does not enable browser cross-origin access.
  • Do not include personal data, credentials or confidential customer records in workflow descriptions.

Support

Northbridge Software LLC · support@nbsoftware.net

Machine-readable spec: OpenAPI Specification · All developer resources