How to Build an Options-Contract Data Extraction Pipeline from PDFs and Web Pages
workflow automationfinancial dataOCR

How to Build an Options-Contract Data Extraction Pipeline from PDFs and Web Pages

DDaniel Mercer
2026-04-16
24 min read
Advertisement

Build a reliable options-data extraction pipeline from PDFs and web pages with OCR, parsing, normalization, and validation.

How to Build an Options-Contract Data Extraction Pipeline from PDFs and Web Pages

Options data is deceptively simple on the surface: a chain page shows strikes, expirations, bid/ask, volume, and open interest. In practice, a production-grade extraction system has to pull that information from multiple sources, each with its own formatting quirks, anti-bot behavior, and document quality issues. If you are building an OCR pipeline for financial documents, the real challenge is not just text recognition; it is turning messy PDFs, SEC-style disclosures, and web pages into structured data that can be validated, normalized, and safely routed downstream.

This guide walks through a practical, developer-first workflow for building an options-contract data extraction pipeline using parsing, OCR, validation rules, and API integration. It is designed for teams that need document automation for brokerage statements, option chain pages, and regulatory filings, while keeping accuracy, governance, and maintainability in view. If you want a broader view of how OCR fits into modern stacks, the patterns in Navigating the Evolving Ecosystem of AI-Enhanced APIs and Evaluating the Performance of On-Device AI Processing for Developers are useful starting points.

1) Define the data model before you touch extraction

1.1 Start with a canonical contract schema

Most teams begin with source-specific scraping logic and only later discover that the data model is the real bottleneck. For options contracts, define a canonical schema first: underlying symbol, contract symbol, expiration date, call/put flag, strike, currency, exchange, bid, ask, last, volume, open interest, implied volatility, delta, and source metadata. That gives you a stable target whether the input comes from a Yahoo-style chain page, a brokerage PDF, or a SEC-style exhibit. A canonical model also makes downstream validation much easier because every ingest path must satisfy the same contract.

Keep the schema opinionated. For example, store dates in ISO 8601, numeric fields as decimals, and contract identifiers in one normalized format. When you later encounter records like the synthetic examples in the source set, such as XYZ call contracts with varying strikes, your parser should not be guessing whether “77.000” is a display string or a business-critical field. It should map every extracted token into a strict field with clear type constraints.

1.2 Separate source metadata from business data

The extraction output should not just contain the option contract itself. Include source URL, capture timestamp, document type, page number, OCR confidence, parser version, and validation status. This separation makes the pipeline auditable and supports replay if a site layout changes or an OCR engine improves. In regulated or high-risk finance workflows, auditability is a feature, not an afterthought.

This is where workflow design matters. Teams that treat “PDF extraction” and “web page parsing” as the same step often create fragile code paths. Instead, classify sources into logical categories, then route them into source-specific adapters that feed the same canonical model. For governance patterns that scale, see Cross-Functional Governance: Building an Enterprise AI Catalog and Decision Taxonomy and Quantify Your AI Governance Gap: A Practical Audit Template for Marketing and Product Teams.

1.3 Design for normalization from day one

Normalization is not cleanup at the end; it is the backbone of structured data extraction. Decide early how you will standardize number formats, time zones, currency symbols, and identifier casing. Options chains often mix human-readable labels with machine-readable contract symbols, so your pipeline should normalize both while preserving the original text. That enables trustworthy reconciliation when the raw source and normalized record differ.

Think of normalization as the difference between “extracting text” and “producing records.” OCR can tell you that a PDF contains “77.000 call,” but normalization turns that into a strike price of 77.00 and a contract type of CALL associated with a specific expiration. If you are building reusable parsing components, keep handy patterns from Essential Code Snippet Patterns to Keep in Your Script Library.

2) Build source-specific ingestion paths

2.1 Web option chain pages need HTML parsing before OCR

When the source is a live options chain page, OCR should usually be the fallback, not the primary method. Most chain pages expose clean HTML, embedded JSON, or API-like payloads that are more reliable than rasterizing the page and running recognition. A practical pipeline first attempts page parsing, then falls back to screenshot capture only when the DOM is inaccessible, dynamically rendered, or protected.

