Apify output contract checks by Check Charlie
Pricing
$0.01 / completed report
Apify output contract checks by Check Charlie
Check up to 20 supplied JSON rows for missing fields, incorrect types, duplicate IDs and timestamp inconsistencies. Exact failing rows in JSON and Markdown. Deterministic checks, no AI model or target Actor calls. $0.01/completed report; no certification.
Pricing
$0.01 / completed report
Rating
5.0
(1)
Developer
Automatron
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Check a small JSON export before feeding it into a spreadsheet, CRM, report or automation. Charlie compares supplied rows with the contract you declare and returns PASS, FAIL or NOT TESTED for each rule, with exact failing row indices.
$0.01 per completed report, up to 20 rows and 16 field rules. No model fee, subscription, scraping or upstream Actor calls. The Store may display this as $10 per 1,000 reports. This is a deterministic validator with a specialist persona; it does not use an AI model.
Quick start
- Keep the fictional default bundle for a demonstration, or replace it with a redacted sample and your expected contract.
- Run with at least $0.01 as the maximum charge. One report is produced per run.
- Open REPORT, REPORT-MARKDOWN or the default dataset. SUMMARY records completion and billing status.
The default deliberately contains three defects in row 1 (the second row): a duplicate id, a string where views should be a number, and an invalid observedAt timestamp. Charlie should report precisely those failures. A report that finds defects is a successful delivery, not a runtime failure.
For a clean result, change the second ID to fictional-2, the second views value to the number 14, and its timestamp to 2026-10-01T10:00:00Z.
Input contract
Send one bundle object with schemaVersion: 1, actorUrl, declaredBuild, contract and sample. The Actor URL and build are unverified labels: Charlie does not visit them or execute the target Actor. A complete fictional input is included in the Input tab.
sample: 0–20 JSON objects. The serialized bundle must fit within 20,000 UTF-8 bytes, with nesting depth at most 8.contract.fields: 1–16 unique paths, each withpathandtype. Types:string,number,boolean,object,array,null. Paths address up to four nested object keys; arrays are not traversed.- Optional field flags:
required,nonEmpty,unique,timestamp(booleans). Uniqueness supports scalar strings, numbers and booleans; it needs at least two values of the declared type. Timestamps must be strings in strict UTC ISO format, such as2026-10-01T09:00:00Zor with exactly three millisecond digits. contract.maxItems: optional maximum sample size; it never establishes a full run's item count.contract.observationWindow: optional{ "from": "2026-10-01T00:00:00Z", "through": "2026-10-02T00:00:00Z" }bounds for valid timestamp fields.contract.orderedPairs: up to eight{ "earlier": "createdAt", "later": "updatedAt" }pairs referencing declared timestamp fields.
Optional absent values are not type-checked. Use required: true if absence is a defect. A missing prerequisite results in NOT TESTED, rather than a fabricated pass. Uniqueness reports subsequent duplicate rows, not the first occurrence.
Use only redacted, non-sensitive samples. Credential-like fields, personal email addresses, executable content, remote schemas and some unsafe text are rejected conservatively. This screening is not a complete personal-data detector. Do not submit secrets or private customer records. Samples stay in your Apify run input according to your storage settings; reports contain rule outcomes and row indices, not original sample values.
Output and billing
One dataset item contains the report: sample count, check counts, per-check status, tested rows, zero-based failing row indices, limitations and a digest of the serialized evidence. The same report is available as JSON and Markdown in the run's key-value store.
The $0.01 completion event is requested only after both report files and the dataset item have been saved. Valid reports with defects are billable. Empty samples return a usable NOT TESTED report without the completion fee. Samples with no testable field checks return incomplete, also without the completion fee. Invalid input, exhausted report budgets and failed delivery incur no completion fee. No start or per-dataset-item fee is configured. Any platform charges separately imposed by your Apify plan remain subject to that plan.
If SUMMARY says reconciliation_required, inspect the stored report, PROGRESS and Apify charge receipt before starting another run. An uncertain append or charge is never automatically retried. Repeated separate runs are separate reports and may incur separate fees. Error details use safe codes rather than echoing your data.
API and agent use
POST the input JSON to https://api.apify.com/v2/actors/automatron~check-charlie-output-qa/runs?maxTotalChargeUsd=0.01 with your own Apify bearer token. Read the returned run until terminal, then retrieve its default dataset and SUMMARY. Do not put credentials in the input. For reproducible workflows, specify a qualified build explicitly.
Example automation: take at most 20 already-collected output rows, declare the required downstream columns, submit the bundle, and branch on counts.fail > 0. Treat NOT TESTED separately. Apify-compatible agent tooling can invoke the same Actor; Charlie accepts declarative rules, not natural-language tool instructions.
What this report cannot establish
Charlie does not certify live Actor reliability, build authenticity, security, factual correctness, marketplace quality, pricing or full-run coverage. A small sample passing checks is not a release certificate. The evidence digest identifies submitted bytes after serialization; it does not prove their source. No overall star rating or customer review is generated.
Found a reproducible problem with Charlie? Share a redacted input and the exact unexpected check through this Actor's Issues tab. Honest reviews after actual use are welcome, regardless of rating.
