09 /Data & Publishing

Uploads, extraction review, quality and integrations.

How the August package was ingested, checked and published.

Freshness

Every dataset, its data date and its age · 19 current · 0 aging · 1 stale

checked 29 Sept, 18:54 IST
DatasetStatusData dateAgeCadenceRefresh
Monthly release (factsheet, holdings, sector table)
Buoyant source package
current31 Aug 202629 daysMonthly, ~10thUpload next month's package on Data → Uploads
Per-name weights sheet
PMS sheet (Operations)
stale31 Jul 202660 daysMonthlyUpload the month's PMS sheet
Approved research (sector chapters, one-pagers, market view)
Why We Own What We Own; Perspectives
current31 Aug 202629 daysQuarterly / on changeRe-extract from the new sheet; rebuild corpus
Reference prices · held names + 3 indices
Yahoo Finance (unlicensed reference)
current28 Sept 20261 dayEvery session (cron 15 min)python3 scripts/fetch-yahoo.py && node scripts/build-release.mjs
Listed universe · prices & returns (6,500 names)
NSE/BSE masters + Yahoo Finance
current28 Sept 20261 dayDaily (cron)python3 scripts/fetch-universe.py && npx tsx scripts/build-universe.ts
Index constituents & sector indices
NSE archives + Yahoo Finance
current28 Sept 20261 dayDailypython3 scripts/fetch-market.py && npx tsx scripts/build-market.ts
Fundamentals · statements, ratios, screener fields
Tijori Finance
current24 Sept 20265 daysWeekly; daily in results seasonnode scripts/tijori-universe.mjs && node scripts/build-fundamentals.mjs
FII / DII daily cash-market activity
NSE provisional
current28 Sept 20261 dayEvery sessionpython3 scripts/fetch-flows.py
FPI daily net investment
NSDL
current28 Sept 20261 dayEvery sessionpython3 scripts/fetch-flows.py
FPI sector-wise fortnightly
NSDL
currentInvalid Date14 daysFortnightlypython3 scripts/fetch-flows.py
Mutual-fund category flows & SIPs
AMFI monthly
currentAug 202629 daysMonthly, ~10thpython3 scripts/fetch-flows.py
PMS peers · SEBI monthly reports
SEBI PMR
currentAug 202629 daysMonthly, by ~7thpython3 scripts/fetch-pms.py --latest-only && python3 scripts/build-funds.py
Mutual-fund NAVs
AMFI
current28 Sept 20261 dayEvery sessionpython3 scripts/fetch-mf-bulk.py && python3 scripts/build-funds.py
Results calendar & reactions
NSE event calendar
current29 Sept 2026todayWeekly; daily in seasonpython3 scripts/fetch-earnings.py && node scripts/build-earnings.mjs
Ownership & crowding
Exchange filings via Tijori
current29 Sept 2026todayQuarterly, after shareholding filingsnode scripts/build-ownership.mjs
Macro sensitivities (monthly betas)
Yahoo monthly factors
currentAug 202629 daysMonthly, after month-endnode scripts/build-macro-sens.mjs
PMS peer attribution (returns-based)
SEBI PMR + NSE indices
currentAug 202629 daysMonthly, after PMRnode scripts/build-pms-attribution.mjs
Industry chapters → listed companies
Tijori + Yahoo + Atlas
current29 Sept 2026todayAfter universe rebuildnode scripts/build-chapter-companies.mjs
Research assistant corpus
One-pagers, broker notes, market view
current29 Sept 2026todayOn research changenode scripts/build-corpus.mjs
House market view
Factsheet commentary + playbook
current31 Aug 202629 daysMonthly factsheetRe-extract from the new factsheet

Status compares the data date with the dataset's own cadence: current within 75% of the stale threshold, aging beyond it, stale past the threshold. Monthly series are dated at month-end. The refresh column is the command in docs/RUNBOOK.md; the held-price, universe and flows jobs also run as Vercel crons.

Publish the next month

Drop the month's documents here

Drop the month's files here

Any mix, any order, no labels: PMS factsheet, PMS and AIF top-30 sheets, flyers, holdings CSVs. Each file is recognised from its own first page, filed under its month and vehicle, extracted beside its source lines, checked, and published when every check passes. The whole site then reads the new month.

Next month
Upload the next package →

Create a draft for an explicit month and year, upload the PDFs and an optional holdings CSV, review the extracted facts beside their source lines, approve, publish. Active release: August 2026 (pms-2026-08).

Reference prices

Refresh from Yahoo Finance (incremental, paced)

Merges the last month of closes for all symbols onto the stored series (Vercel Blob). Unlicensed reference data; internal only.

Onboarding

August 2026 · workflow status (seed release)

  1. 01Workspace created · vehicle confirmed: Opportunities PMS
  2. 02Month August · year 2026 selected (not blank)
  3. 03Uploaded factsheet, deck, flyers, top-10/top-30 sheets (PMS + AIF I–III)
  4. 04Typed, classified, period and scope assigned
  5. 05Text extracted with page references (no OCR needed: text layer present)
  6. 06Entities, dates, units, benchmark, return methodology detected
  7. 0730 names matched to the security master; 0 ambiguous
  8. 08Facts reviewed beside source pages
  9. 09Reconciled totals; conflicts: none between August documents
  10. 10Narrative sections generated from accepted facts (verbatim)
  11. 11Investment and publication review recorded
  12. 12Both audience tabs previewed; exports checked
  13. 13Published: pms-2026-08 rev 1