From a workflow perspective, this means you need a browser automation layer or HTTP fetcher, a DOM parser, and a resiliency layer for anti-bot or cookie overlays. Source materials showing Yahoo-style options quote pages illustrate a common pattern: the page content may be thin or gated by consent notices, so your parser needs to differentiate meaningful financial data from cookie banners and branding noise. For teams dealing with dynamic pages, the logic in AI-Enhanced APIs and Why Smaller, Smarter Link Infrastructure Matters as AI Goes Edge is relevant because it emphasizes lightweight fetch-and-decode patterns.

2.2 PDFs require layout-aware extraction, not just text scraping

Brokerage PDFs and SEC-style disclosures often contain tables, footnotes, and wrapped lines that break naive text extraction. If the PDF has embedded text, use layout-aware extraction to preserve reading order and table structure. If the file is scanned, run OCR with table detection and confidence scoring. The most reliable approach is hybrid: detect whether the document has selectable text, then choose direct extraction or OCR accordingly.

For finance documents, table structure matters as much as the content itself. A statement line that places strike, expiration, and premium in adjacent columns can become unusable if the extraction engine flattens everything into a single paragraph. That is why a robust PDF extraction workflow should preserve bounding boxes, row relationships, and column confidence. For production workflow ideas, compare this with the organizational rigor in Building a Vendor Profile for a Real-Time Dashboard Development Partner and Designing Infrastructure for Private Markets Platforms: Compliance, Multi-Tenancy, and Observability.

2.3 Mixed-source pipelines need a common orchestration layer

In real deployments, you will ingest a mix of HTML, PDF, scanned image, and email attachment sources. Do not create separate pipelines that diverge over time. Instead, build one orchestration layer with source adapters, a preprocessing stage, an extraction stage, validation, and storage. Each adapter should emit the same intermediate representation, such as “document pages with candidate tokens and layout geometry,” before downstream processing.

This design makes retries, monitoring, and versioning far easier. It also simplifies scaling because you can tune the browser pool, OCR workers, and parser workers independently. For related thinking on resilient architecture and vendor choice, see Edge and Serverless as Defenses Against RAM Price Volatility and "

3) Preprocess documents for higher OCR and parsing accuracy

3.1 Clean images before recognition

OCR quality depends heavily on image quality. Before sending scans to an OCR engine, deskew the page, remove borders, correct orientation, and normalize contrast. Brokerage PDFs often come from faxed or compressed scans, which means speckle noise and faint text are common. A simple preprocessing step can materially improve recognition of strike prices, decimal points, and contract symbols.

For financial data, tiny OCR mistakes are expensive. Confusing “1” and “7,” or dropping a decimal point in the strike price, can produce a completely wrong record. Treat preprocessing as a risk control, not just image enhancement. If you are building a controlled workflow around automated correction and routing, the mindset in Deferral Patterns in Automation: Building Workflows That Respect Human Procrastination is surprisingly useful because it emphasizes that automation should know when to pause, escalate, or request human review.

3.2 Detect tables and semantic zones

Options contracts are often presented in tabular zones: contract header, strike list, market data block, notes or disclosures. Before extraction, detect those zones so that your parser can handle them differently. Table detection is especially important in SEC-style filings, where line items may span several rows and footnotes may interrupt the logical sequence. Region detection also improves confidence scoring because you know whether a token belongs to a data cell, a title, or a disclaimer.

If you have ever had a page that turned one clean row into three broken lines after OCR, you know why zoning matters. This is analogous to how passage-level optimization isolates meaningful units for retrieval systems: the smaller and better defined the unit, the less likely it is to lose context.

3.3 Preserve provenance at the page and cell level

Each extracted field should ideally carry provenance: page number, bounding box, source file hash, and extraction confidence. When a user disputes a record, provenance lets you trace it back to the exact text region. This is especially important when combining OCR and parser outputs because the same field may be confirmed by two different methods. Provenance also helps you build an evidence trail for compliance or internal review.

Pro Tip: If a field appears in both HTML and OCR outputs, prefer the HTML value only when the page source is trustworthy and the document timestamp matches the capture time. Otherwise, store both and mark the record as requiring validation.

4) Extract structured data with layered parsing logic

4.1 Use rule-based parsing for predictable patterns

