Abdullah Akbar Khalid

Operator-founder · INSEAD MBA · UK & EU private markets

Most people can read a deal or build a product. I do both.

I build the tooling I need for the job, then open-source it: deal sourcing at register scale, covenant checks, AI governance records, memo verification. The diligence stack I wanted and couldn't buy.

Source: screening engine · covenant · oversight · cited-memo · command center · everything on GitHub
Live demos: covenant dashboard · oversight evidence pack

Exhibit A · Sourcing at register scale public · python

Companies House Screening Engine[1]

Which founder-owned tech-services firms actually fit a roll-up thesis, including the ones no keyword search would ever surface? This engine takes the entire UK register (~5M companies, 400+ columns) down to a ranked, defensible shortlist: it discovers each company's website, classifies it with rules + Claude on a four-axis taxonomy, recovers financials from iXBRL accounts, and scores defensibility.

The funnel: one register in, one shortlist outHover any stage
~5,000,000 · UK register, bulk
tech / IT SIC filter
website discovered & scraped
classified on 4-axis taxonomy
financials recovered (iXBRL)
ranked, defensible shortlist
How it operates: two pipelines over one registerHover any stage
Pipeline 1
src/01-09
UK bulk register~5M rows · 400+ cols
Filtertech / IT SIC
Discover + scrapefind each site
Classifyrules + Claude · 4 axes
Roll up + scoreniche clustering
Pipeline 2
scripts/10-31
Recoversites + owners
Pull accountsCompanies House iXBRL
Triangulaterevenue / EBITDA
Defensibilitymoat scoring
Consolidateone master table
Output
Ranked, deduped target universe with estimated financials and defensibility scores
PythonClaude APIiXBRLCompanies House bulk data
Read the full case
Exhibit B · Covenant strength public · live demo

Covenant[2]

A lease is offered by entity X. Is that covenant real? Search the register for "Pret A Manger" and twenty entities come back, two of them named almost identically. One is the trading company filing full accounts since 1984. The other is a 2018 acquisition vehicle, formerly JAB (ACQUISITION) LTD. Same brand, same registered address, opposite covenant.[3]

Covenant screens tenant strength from free, public Companies House data (one tenant, a rent roll, or the whole country) instead of a per-report credit agency fee.

Real register data: the example that carries the ideaHover either entity
PRET A MANGER LIMITED
No. 11391321 · inc. 2018
SIC 64209 · holding company
audit-exemption subsidiary
Band C · 55/100
require guarantee or deposit
PRET A MANGER (EUROPE) LIMITED
No. 01854213 · inc. 1984
SIC 47110 · retail, trading
full accounts filed
Band A · 100/100
institutionally acceptable
How it operates: register in, defensible verdict outHover any stage
Live path
Companies House APIfree, public register
covenant.pydeduction ledger, each rule names its filing
app.py (Flask)search · certificate · compare
Band A to E + score
Scale path
Parquet snapshot5,695,465 companies
sweep.py + DuckDB~0.6s per postcode, cached
freeze.pyrenders the app to static HTML
GitHub Pagesdemo that never sleeps
PythonCompanies House APIDuckDBGitHub Pages demo
Read the full case
Exhibit C · Governed AI public · live evidence pack

Oversight[4]

Since 9 March 2026, a RICS member whose AI use materially affects surveying work has to be able to show four things: which AI systems the firm uses, that a named qualified surveyor wrote a decision on how reliable the output was, that the client was told in the Terms of Engagement, and that the vendor was diligenced.[5] That is a records problem, and I could not find a single tool built for it.

Oversight keeps those records as plain files in a git repository, so authorship, timestamps and append-only history come free: the audit trail is the repo. check exits non-zero and names the obligation each failure would breach. pack renders the regulator-ready evidence pack and refuses to run while any check fails, so a pack existing is itself evidence the records were coherent when it was made.

