Uploads, extraction review, quality and integrations.
How the August package was ingested, checked and published.
Every dataset, its data date and its age · 19 current · 0 aging · 1 stale
| Dataset | Status | Data date | Age | Cadence | Refresh |
|---|---|---|---|---|---|
| Monthly release (factsheet, holdings, sector table) Buoyant source package | current | 31 Aug 2026 | 29 days | Monthly, ~10th | Upload next month's package on Data → Uploads |
| Per-name weights sheet PMS sheet (Operations) | stale | 31 Jul 2026 | 60 days | Monthly | Upload the month's PMS sheet |
| Approved research (sector chapters, one-pagers, market view) Why We Own What We Own; Perspectives | current | 31 Aug 2026 | 29 days | Quarterly / on change | Re-extract from the new sheet; rebuild corpus |
| Reference prices · held names + 3 indices Yahoo Finance (unlicensed reference) | current | 28 Sept 2026 | 1 day | Every 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 | current | 28 Sept 2026 | 1 day | Daily (cron) | python3 scripts/fetch-universe.py && npx tsx scripts/build-universe.ts |
| Index constituents & sector indices NSE archives + Yahoo Finance | current | 28 Sept 2026 | 1 day | Daily | python3 scripts/fetch-market.py && npx tsx scripts/build-market.ts |
| Fundamentals · statements, ratios, screener fields Tijori Finance | current | 24 Sept 2026 | 5 days | Weekly; daily in results season | node scripts/tijori-universe.mjs && node scripts/build-fundamentals.mjs |
| FII / DII daily cash-market activity NSE provisional | current | 28 Sept 2026 | 1 day | Every session | python3 scripts/fetch-flows.py |
| FPI daily net investment NSDL | current | 28 Sept 2026 | 1 day | Every session | python3 scripts/fetch-flows.py |
| FPI sector-wise fortnightly NSDL | current | Invalid Date | 14 days | Fortnightly | python3 scripts/fetch-flows.py |
| Mutual-fund category flows & SIPs AMFI monthly | current | Aug 2026 | 29 days | Monthly, ~10th | python3 scripts/fetch-flows.py |
| PMS peers · SEBI monthly reports SEBI PMR | current | Aug 2026 | 29 days | Monthly, by ~7th | python3 scripts/fetch-pms.py --latest-only && python3 scripts/build-funds.py |
| Mutual-fund NAVs AMFI | current | 28 Sept 2026 | 1 day | Every session | python3 scripts/fetch-mf-bulk.py && python3 scripts/build-funds.py |
| Results calendar & reactions NSE event calendar | current | 29 Sept 2026 | today | Weekly; daily in season | python3 scripts/fetch-earnings.py && node scripts/build-earnings.mjs |
| Ownership & crowding Exchange filings via Tijori | current | 29 Sept 2026 | today | Quarterly, after shareholding filings | node scripts/build-ownership.mjs |
| Macro sensitivities (monthly betas) Yahoo monthly factors | current | Aug 2026 | 29 days | Monthly, after month-end | node scripts/build-macro-sens.mjs |
| PMS peer attribution (returns-based) SEBI PMR + NSE indices | current | Aug 2026 | 29 days | Monthly, after PMR | node scripts/build-pms-attribution.mjs |
| Industry chapters → listed companies Tijori + Yahoo + Atlas | current | 29 Sept 2026 | today | After universe rebuild | node scripts/build-chapter-companies.mjs |
| Research assistant corpus One-pagers, broker notes, market view | current | 29 Sept 2026 | today | On research change | node scripts/build-corpus.mjs |
| House market view Factsheet commentary + playbook | current | 31 Aug 2026 | 29 days | Monthly factsheet | Re-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.
Drop the month's documents 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.
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).
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.
August 2026 · workflow status (seed release)
- 01Workspace created · vehicle confirmed: Opportunities PMS
- 02Month August · year 2026 selected (not blank)
- 03Uploaded factsheet, deck, flyers, top-10/top-30 sheets (PMS + AIF I–III)
- 04Typed, classified, period and scope assigned
- 05Text extracted with page references (no OCR needed: text layer present)
- 06Entities, dates, units, benchmark, return methodology detected
- 0730 names matched to the security master; 0 ambiguous
- 08Facts reviewed beside source pages
- 09Reconciled totals; conflicts: none between August documents
- 10Narrative sections generated from accepted facts (verbatim)
- 11Investment and publication review recorded
- 12Both audience tabs previewed; exports checked
- 13Published: pms-2026-08 rev 1
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
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.
Candidate facts beside their source
- 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.
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.
—
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.
To complete the analytics
- August PMS sheet with per-name weights (unblocks atlas weights, concentration reconciliation, contribution approximation on August weights).
- Audited aggregate NAV series and BSE 500 TRI daily levels (growth-of-100, drawdown, monthly heatmap, rolling stats recomputation).
- Positions, transactions, flows and cash for a representative or client account (reconciled contribution, account mode).
- Licensed price and corporate-action feed with display rights (replaces reference prices).
- One-pagers for the August names without a page in the July book (Research).
- Named data owner, investment reviewer and publication reviewer (approval attribution).