Options data has a lot of fixed-format structure, which makes rule-based parsing highly effective. Contract symbols, expiration dates, and strike formatting are usually regular enough for deterministic extractors. For example, a contract symbol often encodes the underlying, expiration, type, and strike in a compact identifier. Your parser can decode this with a regex or a dedicated symbol parser, then compare the decoded fields with the visible row values for consistency.

Rule-based extraction should be your first pass because it is explainable and fast. It also gives you a clean baseline for measuring OCR performance. If the page contains a familiar pattern such as a chain table with columns for bid, ask, volume, and open interest, use column-aware parsers before trying ML-based field guessing. That kind of practical engineering is similar to the direct, modular approach recommended in "

4.2 Use OCR as a bridge for scanned and semi-structured files

OCR becomes essential when source documents are image-based or when text extraction fails on PDFs with embedded graphics. In brokerage statements, contract tables may be embedded in exported images or flattened into a single page canvas. OCR converts those pixels back into text, but it does not understand finance on its own. Your pipeline must post-process the text into contract records by detecting fields, row boundaries, and legal disclaimers.

Set expectations appropriately: OCR is not the source of truth, it is one layer in the extraction stack. For many workflows, the right architecture combines OCR output with deterministic parsers and validation logic, not one or the other. If you want to understand how to structure such a layered system, the thinking in Board-Level AI Oversight for Hosting Firms: A Practical Checklist is relevant because it frames automation as a governed system instead of a black box.

4.3 Build a field-to-source mapping map

Each target field should have a documented source strategy. For instance, underlying symbol may come from the page header, contract symbol from the row key, expiration from the option table or symbol decoder, and bid/ask from the quote column. If a field can be derived from multiple places, define precedence rules. This prevents data drift when one source changes layout or omits a value.

Documenting the mapping is also a team communication tool. Engineers, analysts, and compliance reviewers should all know where each field originated and how it was derived. This is the same discipline you would apply when creating a single source of truth in What Financial Metrics Reveal About SaaS Security and Vendor Stability: traceability wins when the system can explain itself.

5) Normalize options data into a stable record format

5.1 Standardize symbols, strikes, and expirations

Normalization converts source-specific representations into machine-friendly records. The strike price should be a decimal with a defined scale, expiration should be date-only or timezone-aware depending on your downstream use, and contract type should be a constrained enum such as CALL or PUT. If your source includes a display symbol and a machine symbol, preserve both, but pick one canonical field for joins and deduplication.

Be strict about numeric conversions. Drop commas, trim spaces, and reject malformed currency formats instead of silently coercing them. In options data, a false positive is often worse than a missing value because incorrect records can propagate into models, reports, or trade support tools. Think of this like the caution used in SEO Risks from AI Misuse: bad inputs can scale damage quickly if you do not gate them early.

5.2 Map source labels into business semantics

Brokerage PDFs and SEC-style disclosures often use labels that vary by broker or filing type. One document may say “Last,” another “Mark,” and another “Settlement.” A robust pipeline maps each label into a semantic category and stores the raw label too. That way, you can support analytics without losing the original source context.

This is particularly useful when integrating multiple data providers. If your downstream system wants a clean set of market fields, semantic normalization reduces integration friction and simplifies reporting. The pattern is similar to the “one dashboard, many sources” philosophy in The Shopify Dashboard Every Lighting Retailer Needs, except here the source complexity is financial rather than retail.

5.3 Track confidence and completeness as first-class fields

Do not just store extracted values; store how trustworthy they are. Confidence scores from OCR, parser certainty, and completeness ratios help decide whether a record can flow into production or needs review. For example, a contract record with strike and expiration present but missing bid/ask may still be useful for reference, but not for trading support or analytics. Confidence metadata turns an extraction pipeline into a decision system.

That approach is especially useful when some documents are high quality and others are poor scans. It lets you route records intelligently rather than applying one rigid threshold to every source. For broader ideas on building adaptable systems, Building Subscription-Less AI Features offers a strong example of designing for variable usage and operational constraints.

6) Apply validation rules that catch finance-specific errors

6.1 Validate contract math and domain constraints

Validation is where a good extraction pipeline becomes trustworthy. For options data, check that expiration dates are valid trading dates, strikes are non-negative, contract types are permitted values, and numeric columns follow expected ranges. If the source includes both a display contract and a symbol-derived contract, compare them for consistency. Mismatches should be flagged, not auto-fixed.