Coverage

What the data supports

  • Active August holdings mapped30/30
  • Reference prices current40/40 · 28 Sept 2026
  • Financial statements available40/40
  • Segment mix available40/40
  • Approved theses (July book)40/40 · 30/30 Aug names
  • Valuation models with a stated target4 (banks)
  • Per-name August weights0/30 — missing input
  • Daily NAV / TRI seriesmissing input
Quality checks

9/9 passing

  • PassCore/Satellite + cash = 100%
  • PassMarket-cap mix + cash = 100%
  • PassSector weights + other + cash = 100%
  • PassRelative = portfolio − benchmark (all periods, ±0.01)
  • PassTop-30 count = 30, unique names
  • PassEvery August name mapped to a security (NSE symbol + Tijori slug)
  • PassUnit consistency: ₹ crore throughout Tijori statements; % for ratios
  • PassFactsheet 5-yr consistency (96.6%) vs displayed 97% — rounding disclosed
  • PassDuplicate upload detection (SHA-256) — no duplicate hashes

Recomputed at build time from the frozen facts; tolerances per PRD §20.5.

Extraction review · split view

Candidate facts beside their source

7 accepted · 1 deferred · 1 rejected
Buoyant PMS Factsheet – Aug 2026.pdf · page 2 · text layer
Buoyant Opportunities PMS 1.64 5.96 2.01 11.38 8.92 15.42 18.07 24.35 20.31 20.77
Extracted
1.64
Normalised
1.64%
Unit · period
% absolute · Aug 2026
Entity
Opportunities PMS
Conflict state
none

Acceptance does not imply approval for every audience. Decisions here are session-only until a persistence adapter is configured; the published revision reflects the recorded review.

The panel above is the recorded August review (seed release). Live extraction review for uploaded months happens in the release workbench.

Integrations

Provider adapters and health

  • ConnectedSource package (PDF)

    16 August files + 6 supporting, hashed; text layer extracted with pdftotext; structured extraction reviewed.

    Monthly
  • ConnectedFundamentals · Tijori Finance

    Local MCP batch (370 calls) for 40 companies: statements, ratios, quarterly, segments, shareholding, operating metrics. Not licensed for redistribution.

    On demand (local only — no HTTP transport)
  • ReferencePrices · Yahoo Finance (reference)

    Daily closes, 2 years, 40 symbols + 3 indices. Unlicensed reference data; split-adjusted close used, dividends excluded.

    Manual, paced (rate limits)
  • Not configuredBenchmark · BSE 500 TRI daily

    Not licensed. Published monthly/period returns from the factsheet only; daily comparisons disabled, no interpolation.

    —
  • Not configuredAccounting · custodian / fund accounting

    No account positions, transactions, flows or NAV series supplied. Account mode, daily P&L, contribution and drawdown disabled.

    —
  • ConnectedRelease store · Vercel Blob

    Monthly releases, uploaded sources, review decisions, approvals and refreshed prices persist in a private Blob store.

    Per publish
  • Not configuredDatabase · PostgreSQL

    No DATABASE_URL configured. Facts, releases and reviews live in the release store as versioned JSON documents; a relational core is a later hardening step.

    —
  • Not configuredObject storage

    No bucket configured; originals referenced on disk.

    —
  • Not configuredAI drafting / grounded answers

    No provider key configured. No AI content is present in the release; all narrative is transcribed from approved documents.

    —
  • Not configuredIdentity / SSO

    No IdP configured. Deployment is a single internal workspace; role enforcement is a policy allowlist on the prospect view.

    —
Import templates

CSV templates (documented columns)

  • holdings.csv — portfolio_id, as_of, ISIN, exchange, ticker, quantity, price, currency, cost (opt), classification (opt)
  • cash_liabilities.csv — portfolio_id, as_of, currency, category, amount
  • transactions.csv — transaction_id, portfolio_id, ISIN, type, trade_date, settlement_date, quantity, price, fees, currency
  • external_flows.csv — flow_id, portfolio_id, timestamp, direction, amount, currency, cash_or_security, valuation_reference
  • accounting_values.csv — portfolio_id, date, net_value, currency, return_basis, official_return_if_available
  • published_performance.csv — scope_id, start_date, end_date, return, benchmark_return, cumulative_or_annualised, gross_or_net, source
  • research_models.csv — company_id, fiscal_period, metric, value, unit, estimate_type, model_version, author

Templates ship in templates/ with synthetic example rows labelled "Demonstration data". Identifier mapping is a separate workflow; uploads return cell-level errors.

Required inputs from Buoyant

To complete the analytics

  1. August PMS sheet with per-name weights (unblocks atlas weights, concentration reconciliation, contribution approximation on August weights).
  2. Audited aggregate NAV series and BSE 500 TRI daily levels (growth-of-100, drawdown, monthly heatmap, rolling stats recomputation).
  3. Positions, transactions, flows and cash for a representative or client account (reconciled contribution, account mode).
  4. Licensed price and corporate-action feed with display rights (replaces reference prices).
  5. One-pagers for the August names without a page in the July book (Research).
  6. Named data owner, investment reviewer and publication reviewer (approval attribution).