Submission scope: this demo runs on 97 in-scope PDFs (5 NCCA policies + 5 NCCE artefacts + 87 English Leaving Cert syllabi + 1 sample). The full BIEP substrate (DLT + CocoIndex + BAML + Google ADK + Gemma 4 + Gemini 3.5 + A2UI + Gradio + Web SPA) is preserved. See
docs/SUBMISSION_SCOPE.mdfor the full scope and the 8 jurisdictions that are deferred for this submission.
Google All Things Agentic 2026 Hackathon submission. Built with Gemini 3.5 (Vertex AI) + Gemma 4 26B-A4B (Unsloth Studio) + the Google ADK 2 agent framework. Deployed on Google Cloud Run with the editorial canvas on Hugging Face Spaces. The British Isles education system: Aistear → Bunscoil → MeanScoil → Scoil Sinsearach → Ollscoil across 9 jurisdictions (Ireland + England active; NCCE cross-jurisdiction for the showcase; NI / Wales / Scotland / IoM / Jersey / Guernsey as Phase 2).
The headline feature of the 2026-08-31 batch. The UK NCCE (National Centre for Computing Education) publishes its computing curriculum as structured row × column learning graphs — the canonical example of how every official syllabus should be modelled. The 5 lifted PDFs:
| File | Source | Shape |
|---|---|---|
learning_graph_intro_to_python_programming_y8.pdf |
leabharlann/.../pgce/syllabus/ |
4 rows × 7 columns + prerequisite arrows (Y8 Python) |
learning_graph_programming_essentials_in_scratch_parts_i_ii_y7.pdf |
leabharlann/.../pgce/syllabus/ |
6 columns + 3 cross-cutting skill ribbons (Y7 Scratch) |
learning_graph_variables_in_games_y6.pdf |
leabharlann/.../pgce/syllabus/lessons/ |
Y6 unit (Variables in Games) |
pedagogy_principles.pdf |
leabharlann/.../pgce/syllabus/ |
12 cross-cutting pedagogy principles |
curriculum_journey_full_2024_2025.pdf |
NCCE S3 | Full Y7→Y11 NCCE Computing journey |
NCCE PDF → DLT resource → CocoIndex App → BAML extraction → Dagster asset → Firestore + Gradio SVG
- DLT (
dlt_pipelines/uk_ncce_learning_graphs.py) — emits 11 rows intoofficial_documents - CocoIndex (
cocoindex_flows/uk_ncce/learning_graphs_app.py) — Docling converter that preserves the row × column grid via the new_shared/_docling_grid_segmenter.py - BAML (
baml_extracts/learning_graph.baml) — 8 classes + 9 functions; 6 per-subject extractors for Computer Science, Mathematics, English, Gaeilge, Chemistry, Geography - Dagster (
orchestration/defs/3_model_lifecycle/uk_ncce_learning_graphs.py) — 11 assets; sensor ondata/bi_ep/syllabi_raw/uk_ncce/ - Gradio + HF Space + React (
gemini_hackathon_gradio/an_learning_graph/,hf_spaces/gemini_hackathon_learning_graphs/,web/src/routes/learning-graphs/) — 4-tab studio: Render / Equivalencies / Generate from PDF / Pedagogy overlay
Every cell in every jurisdiction's learning graph has a pointer to its
equivalent cells in the 7 other BI jurisdictions. Powered by
ExtractCellEquivalencies (Change B). Visualised as a Sankey diagram.
Every cell is coloured by which of the 12 NCCE pedagogy principles it
uses (PRIMM, pair programming, semantic waves, etc.). Principles are
dynamically extracted from pedagogy_principles.pdf and cached
to disk + Cognee (Change C).
[SCREENSHOT placeholder — the SVG grid of the Y8 Python learning graph with pedagogy overlay]
| W | What |
|---|---|
| W0 | minimal unblock (document dupe web/components, add KNOWN_ISSUES.md) |
| W1 | dependency pin: google-adk 2.7.1+, gradio 5.28+, huggingface_hub 0.30+, lancedb, falkordb, graphiti-core, cognee, fastmcp |
| W2 | 5 NCCA policy PDFs as committed data — the certificate source of truth |
| W3 | gemini_hackathon_gradio/ — the 5 editorial studios + shared library |
| W4 | lift sruth/tuath non-mythology + /dev/tuatha subject wiring + deferred-tuatha openspec change |
| W5 | Ireland K-12 BAML + DLT + CocoIndex (Primary + Secondary) |
| W6 | leabharlann general sources + UoG archives (manifests only) |
| W7 | 5 ADK 2 stage coordinators + 5 reusable workflow pillars |
| W8 | memory layer (MarkdownMemoryService) + knowledge_graph/hybrid_search.py |
| W9 | skill-progression ledger (Firestore + Vertex AI Vector Search + Firestore graph) |
| W10 | FIBO image generation — 14 NCCA subjects × 5 stages prompt bank |
| W11 | 9 subnations (Ireland + England + NCCE active; NI/Wales/Scotland/IoM/Jersey/Guernsey Phase 2) |
| W12 | the big Gradio editorial studio on Cloud Run (monolithic + gr.Workflow canvas) |
| W13 | 5 HF Spaces at cianfhoghlaim/gemini_hackathon_<stage> |
| W14 | the LC/JC certificate pipeline — the SHOWCASE |
gcp-first-iac-refactor-v1— Phase 0: drops Komodo/Pangolin/Locket/Infisical for Cloud Run + Secret Manager + WIF + 11 Terraform modulesobservability-otel-completeness-v1— Phase 1: ADK OTel OTLP path + OpenInference Langfuse instrumentor + 6 Stackdriver env varscocoindex-pdf-pipeline-v1— Phase 2: pdf_to_markdown App (Docling converter) + Dagster asset + MLflow benchmarkretire-letta-wire-vertex-memory-bank-v1— Phase 0 (memory): replaces Letta withVertexAiMemoryBankService+MarkdownMemoryService+InMemoryMemoryService
uk-ncce-learning-graph-showcase-v1— the headline change (see §1)learning-graph-equivalency-graph-v1— extendsExtractEquivalenciesfrom linear topics to cell-level (48 jurisdiction × subject cross-walks)pedagogy-overlay-renderer-v1— dynamic extraction + disk + Cognee cache for the 12 NCCE pedagogy principles; renders the annotated SVG
The Celtic 5-element palette (Talamh / Uisce / Tine / Aer / Anam) was REPLACED with the 5-stage British Isles education palette (Aistear / Bunscoil / MeanScoil / Scoil Sinsearach / Ollscoil). The Hades Shadow-First dark theme is preserved.
See ARCHITECTURE.md for the full picture, or
docs/TUATHA_CONSOLIDATION_MAP.md
for what was absorbed from sruth/tuath and /dev/tuatha.
Every claim on every generated certificate cites a page from one of the 5 NCCA policy PDFs:
SC-L1-L2-Programme-Statement.pdf,
key-competencies-in-senior-cycle_en.pdf,
the-potential-of-online-learning-environments_en.pdf,
the-potential-of-technology-to-support-online-certification-and-reporting.pdf,
scr-advisory-report_en.pdf
The pipeline (7 stages): extract_criteria → decompose_outcomes → extract_paper+marking → search_official → generate_background → compose_certificate → save_to_provenance.
Output: PNG (~80 KB) + PDF (~700 B) with the awarding-body palette background + competency strip + provenance footer + UNOFFICIAL banner.
gemini_hackathon/
├── pyproject.toml + requirements.txt + Makefile
├── gemini_hackathon/ ← the Python package
│ ├── agents/ ← W7 — 5 stage coordinators + 5 pillars
│ ├── assets/ ← the image-gen router
│ ├── call_llm.py + backend.py ← the LLM gateway
│ ├── certificate/ ← W14 — the LC/JC certificate pipeline
│ ├── cli.py + __main__.py + compare.py
│ ├── knowledge_graph/ ← W8 — hybrid search (LanceDB + FalkorDB)
│ ├── ledger/ ← W9 — skill-progression ledger
│ ├── memory/ ← W8 — MarkdownMemoryService
│ ├── models/ + model_registry.py
│ ├── observability.py
│ ├── ocr.py + ocr_ensemble.py
│ ├── progression/ ← existing LC/JC certificate schema
│ ├── session/
│ ├── sources.py + theming.py
│ └── subnations.py ← W11 — 9 jurisdictions
├── gemini_hackathon_gradio/ ← W3 — the 5 editorial studios + 2026-08-31 an_learning_graph
├── gemini_hackathon_assets_fibo/ ← W10 — the FIBO image-gen pipeline
├── gemini_hackathon_backend/ ← 2026-08-30 — the ADK 2 Cloud Run service
│ ├── agents/ + memory.py + observability.py + main.py
│ ├── catalog/ ← the Lake namespace adapter
│ └── tests/
├── baml_extracts/ ← BAML contracts (existing + 2026-08-31 learning_graph.baml)
├── baml_extracts_education/ ← W4+W5 — lifted from cianfhoghlaim
├── cocoindex_flows/ ← W5 + 2026-08-30 + 2026-08-31
│ ├── _shared/ ← shared_lifespan + _vector_target + _docling_grid_segmenter
│ ├── ireland/ ← per-stage embedding apps
│ ├── pdf/ ← Phase 2b Docling converter
│ ├── uk_ncce/ ← 2026-08-31 NCCE learning graph App
│ ├── equivalency/ ← Phase 4a equivalency graph
│ ├── education/ ← W14 BAML extraction target
│ └── _factory/ ← bi_jurisdiction + four_stage
├── dlt_pipelines/ ← W5 + 2026-08-30 + 2026-08-31
│ ├── ireland/ ← 6 NCCA subject pipelines
│ ├── uk_ncce_learning_graphs.py ← 2026-08-31 (jurisdiction #9)
│ ├── official_doc_fetcher.py
│ ├── pdf_downloader.py
│ ├── corpus_downloader.py
│ └── _shared.py + _base/ + _subject_base.py
├── data/
│ ├── ireland/ncca_policy/ ← W2 — 5 NCCA policy PDFs
│ ├── bi_ep/ ← 2026-08-30 PDF→Markdown substrate
│ │ ├── syllabi_raw/ ← raw PDFs (gitignored)
│ │ │ ├── ireland/ ← NCCA + SEC + DES PDFs
│ │ │ └── uk_ncce/ ← 2026-08-31 (5 NCCE PDFs)
│ │ ├── syllabi_md/ ← Docling-converted Markdown
│ │ └── extracted_syllabi.sqlite ← the BAML extraction target
│ ├── leabharlann/ ← W6 — leabharlann corpus (manifests only)
│ ├── equivalencies/, jurisdictions/, marking_schemes/, policies/, sources/, syllabi/
├── themes/ ← awarding-body palettes (NCCA, AQA, OCR, ...)
├── web/ ← Firebase-native TanStack Start web (post Firebase migration)
│ └── src/routes/learning-graphs/ ← 2026-08-31 NCCE landing page (embeds HF Space)
├── hf_spaces/ ← W13 + 2026-08-31 (6 headline demos)
│ ├── _generate.py
│ ├── gemini_hackathon_{aistear,bunscoil,junior_cycle,leaving_certificate,editorial_studio}/
│ └── gemini_hackathon_learning_graphs/ ← 2026-08-31
├── orchestration/ ← 2026-08-30 + 2026-08-31
│ ├── defs/ ← 5-layer Dagster defs tree
│ │ ├── 1_ingestion/
│ │ ├── 2_materials/
│ │ ├── 3_model_lifecycle/ ← NCCE learning graph assets (2026-08-31)
│ │ ├── 4_asset_generation/
│ │ └── 5_agent_ops/
│ └── storage/ ← BigQuery client + DuckLake client
├── openspec/changes/ ← W16 — 26 openspec changes (23 + 3 NEW 2026-08-31)
├── docs/ ← W15 — the docs (TUATHA_CONSOLIDATION_MAP, KNOWN_ISSUES, LEARNING_GRAPH_SHOWCASE, ...)
├── notebooks/ ← the 14 marimo + ipynb walkthroughs (00_theming … 13_pedagogy_overlay)
├── cloud/ ← GCP-native IaC
│ └── terraform/
│ ├── cloud_run_adk.tf + cloud_run.tf + cloud_run_jobs.tf + cloud_run_journey.tf
│ └── modules/ ← 11 Terraform modules (per Phase 5 GCP-first IaC)
├── cloudbuild.yaml + Makefile + README.md
└── firestore.{json,rules,indexes.json} ← Firebase-native schema + NCCE collections
The 4-path OCR/VLM ensemble (BAML + Docling + EasyOCR + Tesseract) with
RAGAS voting + MLflow observability. Scanned-PDF detector
(is_scanned_pdf()) routes to the recommended backend via
select_ocr_backend(). The 22 VLM + 6 classical OCR entries live in
MODEL_REGISTRY:ocr_vision (qwen3-vl-8b + qwen3-vl-4b added in
2026-08-25-tuatha-vision-models-v1).
_shared/{_lifespan, _vector_target, _vertex_embedder, _docling_grid_segmenter}— canonical lifespan + dual-backed vector target (Firestore default / Vertex AI Vector Search) + VertexEmbedder + grid-preserving Docling segmenter (2026-08-31)ireland/— per-stage embedding apps for the 6 NCCA LC subjectspdf/pdf_to_markdown_app.py— Phase 2b Docling converteruk_ncce/learning_graphs_app.py— 2026-08-31 NCCE learning graph App_factory/{bi_jurisdiction, four_stage}— the 114-App 4-stage BI factoryequivalency/equivalency_graph_app.py— Phase 4a cross-jurisdiction grapheducation/lc6_extraction_app.py— W14 BAML extractor target
- 6 NCCA LC subjects + cross-jurisdiction + jurisdiction sensors
pdf_downloader.py(Phase 2) +corpus_downloader.py+official_doc_fetcher.pyuk_ncce_learning_graphs.py(2026-08-31 — jurisdiction #9)- DLT 1.30 features:
refresh+dlt[hub]+pipeline.dataset() - DuckDB → BigLake Iceberg (prod) via
orchestration/storage/bigquery_client.py:BIGQUERY_DATASET = "biep"
orchestration/defs/{1_ingestion, 2_materials, 3_model_lifecycle, 4_asset_generation, 5_agent_ops}. The 2026-08-31 NCCE learning graph assets (11) + equivalency assets (48) + pedagogy overlay assets (6) + 1 sensor live under 3_model_lifecycle/. Wired via dg CLI (Dagster 1.13+).
baml_extracts/learning_graph.baml(2026-08-31) — 8 classes + 9 functions for the structured learning graphsbaml_extracts/extract_equivalency.baml— topic-level + cell-level equivalencies (extended in 2026-08-31 Change B)baml_extracts_education/{celtic_curriculum, subjects/*}.baml— per-subject BAML contracts with strand + BloomLevel metadata
pgvector/pgvector:pg17 + lake-keeper-rust + lance-namespace + cognee + falkordb + memgraph + clickhouse + garage (S3) + olake (CDC). Langfuse v3 :3001 + MLflow v2.20 :5050 (the dual-purpose local observability stack).
- Cloud SQL Enterprise HA (Postgres)
- Memorystore Standard M3 (Valkey)
- BigQuery dataset
biep(viaorchestration/storage/bigquery_client.py) - Lance namespace
icebergbackend → BigLake Iceberg REST (Lakekeeper) - GCS bucket for the PDF→Markdown raw + md pairs
cloudrun_service, cloudrun_secret_mount, cloudsql_postgres, memorystore_valkey, gcs_bucket, bigquery_dataset, firestore_database, artifact_registry_repo, workload_identity_gha, cloudbuild_trigger, iam_gcp_ai_agent_adk.
VertexAiMemoryBankService(prod, whenDEPLOYED_AGENT_ENGINE_IDis set)MarkdownMemoryService(dev/offline, whenGH_MEMORY_DIRis set)InMemoryMemoryService(default fallback)before_agent_callback→add_session_to_memoryletta_agent_idfield renamed tomemory_namespace(semantics change, same shape)
- ADK OTel OTLP path → Cloud Trace + Cloud Logging + Cloud Monitoring
- 6 Stackdriver env vars (per the Stackdriver AI Agent ADK doc)
- OpenInference Langfuse instrumentor (wraps every ADK call as a nested Langfuse span)
- Langfuse v3 :3001 + MLflow v2.20 :5050 (local dev)
aistear dawn-orange #e8915c
bunscoil sea-blue #1e80c6
meanscoil meadow-green #28955e
scoil_sinsearach harvest-gold #cc9966
ollscoil scholarship-indigo #5a4fcf
Hades Shadow-First is preserved as the dark-mode foundation.
8 NCCA + 6 NCCA-adjacent subjects. The 2026-08-31 NCCE showcase adds a
9th routing key (learning_graph) for the structured cross-walk view.
The 5 ADK 2 stage coordinators (gemini_hackathon/agents/stages/) and
the 5 reusable workflow pillars (gemini_hackathon/agents/workflows/)
remain the runtime substrate.
10. The 9 subnations + awarding-body palettes
Scan report · 2026-10-04
- ✓ Prohibited terms or links
- ✓ Repository eligibility
- ✓ slopscore.md paperwork
- ✓ Content policy
- ✓ Risk review
From the balcony · 0 of 3 clapped
Crusoe, Schnitzel and Cap'm Slop read it and passed. Their reasons are on the balcony, with every other verdict.
Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.
0 comments
log in to comment.