Where possible, validate against external reference data such as known underlying tickers, listed expirations, or exchange conventions. This catches silent OCR failures and malformed pages. In practice, domain validation is what separates a usable data extraction workflow from a brittle scraping script.

6.2 Cross-check multiple sources for the same contract

When you ingest both web pages and PDFs, use cross-source validation to improve trust. If an option contract appears in a chain page and a brokerage PDF, compare fields such as strike, expiration, and contract type. Differences can reveal stale data, source drift, or extraction errors. This is especially helpful if one source is a live quote page and another is a disclosure or confirmation document.

Cross-checking also improves observability. If a contract is present in one source but not another, you can classify the mismatch as source variance rather than extraction failure. That distinction matters in operational reporting. For related governance ideas, see multi-tenancy and observability patterns and API-oriented integration strategies.

6.3 Use human review only where it adds value

Human review should be reserved for ambiguous or high-impact records, not every extraction. A good review queue is driven by exceptions: low OCR confidence, missing critical fields, invalid symbol decodings, or inconsistency across sources. If the record passes the validation rules, it should flow automatically. If not, it should be captured with a clear reason code so reviewers can act quickly.

Pro Tip: Build review queues around exception classes, not raw document counts. A queue full of “everything that failed” is hard to operationalize; a queue labeled “strike mismatch,” “expired contract,” or “missing bid/ask” is actionable.

7) Orchestrate the pipeline for scale and reliability

7.1 Use staged processing with clear checkpoints

A production pipeline should look like a series of checkpoints: ingest, classify, preprocess, extract, normalize, validate, persist, and monitor. Each stage should be idempotent so retries do not duplicate records or corrupt state. That makes the system resilient when a browser session crashes, an OCR worker times out, or a source changes layout unexpectedly. Staged processing also makes it easier to isolate bottlenecks.

For teams used to ad hoc scripts, this is the biggest shift in mindset. You are no longer “getting data off a page”; you are operating a controlled workflow with measurable quality. The architecture approach parallels the practical resilience found in edge and serverless cost control and the operational discipline in vendor evaluation for data products.

7.2 Instrument quality metrics from day one

Track precision, recall, field completeness, OCR confidence, parser success rate, and validation failure rate. These metrics tell you whether the pipeline is improving or merely processing more documents. For options-contract extraction, field-level accuracy matters more than document-level pass rate because one malformed strike or expiration can make a record unusable. Monitoring should be broken down by source type, document type, and parser version.

It is also useful to track schema drift. If a web page changes its table order or a broker exports a new PDF format, your metrics will show a sudden shift in failures. That gives you an early warning before downstream consumers notice bad records.

7.3 Version every parser and validator

When a source changes, you need to know exactly which parsing rules produced which records. Version your extraction rules, OCR settings, and validation logic independently. If a record later proves wrong, you should be able to replay it with the old version or the upgraded one and compare results. This is essential for debugging and compliance review.

Versioning also helps teams move faster. Instead of breaking the entire pipeline to update a single source adapter, you can ship a versioned fix and observe its behavior on a subset of traffic. For practical modular thinking, the patterns in reusable code snippets and governed AI oversight are worth applying.

8) Secure sensitive financial documents and control access

8.1 Encrypt data in transit and at rest

Financial documents can contain account numbers, trade history, customer details, and account metadata. Your pipeline should encrypt uploads, intermediate artifacts, and stored outputs. If OCR or parsing workers write temporary files, protect those as well and delete them promptly. Encryption is not only a compliance checkbox; it is a baseline operational safeguard.

Access should also be segmented. Not every system that consumes normalized options records needs access to the original PDFs or screenshots. Separate raw document storage from structured record storage, and apply least-privilege policies between them. This approach aligns with the secure integration mindset in Designing Secure SDK Integrations and private-markets platform compliance design.

8.2 Minimize retention of raw artifacts

Retain raw source files only as long as necessary for audit, troubleshooting, or legal requirements. Once a record is validated and stored, consider whether the original scan needs to remain broadly accessible. In many organizations, the answer is no, especially when the structured output already captures the business value. Fewer retained artifacts means less exposure and simpler governance.

Retirement policies should be explicit. Define retention windows by document class and sensitivity. SEC-style disclosures may require different retention treatment than a routine brokerage statement or a public option chain page. Clear policy beats improvised cleanup.

