# Georgia PSC Large-Load Docket Monitor (`mikechiou/ga-psc-large-load`) Actor

Monitor Georgia Public Service Commission docket 55378 for public large-load, data-center, DCO agreement, tariff, and economic-development power filings. Emits deterministic, source-backed pay-per-event records for watchlists and downstream agents.

- **URL**: https://apify.com/mikechiou/ga-psc-large-load.md
- **Developed by:** [Mike Chiou](https://apify.com/mikechiou) (community)
- **Categories:** Agents, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 93.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $40.00 / 1,000 large-load filing matches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Georgia PSC Large-Load Docket Monitor

Monitor Georgia Public Service Commission docket filings for large-load, data-center, DCO agreement, tariff, and economic-development power signals.

### What This Actor Does

- Fetches public Georgia PSC docket metadata from the official docket search endpoint.
- Monitors docket `55378` by default, the Georgia Power large-load economic development docket.
- Matches filing descriptions, company names, and attachment names against large-load and data-center keywords.
- Fetches public document-detail pages to normalize company names, parent docket IDs, and attachment download links.
- Emits source-backed records with docket URLs, document URLs, attachment URLs, filed dates, matched keywords, event type, and dedupe key.
- Persists event fingerprints so repeated monitor runs do not emit the same event again.
- Supports pay-per-event charging with a safe no-op fallback for local or unpublished runs.

### Inputs

- `docketIds`: Georgia PSC docket IDs to monitor. Defaults to `["55378"]`.
- `keywords`: custom keywords. Defaults include `large load`, `data center`, `DCO`, `tariff`, and `economic development`.
- `dateWindow`: explicit `{ "start": "YYYY-MM-DD", "end": "YYYY-MM-DD" }` or `{ "lookbackDays": 180 }`.
- `includeAllNewFilings`: when true, emits `new_docket_filing` for unmatched filings too.
- `fetchDocumentDetails`: default true. Fetches document detail pages for attachment provenance.
- `maxPages`, `pageSize`, `maxEvents`: safety controls.
- `stateStoreName`: named key-value store for monitor-mode dedupe. Use `__RUN_DEFAULT__` for isolated demo runs.

### Output

Each dataset item uses this shape:

```json
{
    "event_type": "large_load_filing_match",
    "state": "GA",
    "commission": "Georgia Public Service Commission",
    "docket_id": "55378",
    "document_id": 226607,
    "description": "Docket No. 55378 - Quarterly Large Load Economic Development Report",
    "filed_date": "2026-05-15",
    "company_name": "Georgia Power Company",
    "matched_keywords": ["large load", "economic development"],
    "match_category": "large_load",
    "source_docket_url": "https://psc.ga.gov/search/facts-docket/?docketId=55378",
    "source_document_url": "https://psc.ga.gov/search/facts-document/?documentId=226607",
    "attachments": [
        {
            "name": "DKT 55378 Lg Load Econ Dev Rept Q1 2026 PD.pdf",
            "url": "https://services.psc.ga.gov/api/v1/External/Public/Get/Document/DownloadFile/226607/107887"
        }
    ],
    "dedupe_key": "ga-psc:55378:226607:large_load_filing_match"
}
```

### Event Pricing Plan

Pay-per-event pricing is configured on Apify.

- `large_load_filing_match`: `$0.04` primary event.
- `new_docket_filing`: `$0.02`.
- `dco_order_or_tariff_match`: `$0.05`.

Use all-inclusive pay-per-event pricing. Do not enable pay-per-event plus usage unless the margin model changes.

### Local Development

```bash
npm install
npm run build
npm test
npm run lint
npm run canary
apify run --purge
```

The local smoke input lives at `storage/key_value_stores/default/INPUT.json`.

### Data Sources

- Georgia PSC docket page: `https://psc.ga.gov/search/facts-docket/?docketId=55378`
- Georgia PSC docket JSON endpoint: `https://psc.ga.gov/search/service-facts-docket/`
- Georgia PSC document detail pages: `https://psc.ga.gov/search/facts-document/?documentId=<documentId>`
- Georgia PSC public document downloads: `https://services.psc.ga.gov/api/v1/External/Public/Get/Document/DownloadFile/<documentId>/<attachmentId>`

### Limitations

- This Actor reports public source facts and deterministic keyword matches. It does not provide legal, rate, investment, or regulatory advice.
- v1 does not extract metrics from PDFs, DOCX, ZIP, or XLSX attachments. It normalizes attachment links so users and downstream agents can fetch primary documents.
- v1 is Georgia-specific. Multi-state PUC/PSC coverage should be added only after separate source gates pass.
- The Actor is not affiliated with, endorsed by, or sponsored by the Georgia Public Service Commission or the State of Georgia.

### Maintenance

Run the canary daily:

```bash
npm run canary
```

Open a fix ticket if the docket API returns HTML/404, page 1 is empty, required fields disappear, document detail pages lose parent docket IDs, or attachment links disappear for matched recent filings.

### Kill / Scale Gate

After 60 days listed on Apify, continue only if the Actor reaches at least 5 paid-plan users, at least `$25` in charged events, credible direct inbound, or repeated paid usage by the same non-Mike account. Otherwise archive/freeze and move to the next validated build.

# Actor input Schema

## `docketIds` (type: `array`):

Georgia PSC docket IDs to monitor. Docket 55378 is the default large-load economic development docket.

## `keywords` (type: `array`):

Terms matched against filing descriptions, company names, and attachment names.

## `dateWindow` (type: `object`):

Use explicit start/end ISO dates or a rolling lookback. Default is 120 days.

## `includeAllNewFilings` (type: `boolean`):

When true, emits new\_docket\_filing for unmatched new filings too. Default false keeps output focused on large-load signals.

## `fetchDocumentDetails` (type: `boolean`):

Fetch document detail pages to normalize company, parent docket, and attachment links.

## `maxPages` (type: `integer`):

Maximum Georgia PSC search-result pages per docket.

## `pageSize` (type: `integer`):

Georgia PSC search-result page size.

## `maxEvents` (type: `integer`):

Safety cap for one run.

## `stateStoreName` (type: `string`):

Named key-value store used for monitor-mode dedupe. Use **RUN\_DEFAULT** for isolated demo runs.

## Actor input object example

```json
{
  "docketIds": [
    "55378"
  ],
  "keywords": [
    "large load",
    "data center",
    "DCO",
    "tariff",
    "economic development"
  ],
  "dateWindow": {
    "lookbackDays": 180
  },
  "includeAllNewFilings": false,
  "fetchDocumentDetails": true,
  "maxPages": 1,
  "pageSize": 100,
  "maxEvents": 10,
  "stateStoreName": "__RUN_DEFAULT__"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "docketIds": [
        "55378"
    ],
    "keywords": [
        "large load",
        "data center",
        "DCO",
        "tariff",
        "economic development"
    ],
    "dateWindow": {
        "lookbackDays": 180
    },
    "maxEvents": 10,
    "stateStoreName": "__RUN_DEFAULT__"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mikechiou/ga-psc-large-load").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "docketIds": ["55378"],
    "keywords": [
        "large load",
        "data center",
        "DCO",
        "tariff",
        "economic development",
    ],
    "dateWindow": { "lookbackDays": 180 },
    "maxEvents": 10,
    "stateStoreName": "__RUN_DEFAULT__",
}

# Run the Actor and wait for it to finish
run = client.actor("mikechiou/ga-psc-large-load").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "docketIds": [
    "55378"
  ],
  "keywords": [
    "large load",
    "data center",
    "DCO",
    "tariff",
    "economic development"
  ],
  "dateWindow": {
    "lookbackDays": 180
  },
  "maxEvents": 10,
  "stateStoreName": "__RUN_DEFAULT__"
}' |
apify call mikechiou/ga-psc-large-load --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=mikechiou/ga-psc-large-load",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MqNkPm2R3mlDxUwh4/builds/0aC54cd2MzYJUk2ri/openapi.json
