emileriksenkeev turns Mike into a corporate-entity register

This fork gives legal teams a place to manage the company group itself, alongside client matters.

knowledge-managementcompliance

The new entity spaces treat subsidiaries and related companies as records with their own profiles, documents and reference material. Information can be drawn from filings and internal wiki material, then corrected in place. Re-running the extraction preserves data already captured instead of overwriting it with blanks.

  • Corporate profiles cover identity, tax, capital, directors and officers, permits, and registrations.
  • A company roster gives teams a single view across their entity group.
  • Filing checklists track compliance items and link back to registrations.
  • Jurisdiction-aware profiles support Philippine and Singaporean registration requirements.
  • Each entity can have its own wiki index and document collection.
So what GCs and legal-ops teams managing a group structure should look closely: this moves Mike toward a usable corporate-records hub, not only a matter workspace.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

14 commits from emileriksenkeev/sydOS, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
ab203a1e Entities: org-wide entity spaces (backend) emileriksenkeev 2026-07-13 ↗ GitHub
commit body
Introduce first-class 'Entities' spaces (our own companies) alongside the
Vault, reusing the project model (is_entity flag + entity_profile jsonb).

- access.ts: extend the Vault org-wide bypass to is_entity projects.
- projects.ts: exclude is_entity from the normal project list; add
  GET /projects/entities returning the entity roster (name, profile, doc +
  folder counts). Entity detail reuses GET /projects/:id.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2e8787f4 Entities: bulk ingest script for entity documents emileriksenkeev 2026-07-13 ↗ GitHub
commit body
ingestEntities.js reads a manifest of local files and ingests them into
is_entity projects (find-or-create project + category folders), reusing the
upload pipeline (R2 + DOCX->PDF rendition + folder assignment). Idempotent by
(project, filename). Embedding/OCR left to the backfill scripts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
db0f5b2d Entities frontend: nav, roster page, entity surface emileriksenkeev 2026-07-13 ↗ GitHub
commit body
- AppSidebar: 'Entities' nav item.
- /entities: roster of our companies (cards: name, legal name, doc/folder
  counts, jurisdiction).
- /entities/[id]: renders the standard project surface (basePath /entities).
- Breadcrumb + back-nav are entity-aware ('Entities > <name>').
- mikeApi.getEntities(); MikeProject gains is_entity + entity_profile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
71a8aee4 Entity Overview page + auto-extraction emileriksenkeev 2026-07-13 ↗ GitHub
commit body
Entities now open to an Overview tab (default) instead of the document list:
- EntityOverview.tsx renders a structured company record - identity, SEC/BIR
  registration, tax, capital, directors/officers, contact, and a color-coded
  registrations & permits table - with inline edit + save.
- entity_profile jsonb is the store; PATCH /projects/:id/entity-profile saves it.
- extractEntityProfiles.ts reads each entity's own filings (SEC cert, 2303/1903,
  Articles, By-laws, GIS, permits) and populates the profile via the LLM.
- ProjectPage: Overview tab (entities only, default landing); tab/URL + breadcrumb
  wiring generalized. Documents/Assistant/Reviews/Wiki unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
42080640 Fix entity tab navigation: basePath must include the entity id emileriksenkeev 2026-07-13 ↗ GitHub
Entity tabs pushed /entities?tab=x (the list) instead of /entities/:id?tab=x,
so Documents/Assistant/Tabular/Wiki appeared dead. Pass basePath=/entities/:id.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2f24de37 Entity wiki index + surface it on the Overview emileriksenkeev 2026-07-13 ↗ GitHub
commit body
- buildEntityWikis.ts: build the autonomous wiki over each entity's documents.
- EntityOverview: a Summary section renders the entity's wiki (overview page) on
  the front dashboard, with a link into the full Wiki tab.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