The repository is the database. Each path evidences an obligation.Hover any path
your-compliance-repo/
├── config.yamlfirm, staleness thresholds
├── systems/*.yamlGovernance. Every AI system, each with a named surveyor
├── rdrs/<engagement>/Documentation. The reliability decision, bound to the SHA-256 of the output
├── disclosures/*.mdClient transparency. ToE wording, generated from the register
├── dd/*.mdRisk management. Vendor procurement diligence
└── incidents/*.mdRisk, lifecycle. Outputs rejected and errors caught
How it operates: capture, store, enforceHover any stage
Capture
initfirm config
add-systemthe AI register
rdrbinds SHA-256 of the output
discloseToE text
dd · incidents
Store
Plain files in a git repository: systems/ · rdrs/ · disclosures/ · dd/ · incidents/the commit log is the evidence timeline
Enforce
checkexits non-zero, names the obligation breached
packrefuses to render while any check fails
Regulator-ready record

The example firm registers Covenant as one of its AI systems, with a real reliability decision record for a real screening. One tool doing surveying work with AI, one tool governing AI to surveying standards.

PythonJinja2git as the databaseSHA-256 output binding
Read the full case
Exhibit D · Provenance public · python

cited-memo[6]

AI drafts a plausible investment memo in seconds. The problem is the next hour, when an associate re-checks every figure against the data room because nobody can tell which numbers came from the accounts and which the model invented. cited-memo inverts it: it drafts from source documents only, cites the exact page behind every figure, then grades its own output (offline, no API key).

You check the two flagged sentences instead of all twenty-six.

The self-grade: real output formatHover any line
traceable figures : 24/26 (92%) invalid citations : 0 unsupported claims: 2 - EBITDA margin of 18% is expected to hold through FY26. - Management estimates a further £400k of synergies.
How it operates: drafting is cheap, verification is the productHover any stage
Ingest
Source PDFsthe data room
Extractevery page becomes a numbered passage, tagged document and page
Draft
The model writes from those passages only, and must follow each figure with the citation it came from
Verify
Offline checkerno API key, no model in the loop
Catches three failuresuncited figure · citation to a passage that does not exist · claim with no evidence
Graded memocoverage, invalid citations, unsupported claims
PythonPDF extractionoffline verification
Read the full case
Exhibit E · Operations public · react + supabase

Command Center[7]

One dashboard for what six apps and my head used to hold: today's priorities, the backlog, overdue items, people I owe a reply, the job pipeline. My AI automations capture into it all day. The page that justifies the project is Automation Health, because automations fail silently and a briefing that stops arriving looks identical to a quiet news day until something checks.

Nine surfaces, one honest readHover any surface
Today
Tasks
Overdue
Calendar
People
Jobs
Score
Remaining
Automation Health
ReactTypeScriptSupabaserow-level authedge functions
Read the full case
Exhibit F · Market mapping public figure · pipeline private

The AI-Impact Map[8]

"Which industries will AI eat" is usually answered at the level of a category, which is the wrong altitude: AI acts on tasks, and every category is a bundle of tasks with wildly different exposure. So I scored 681 UK business-model subsectors individually on nine anchored criteria, across two independent axes, and attached live Companies House counts so the size of each bubble is a real number of real companies.

The finding that mattered was not the answer. Scoring 50 subsectors twice with two different models as judges produced only 33% exact agreement, and the disagreement was systematic rather than noisy. When your quadrant boundary is a median, mixing judges silently sorts one judge's rows into different quadrants than the other's. I re-scored all 681 with one judge.

681 UK subsectors, two independent axesHover any quadrant
166FortifiedAI lifts demand, cannot do the work
180ContestedRising demand, real substitution risk
134InertLargely untouched either way
201ErodingSubstitutable, no demand offset
PythonCompanies House APILLM scoringinter-rater agreement
Read the full case
Exhibit G · Revealed strategy public · python

What a job board says that a strategy deck does not

A strategy deck is a claim. An open requisition is a budget somebody already signed. So I read the second one: point this at any company's public job board and it returns the investment mix by region and function, ready to set against where the revenue actually comes from.

Run against Elastic's 250 live requisitions, the gap is immediate. International is 46% of revenue but 63% of open roles. The mix, though, inverts: outside the US more than half of hiring is engineering, while inside the US nearly half is field. The US alone holds more field requisitions than the whole of EMEA. Read together, a good share of what looks like international expansion is engineering capacity placed in lower-cost hubs, and the question that follows is where International should add field capacity next.

Share of that region's open roles, by functionHover any bar
United StatesInternational
37.0% Engineering / Product 55.1%
48.9% Field / GTM 36.1%
10.9% Marketing 5.1%
3.3% G&A 3.8%

See it used in a market prioritisation model, which uses this tool for the coverage and competitor halves of the analysis.

PythonGreenhouse / Lever / Ashby APIsauditable taxonomypublic filings
Read the full case
Exhibit H · The automation stack private by necessity[9]

The systems that run my day

No repo for these; they hold my sessions and keys. A scraping engine that reads pages bot-detection blocks, including LinkedIn. A Discord to WhatsApp relay that reformats a trading community's calls into structured tables in real time. An Instagram story archiver with review notes. And a briefing pipeline that ranks everything I'm tracking and pushes a top-five to my WhatsApp twice a day, on a launchd schedule.

One flow: sources in, decisions outHover any node
Discord
Instagram
LinkedIn
job boards
scrape · parse · rankPython · Playwright · Claude · launchd
WhatsApp, 2×/day
Command Center
PythonPlaywrightClaude APIlaunchdWhatsApp bridge
Read the full case

References

  1. [1]github.com/akbar-33/companies-house-screening-engine
  2. [2]github.com/akbar-33/covenant · live demo
  3. [3]Companies House: No. 11391321 · No. 01854213
  4. [4]github.com/akbar-33/oversight · example evidence pack
  5. [5]RICS professional standard, Responsible use of AI in surveying practice, in force 9 March 2026. Oversight is independent tooling and is not endorsed by RICS.
  6. [6]github.com/akbar-33/cited-memo
  7. [7]github.com/akbar-33/command-center-companion
  8. [8]Company counts from the Companies House advanced-search API, queried per SIC code across all 731 codes. The scoring pipeline is private; the figure and the method note are public. Independent analysis, not affiliated with Companies House.
  9. [9]source withheld: these systems carry live credentials and personal data. Demos on request.