Skip to Content
GrantAudit Trail — Grant Requirement → Build Artifact

Audit Trail — Grant Requirement → Build Artifact

Source: grant/audit-trail.md · synced 2026-06-12

Living ledger. Every grant clause and every Annex 3 deliverable maps to a specific artifact in the codebase or workspace. Update as artifacts are produced. Canonical reference: SOURCE-OF-TRUTH.md §1 for the grant rules and the 12-step → Annex 3 mapping.


Annex 3 Deliverables → Artifacts

1. AI-Powered Resourcing

Required outcomeArtifact (path / location)Status
Candidate scraping systemapp/resourcing/candidates/ + Apify integration⏳
Employer / job listing scraping (BD)app/resourcing/employers/⏳
AI deep researchapp/resourcing/research/ (Inngest worker)⏳
Auto-tagging engineapp/resourcing/tagging/⏳
Per-tenant configurabilityTenant settings UI + DB schema⏳
Demo at auditLive demo: scrape → enrich → tag → store⏳

2. AI Candidate Filtering & Matching

Required outcomeArtifact (path / location)Status
JD parserapp/matching/jd-parser/⏳
Conditional mapping rubrics engineapp/matching/rubrics/⏳
AI scoring engineapp/matching/scoring/⏳
4× grant-level vertical encyclopedias (per proposal)reference/verticals/ — commodities-and-renewables.md, shipping-and-maritime.md, offshore-services.md, tech-and-gaming.md🟡 stubs in place
4× grant-level vertical rubric configs (proprietary domain layer)reference/rubric-configs/ — commodities.json, maritime.json, offshore.json, tech-gaming.json🟡 stubs in place
5× operational sub-function tag vocabularies (real data layer — see SOURCE-OF-TRUTH.md §3)cargo-ops, ship-ops, risk-analytics in title-normaliser plan; finance-fo, ops-back-office TBD🟡 3 of 5 drafted
CV parser (incl. grounding + staleness hardening)calibre-app/src/lib/cv-parser/✅ shipped on feat/parser-hardening
CV normalisercalibre-app/src/lib/cv-normaliser/⏳ designed not built
JD parsercalibre-app/src/lib/jd-parser/⏳ designed not built
JD normalisercalibre-app/src/lib/jd-normaliser/⏳ designed not built
Layer 1 hard fitcalibre-app/src/lib/matching/layer1-hard-fit.ts⏳ designed not built
Adjacency resolver (ratified config + live inference)calibre-app/src/lib/matching/adjacency/* + config/adjacency-ratified.json⏳ designed not built
Layer 2 deep assessmentcalibre-app/src/lib/matching/layer2-deep-assessment.ts⏳ designed not built
Layer 3 verdict synthesiscalibre-app/src/lib/matching/layer3-verdict.ts⏳ designed not built
Per-vertical demo content (Calibre JDs across all 4 verticals)Live system + screenshots in project report⏳
Shortlist UIapp/matching/shortlist/⏳
Demo at auditLive demo: upload JD → see ranked shortlist with score rationale, show 4 vertical configs in admin⏳

3. AI-Driven Candidate Outreach

Required outcomeArtifact (path / location)Status
Personalisation engineapp/outreach/personalisation/⏳
Per-vertical tone guidesreference/tone-guides/⏳
Email send pipelineapp/outreach/send/ (Instantly/Smartlead webhook)⏳
LinkedIn touchpoint sequencingapp/outreach/sequences/⏳
Response → DB enrichmentapp/outreach/responses/⏳
BD outreach (thin)app/outreach/bd/⏳
Demo at auditLive demo: shortlist → generate emails → send → response logged⏳

Other Annex 3 deliverables

Required outcomeArtifact (path / location)Status
Project report on Calibre letterheadoutputs/project-report-final.docx⏳
Training materials — module decks (3)outputs/training/module-decks/⏳
Training materials — vertical decks (4)outputs/training/vertical-decks/⏳
Training materials — SOPs (per module + per vertical)outputs/training/sops/⏳
Training materials — recorded sessionsoutputs/training/recordings/⏳
Training attendance recordoutputs/training/attendance-log.xlsx⏳
Productivity before/after data (per vertical breakdown)outputs/productivity-measurements.md⏳

Compliance / PDPA artifacts

Required outcomeArtifact (path / location)Status
Data Processing Agreement between Calibre + 3NMP (per Annex 1.34 PDPA compliance)_archive/2026-05-24-DPA-Calibre-3NMP.md (gitignored — Tier C internal, archived 2026-06-03)✅ drafted 2026-05-24
Privacy policy on productisation surface<productisation-domain>/privacy (Step 10; domain TBD, previously planned getcalibre.ai abandoned 2026-06-04)⏳
Cookie / consent banner on productisation surface<productisation-domain> (Step 10)⏳

Approval Letter Framing → Artifacts

The approval letter (Annex 4) approves the spend on the basis that this is “a product that we will be marketing to other Headhunting Agencies.” That framing must be defensible at audit.

Claim in approvalDefending artifactStatus
”AI Platform”Multi-tenant Next.js + Supabase architecture with public domain⏳
“Marketing to other Headhunting Agencies”Public marketing landing page, pricing tiers, signup flow⏳
“Proprietary”Custom rubric engine, scoring algo, vertical encyclopedias (in-repo, not 3rd-party)⏳
“Software” line item ($28K)Codebase, schema, deployments — all attributable to 3NMP development time⏳
“Audit Fee” line item ($1,800)Invoice from EnterpriseSG-panel auditor⏳

Annex 1 Standard T&Cs → Compliance Posture

ClauseRequirementHow we comply
1.1Independent auditor verifies claimCalibre to engage from EnterpriseSG panel before claim
1.2Complete project + achieve Annex 3 by qualifying period endInternal target: Sep 2026 functional, Dec 2026 polish
1.3Inform EnterpriseSG of any project variation in writingMaterial scope changes flagged in this workspace and escalated to Calibre
1.4Maintain ≥30% local equityCalibre’s responsibility — confirm ongoing
1.5Fair value, not inflated pricing$28K maps to ~10–11 weeks of Next.js + Supabase + integration work — defensible
1.6EnterpriseSG logo/name use requires consentAvoid using their logo in Calibre’s marketing of this product
1.7Reimbursement only on bank transfer or chequeCalibre to pay 3NMP via bank transfer; no cash
1.12No rebate/cashback/credit between Calibre and 3NMP from grantNo side arrangement involving the grant portion. Period.
1.13Declare relationships between parties3NMP (Ben) and Calibre (Calibre) have no equity / family / director ties — clean
1.30No double-fundingThis project is funded only by EDG 26032AYH
1.34Comply with all applicable lawsPDPA compliance for scraping (smart scraping + consent on response)
4.2 / 4.3Equipment/IP cannot be sold/disposed/moved out of SG for 1 year post-completionCodebase + IP stays with Calibre (or licensed structure with 3NMP) — confirm legal structure before claim

Risks & Open Items

RiskSeverityMitigation
Calibre cannot demonstrate productisation intent at auditHighReal Stripe (test mode), real signup, 1-2 demo tenants live
Auditor questions Apify/Apollo as “third-party” not “proprietary”MedFrame as data ingestion infrastructure (Calibre opex). Proprietary = our orchestration + rubrics + scoring + UI
Productivity claims (3-5x, 20-40%) unsubstantiatedHighCapture baseline BEFORE go-live. Track real numbers Sep–Dec.
Training records insufficientMedRecord every session from day 1. Maintain attendance log.
Productisation domain not registered in timeLowPick + register new productisation domain (previously planned getcalibre.ai abandoned 2026-06-04) before Step 10 starts. Current docs surface already live at calibredocs.3nm.io.
Annex 4.3 “equipment” interpretation includes the codebaseMedConfirm IP ownership clause with Calibre — Calibre owns the deployed instance, 3NMP owns the underlying IP via license?

How To Use This Doc

  • Before any build session: open this + scope.md. Confirm the work maps to a row.
  • After any build session: update Status column. Link to the actual file/PR if helpful.
  • Before audit: every row should be ✅. Anything ⏳ becomes the punchlist.
Last updated on