c9175fa0 Entity profile extraction: also read the wiki as a source emileriksenkeev 2026-07-13 ↗ GitHub
Entities whose filings are scanned (OCR pending) still have a distilled wiki;
fold wiki pages into the extraction corpus so profiles populate without waiting
on OCR.
3dd92764 Entity extraction: jurisdiction-aware (Singapore + Philippines) emileriksenkeev 2026-07-14 ↗ GitHub
RX Ventures (SG holding) never populated because the extractor was PH-only.
Handle SG entities (UEN in place of SEC no., ACRA, no TIN/BIR), read all docs
+ wiki summaries.
c60b1004 Entity extraction: monotonic deep-merge (re-runs never blank out fields) emileriksenkeev 2026-07-14 ↗ GitHub
62ce9143 fix(entities): rank filings by importance in profile extraction emileriksenkeev 2026-07-14 ↗ GitHub
commit body
Entities with hundreds of docs (RX Labs: 525) had their SEC Certificate of
Incorporation crowded out of the 14-doc extraction window by the many
secretary's certificates / compliance certs that also match 'certificate'.
Rank candidate docs into priority tiers (SEC cert / BIR 2303 / Articles / GIS
first) and take the top 18, so the registration-bearing filings always make
the context window.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
de18ad0e entities: real corp names, correct breadcrumb leaf, corporate-index tabular template emileriksenkeev 2026-07-14 ↗ GitHub
commit body
- Rename entity projects to their legal corporate names (DB) and drop the now-
  duplicate legal_name subtitle on the roster cards - show entity_type instead.
- Breadcrumb: introduce a homeTab (Overview for entities, Documents for
  projects) so landing on an entity reads 'Entities > Acme Inc.' and only shows
  '> Documents' once you open Documents (previously the overview tab wrongly
  rendered '> Documents').
- Add a 'Corporate Document Index' built-in tabular review (type, date, ref/reg
  no, issuing authority, signatories, summary, validity, status) for indexing
  entity corporate records; surfaces in the tabular workflow picker.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
883c899d entities: Government Filings tab, compliance checklist, clickable registrations emileriksenkeev 2026-07-14 ↗ GitHub
commit body
- New entityCompliance module (computed at request time from the entity's docs):
  a PH compliance checklist (Formation/Tax/Local/Governance/Employer/Annual/
  Industry) marked has-missing with a link to the satisfying document; isFiling()
  classification for recurring government filings; and registration→document
  linking. Form-number matching handles BIR letter suffixes (2550Q, 0619E, 1601C).
- GET /projects/:id (entities): tag each doc is_filing, attach compliance, and
  enrich registrations with doc_id.
- New Government Filings tab (entities) with a grouped filings register; filings
  are moved OUT of the Documents list into their own tab.
- EntityOverview: remove the outdated wiki Summary block (it lives under Wiki);
  add the compliance checklist card with a completeness meter; make each
  registration row open its source document.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
96f028be entities: jurisdiction-aware compliance checklist (PH vs SG) emileriksenkeev 2026-07-14 ↗ GitHub
commit body
RX Ventures (Singapore) was scored 1/16 against the PH BIR/LGU/SSS checklist,
which doesn't apply. Add an ACRA-based SG checklist and branch by the entity's
jurisdiction; unknown jurisdictions get no checklist (UI hides it). Registration
linking now matches across both PH and SG patterns.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
102af35f fix(entities): entity profile save (missing JSON content-type) emileriksenkeev 2026-07-14 ↗ GitHub
commit body
updateEntityProfile was the only mutating apiRequest call not setting
Content-Type: application/json, so express.json() skipped the body, the handler
saw entity_profile=undefined and rejected it, and EntityOverview.save() (no catch)
silently reverted - the save never worked.

- apiRequest now defaults Content-Type: application/json for string bodies
  (FormData left alone), fixing this and preventing the whole class of bug.
- EntityOverview.save() now surfaces errors instead of silently reverting.
- PATCH /entity-profile tolerates an empty/unparsed body.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-915.md from inside the repo you want the changes in.

⬇ Download capture-thread-915.md