8.3 Audit every exception path

Exception handling often leaks data or creates invisible quality gaps. If a file fails OCR and is sent to a manual queue, that queue needs the same security controls as the automated path. If a document is rejected, preserve the error code and minimal evidence needed for diagnosis, not the full sensitive payload if you can avoid it. A secure pipeline is one where exceptions are intentionally designed, not accidental side effects.

Pro Tip: Treat validation failures as security events if they trigger manual review of sensitive financial documents. That mindset improves logging, access control, and accountability.

9) Practical implementation blueprint

9.1 A sample end-to-end workflow

A practical pipeline might look like this: fetch an option chain page, extract DOM data, store the raw HTML snapshot, and normalize row data into a staging table. If the source is a PDF, classify it as text-based or scanned, extract layout, run OCR if needed, and map tokens into the same staging schema. Then apply contract validation rules, compare records against reference data, and publish only the validated rows to your analytics or trading support system.

This workflow gives you observability at every stage. If a browser session fails, you know it is an ingestion issue. If OCR produces weak confidence, you know it is a preprocessing issue. If a record fails normalization, you know the problem is semantic rather than mechanical. That clarity is what makes automation maintainable.

9.2 Example validation ruleset

Here is a compact example of validation logic you would likely implement:

{
  "required_fields": ["underlying", "expiration_date", "contract_type", "strike"],
  "contract_type": ["CALL", "PUT"],
  "strike": {"min": 0, "precision": 2},
  "bid_ask": {"bid_le_ask": true},
  "volume": {"min": 0},
  "open_interest": {"min": 0},
  "symbol_format": "underlying+date+type+strike_encoding",
  "confidence_thresholds": {"ocr": 0.85, "parser": 0.95}
}

You can adapt these rules to your source mix. For web pages, the confidence threshold may be lower because HTML parsing is typically more deterministic. For scanned PDFs, it may need human review for any row that falls below a stricter score. The key is consistency: every record should move through the same rule engine, even if the source adapter differs.

9.3 Integrate with downstream systems via API

Once the data is normalized and validated, expose it through a stable API or push it into a warehouse, search index, or message queue. The integration contract should be more stable than the source contract. That way, downstream teams do not care whether the record came from a brokerage PDF or a live options page; they receive one consistent schema. This is where developer-first design pays off.

If you are building internal tools, keep the API predictable, documented, and versioned. That reduces maintenance overhead and speeds onboarding for new consumers. For API strategy and integration patterns, use AI-enhanced API design principles and secure SDK integration lessons as inspiration for a robust interface layer.

10) Common failure modes and how to avoid them

10.1 Over-reliance on OCR for web pages

A frequent mistake is rendering a webpage and OCRing it when the data was already available in HTML. That adds cost, latency, and error risk without any benefit. Use OCR only when the page is image-based, obfuscated, or technically inaccessible. In other words, parse first, OCR second.

Another common issue is ignoring cookie banners and modal overlays. They can hide the underlying content and corrupt screenshots. Preflight logic should dismiss or bypass these elements before capture. This is a basic reliability step, but it saves a lot of downstream cleanup.

10.2 Silent coercion of bad values

Do not silently convert bad values into seemingly valid records. A missing decimal point, malformed date, or broken contract symbol should trigger a validation event, not an implicit guess. Silent coercion is one of the fastest ways to poison a financial dataset. A pipeline that rejects questionable records is usually better than one that confidently lies.

That principle applies especially when users depend on the output for market analysis or automation. Conservative validation helps preserve trust, which is the real asset in data products. If you need a broader framework for deciding when to automate versus defer, see Deferral Patterns in Automation.

10.3 Failing to measure source drift

Source drift is inevitable. Website layouts change, brokers update export templates, and filing formats evolve. If you do not track drift with tests and metrics, you will only discover the problem after bad data reaches production. Build sample-based regression tests from known source snapshots and rerun them whenever you modify parsing logic.

It is also smart to maintain a small set of “golden documents” representing each major source class. Reprocess them on every release and compare extracted records byte-for-byte or field-for-field. That gives you a low-cost safety net.

11) A comparison of extraction approaches

11.1 When to use each method

The right extraction method depends on the source. HTML parsing is best for clean chain pages. OCR is best for scanned or image-only PDFs. Hybrid processing is best for documents that mix text, tables, and embedded scans. The table below summarizes common tradeoffs for financial document automation.

MethodBest ForStrengthsWeaknessesTypical Validation Focus
HTML parsingOption chain pages, quote pagesFast, accurate, low-costBreaks with layout changes or anti-bot controlsSchema mapping, row completeness
PDF text extractionDigitally generated brokerage PDFsPreserves selectable text and basic structureWeak on tables and wrapped textColumn alignment, numeric parsing
OCR on scanned PDFsFaxed, photographed, or image-only formsWorks when no text layer existsLower accuracy, slower, needs cleanupConfidence thresholds, character-level checks
Hybrid OCR + parsingComplex financial statementsBalances robustness and accuracyMore engineering effortCross-source consistency, provenance
Manual review queueLow-confidence exceptionsHighest trust for edge casesSlow and expensiveException classification, SLA tracking

For most teams, the recommended default is hybrid. Use direct parsing whenever the source provides machine-readable HTML or text, and use OCR as a fallback for scanned documents. Normalize everything into one schema, validate aggressively, and keep the raw artifact for audit. That gives you the best mix of speed, accuracy, and operational control.

If you are still deciding how much infrastructure to build in-house, the analysis in " may not help, but the broader planning mindset in compliance-focused platform design absolutely will.

12) Final checklist for production launch

12.1 Implementation checklist

Before launch, verify that you have a canonical schema, source adapters, preprocessing, extraction, normalization, validation, persistence, and monitoring. Confirm that every stage is versioned, logged, and recoverable. Test at least one clean HTML source, one digitally generated PDF, and one scanned PDF to ensure your pipeline handles realistic variance. Build a small set of gold-standard records to measure baseline accuracy.

Also confirm that security controls are in place for raw documents and extracted records. Financial document automation often fails not because the OCR is weak, but because governance was treated as an afterthought. If you get governance right early, you can scale with far fewer surprises. For a broader organizational lens, read Board-Level AI Oversight and vendor stability metrics.

12.2 Metrics to watch after launch

Track extraction coverage, validation pass rate, field-level accuracy, average latency, retry counts, and manual review volume. Segment those metrics by source type and parser version so you can quickly see where performance changes. A healthy pipeline should gradually reduce review burden while maintaining or improving precision. If review volume spikes, look first for source drift, OCR quality degradation, or validation rule regressions.

Over time, use these metrics to decide where to invest. If HTML parsing is near-perfect, keep it lean. If scans are a major volume source, invest in better preprocessing and OCR tuning. If a particular brokerage PDF format generates repeat exceptions, create a dedicated adapter rather than forcing a generic parser to do everything.

FAQ

What is the best architecture for an options-contract OCR pipeline?

The best architecture is usually hybrid: parse HTML first, extract embedded text from PDFs second, and run OCR only when needed. Then normalize all outputs into a canonical schema and validate with finance-specific rules. This minimizes cost while preserving accuracy.

Should I use OCR for web page option chain data?

Usually no. Web option chain pages often contain clean HTML or structured data that is more accurate and faster to parse than OCR. Use OCR only when the page content is inaccessible, image-based, or heavily obfuscated.

How do I validate extracted option contract records?

Check required fields, enforce numeric ranges, verify expiration dates, decode contract symbols, and compare fields across sources when possible. Also keep confidence scores and provenance data so you can route low-quality records to review.

What data should be preserved for auditability?

Store source URL, capture timestamp, raw artifact hash, page number, extraction method, parser version, confidence scores, and validation outcomes. This makes the record traceable and supports debugging, compliance, and replay.

How do I handle scans with poor OCR quality?

Use preprocessing steps like deskewing, denoising, and contrast normalization before OCR. Then apply stricter validation, and route only low-confidence or high-impact records to human review. Do not silently coerce ambiguous values.

How can I scale the pipeline safely?

Use staged orchestration, versioned parsers, idempotent jobs, and source-specific metrics. Separate raw document storage from normalized records, and restrict access based on least privilege. That keeps the pipeline maintainable as volume grows.

Advertisement

Related Topics

#workflow automation#financial data#OCR
D

Daniel Mercer

Senior SEO Content Strategist

Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.

Advertisement
2026-04-16T15:43:45.326Z