{"generated":"2026-10-26T10:44:12Z","audience":"public","profile":{"name":"Adithya Ekanayaka","full_name":"Adithya Séan Bandara Ekanayaka","native_name":"ආදිත්‍ය ඒකනායක","handle":"adithyasean","headline":"Software engineer building AI systems that have to earn their place.","summary":"I build AI that runs real things: government records, a house, a WhatsApp inbox. I keep the models small where I can, check every output with code before it acts, and don't believe a number until it has survived a test it couldn't have seen.","location":{"city":"Colombo","country":"Sri Lanka"},"links":{"site":"https://adithyasean.com","github":"https://github.com/adithyasean","linkedin":"https://www.linkedin.com/in/adithyasean","huggingface":"https://huggingface.co/adithyasean","email":"adithya@adithyasean.com"},"availability":"Software engineer at Araaya. Open to conversations about AI-systems roles.","languages":[{"name":"English","level":"Professional (C1)"},{"name":"Sinhala","level":"Native"}],"interests":["Chess","Table tennis"]},"roles":[{"id":"araaya-software-engineer","visibility":"public","status":"unverified","tags":["backend","gov","enterprise","java","cloud","agents","llm"],"org":"Araaya Business Solutions","org_url":"https://araaya.com","title":"Software Engineer","employment":"full-time","start":"2026-07","end":null,"location":"Colombo, Sri Lanka","summary":"Engineering on national government platforms and on Araaya's own AI product.","highlights":[{"text":"Architected and built Business Agent, Araaya's multi-tenant AI concierge for WhatsApp and Telegram, on Cloudflare's serverless platform; in production since October 2026.","tags":["agents","llm","backend","cloud","typescript"]},{"text":"Leading a Java runtime modernisation of a national government platform behind an end-to-end gate that runs on every pull request.","tags":["java","gov","enterprise","testing","devops"],"metric":"10/10 gate runs"},{"text":"Cold-restored a large legacy database and verified it table by table before migration work.","tags":["gov","data","enterprise"]},{"text":"Built a deploy-and-verify loop: every merge deploys to a review environment and is checked against the running commit before release.","tags":["devops","gov","testing"]},{"text":"Rebuilt araaya.com as an Astro site on Cloudflare Workers, with legal pages diff-checked in CI.","tags":["frontend","cloud"]}],"stack":["Java","Spring","Hibernate","Jakarta EE","TypeScript","Cloudflare Workers","D1","Astro","GitHub Actions"],"projects":["business-agent","gov-platforms"],"updated":"2026-10-26"},{"id":"araaya-associate-software-engineer","visibility":"public","status":"unverified","tags":["backend","gov","enterprise","java","llm","frontend"],"org":"Araaya Business Solutions","org_url":"https://araaya.com","title":"Associate Software Engineer","employment":"full-time","start":"2025-08","end":"2026-07","location":"Colombo, Sri Lanka","summary":"Joined Araaya's government-platforms team after the Sri Lanka Telecom internship.","highlights":[{"text":"Engineered a stateful form-automation system for a government land platform, with fuzzy matching, dynamic field population and validation.","tags":["frontend","gov","enterprise"]},{"text":"Built a browser form-filling assistant that reads source documents with Gemini vision or a local Ollama model, backed by a Cloudflare Worker and D1.","tags":["llm","ai","cloud","gov"]}],"stack":["Java","Hibernate","Docker","JavaScript","Gemini","Ollama"],"projects":["gov-platforms"],"updated":"2026-10-26"},{"id":"slt-intern","visibility":"public","status":"unverified","tags":["cv","ai","edge","iot","backend","python"],"org":"Sri Lanka Telecom","org_url":"https://www.slt.lk","title":"Intern Software Engineer","employment":"internship","start":"2025-02","end":"2025-08","location":"Colombo, Sri Lanka","summary":"Built Visage, a hybrid cloud and edge face-recognition attendance system.","highlights":[{"text":"Developed Visage, a real-time face-recognition attendance system that keeps working offline at the edge and syncs to a central server.","tags":["cv","edge","systems"]},{"text":"Wrote a C++ edge inference module for face recognition on resource-constrained devices.","tags":["edge","embedded","cv"]},{"text":"Built the FastAPI backend for telemetry, registration and attendance logs, with a React dashboard.","tags":["backend","frontend","python"]}],"stack":["Python","InsightFace","FastAPI","React","C++","ESP32-CAM","Raspberry Pi"],"projects":["visage"],"updated":"2026-10-23"}],"education":[{"id":"bsc-computing","visibility":"public","status":"verified","tags":["research","ai"],"institution":"National Institute of Business Management (NIBM), Colombo","award":"BSc (Hons) Computing","awarding_body":"Coventry University","start":"2024-11","end":"2026-11","state":"in-progress","notes":["Final-year research: Forge, agent-operable specialisation of small tool-calling models on consumer hardware (supervisor: Dr. Kaneeka Vidanage)."],"updated":"2026-10-23"},{"id":"hnd-software-engineering","visibility":"public","status":"verified","tags":["backend"],"institution":"National Institute of Business Management (NIBM), Colombo","award":"Higher National Diploma in Software Engineering","start":"2023-09","end":"2024-12","state":"completed","notes":["Data structures and algorithms, advanced databases, robotic application development, machine learning, image processing, IoT, enterprise application development."],"updated":"2026-10-23"},{"id":"diploma-software-engineering","visibility":"public","status":"verified","tags":["backend"],"institution":"National Institute of Business Management (NIBM), Colombo","award":"Diploma in Software Engineering","start":"2022-09","end":"2023-09","state":"completed","notes":["Object-oriented programming, databases, computer networks, GUI and web development."],"updated":"2026-10-23"},{"id":"gce-advanced-level","visibility":"public","status":"verified","tags":[],"institution":"Mahanama College, Colombo","award":"G.C.E. Advanced Level, Mathematics stream","start":"2019-01","end":"2022-01","state":"completed","notes":["Years only are known; render without months."],"updated":"2026-10-23"}],"projects":[{"id":"business-agent","visibility":"public","status":"unverified","tags":["ai","llm","agents","backend","cloud","typescript","product"],"name":"Business Agent","kind":"product","role":"Architect and engineer","org":"araaya-software-engineer","summary":"An AI concierge that answers a business's WhatsApp and Telegram customers from its own catalogue, takes orders, and hands over what it shouldn't decide.","problem":"Small businesses lose customers in slow chat replies, but a chatbot that improvises prices or promises is worse than none.","approach":"The model proposes, code disposes: every reply is checked against the business's own catalogue and policy before it is sent, and anything the agent should not decide goes to a person.","highlights":[{"text":"Replies are delivered exactly once, even when a step is retried.","tags":["backend","cloud"]},{"text":"Each business chooses how its replies are generated, down to a local model.","tags":["llm","agents"]},{"text":"In production since October 2026.","tags":["product"]}],"stack":["TypeScript","Cloudflare Workers","D1","KV","Vectorize","R2","Queues","Durable Objects","Gemini","Workers AI"],"start":"2026-09","end":null,"state":"active","weight":5,"featured":true,"links":[],"updated":"2026-10-26"},{"id":"smart-home","visibility":"public","status":"verified","tags":["systems","security","iot","edge","python","ai"],"name":"Smart home mesh","kind":"system","role":"Sole engineer","summary":"Voice, speakers and cameras across a house, run on local hardware, that refuses any request it can't verify.","problem":"Home automation usually trusts anything on the network. A house that runs AI agents can't.","approach":"A Python hub and satellite daemons, Swift and Kotlin apps, local speech (Whisper, Piper) and models (Ollama). Every non-health call is signed per principal with HMAC-SHA256 over route, query, body hash, a 30-second window and a one-use nonce. A Cloudflare watchdog notices when a node goes silent.","highlights":[{"text":"A hostile self-test must refuse replays, default secrets, foreign keys and out-of-role calls before a release passes.","tags":["security","testing"]},{"text":"425 tests in the Python suite and 53 Android test tasks.","tags":["testing"]},{"text":"Watchdog: one Durable Object per node with alarm-driven silence detection.","tags":["cloud"]}],"stack":["Python","Swift","Kotlin","Whisper","Piper","Ollama","Cloudflare Workers","Durable Objects"],"start":"2026-08","end":null,"state":"active","weight":5,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"forge","visibility":"public","status":"verified","tags":["ai","ml","llm","research","agents","python"],"name":"Forge","kind":"research","role":"Sole researcher and engineer","summary":"Small tool-calling specialists that an AI agent can train, test and promote on its own, on consumer hardware.","problem":"General models are slow and expensive for the same agent commands run thousands of times. Could an agent specialise small local models safely, and could anyone tell whether it worked?","approach":"A local gateway serves per-domain specialists (FunctionGemma 270M, then Gemma 3 1B, trained with MLX on Apple Silicon) with a general model as fallback. Data preparation, fine-tuning, gated evaluation and promotion are commands an agent can run; a candidate is promoted only if it passes a sealed test, otherwise the previous adapter is restored byte for byte. Evaluated with a pre-registered design on three sealed, seeded simulator worlds.","highlights":[{"text":"Specialists answered in a median 1.47 s against 7.88 s for a general model, on 5.9× fewer input tokens per command.","tags":["llm","research"]},{"text":"Correct on 279 of 300 commands against the general model's 290: faster and cheaper, a little less accurate, stated plainly.","tags":["research"]},{"text":"Found that 52–88% of my own suite prompts were verbatim training rows (one adapter: 44/50 on its suite, 1/20 on paraphrases), discarded the suites and rebuilt evaluation on sealed worlds.","tags":["research","testing"]},{"text":"Registered operator study: agents using Forge were not significantly more accurate than agents working by hand (p = 0.69), but finished faster (20 vs 43 min) and made no stray writes.","tags":["research","agents"]},{"text":"Research paper with my supervisor: Agent-Operable Specialization of Small Tool-Calling Models on Consumer Hardware (2026, venue pending).","tags":["research"]}],"stack":["Python","MLX","LoRA","FunctionGemma","Gemma 3","Ollama","MCP","FastAPI"],"start":"2026-02","end":null,"state":"active","weight":5,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"dr-grading","visibility":"public","status":"verified","tags":["ai","ml","cv","research","python"],"name":"Diabetic retinopathy grading","kind":"research","role":"Coursework, built alone","summary":"Grades retina photos for diabetic retinopathy and flags who should see a specialist.","problem":"Screening needs a model that grades disease, not the camera that took the photo, measured on photos it never tuned on.","approach":"Leakage-aware splits grouped by patient, a classical baseline, then fine-tuned CNNs with test-time augmentation; every run scored once on a locked 523-photo test split with bootstrap confidence intervals and a check on cameras that give the grade away.","highlights":[{"text":"Fine-tuned ResNet-50 with test-time augmentation: quadratic weighted kappa 0.925 (95% CI 0.910–0.939) on 523 locked test photos.","tags":["cv","ml"]},{"text":"Referable-disease screening at 96.5% sensitivity and 90.3% specificity.","tags":["cv","ml"]},{"text":"Live demo on Cloudflare Workers.","tags":["cloud"]}],"stack":["Python","PyTorch","ResNet-50","EfficientNet","Cloudflare Workers"],"start":"2026-09","end":"2026-10","state":"shipped","weight":4,"featured":true,"links":[{"label":"Live demo","url":"https://dr.adithyasean.com","kind":"demo"}],"updated":"2026-10-23"},{"id":"whatsapp-gateway","visibility":"public","status":"verified","tags":["agents","systems","security","backend","typescript"],"name":"WhatsApp gateway for agents","kind":"system","role":"Sole engineer","summary":"Lets AI agents read, search and send on a WhatsApp account through MCP, REST and server-sent events, without trusting a word they read.","problem":"Agents need messaging, but every inbound message is a possible prompt injection and some contain codes and card numbers.","approach":"One process owns the socket; the MCP server only reads or enqueues, through SQLite in WAL mode. Inbound text is wrapped as untrusted; one-time codes and card numbers are redacted before storage. Reachable only through an outbound Cloudflare Tunnel.","highlights":[{"text":"Push, not poll: events stream to agents over SSE.","tags":["systems"]},{"text":"Inbound messages tagged untrusted and secrets redacted before they are stored.","tags":["security"]}],"stack":["Node.js","SQLite","MCP","Server-sent events","Cloudflare Tunnel"],"start":"2026-09","end":"2026-10","state":"shipped","weight":4,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"agent-fleet","visibility":"public","status":"verified","tags":["agents","systems","devops","python"],"name":"Agent fleet","kind":"system","role":"Sole engineer","summary":"Nine machines that Claude Code, Codex and Antigravity operate under explicit authority, from one source of configuration.","problem":"Three different agent harnesses, many machines, and no single place that says what each agent may do.","approach":"The assistant CLI and MCP server run headless agent tasks, resume them and inspect sessions; one private repository generates every agent's rules, skills and MCP servers; GitHub Projects boards are the shared task record.","highlights":[{"text":"Waits on kernel events (kqueue) instead of polling; quota and timeout exits are distinguishable.","tags":["systems"]},{"text":"One source of truth generates Claude Code, Codex and Antigravity configuration, with drift checks.","tags":["devops"]}],"stack":["Python","MCP","kqueue","GitHub Projects"],"start":"2026-07","end":null,"state":"active","weight":4,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"gov-platforms","visibility":"public","status":"unverified","tags":["gov","enterprise","java","backend","devops","testing"],"name":"Government platforms","kind":"work","role":"Software engineer","org":"araaya-software-engineer","summary":"National-scale platforms behind state land and civil registration in Sri Lanka.","problem":"Decade-old Java platforms that cannot go down have to move to modern runtimes without breaking a single registration.","approach":"Evidence gates before change: end-to-end suites in CI on every pull request, verified cold restores, and every merge deployed and checked against the running commit before release.","highlights":[{"text":"A legacy Java build brought up on four newer JDKs under an end-to-end gate (10 of 10 gate runs).","tags":["java","testing"]},{"text":"Cold restore of a large legacy database, verified table by table.","tags":["data"]}],"stack":["Java","Spring","Hibernate","Jakarta EE","Docker","GitHub Actions"],"start":"2025-08","end":null,"state":"active","weight":4,"featured":true,"links":[],"sources":[{"ref":"https://araaya.com"}],"updated":"2026-10-26"},{"id":"visage","visibility":"public","status":"unverified","tags":["cv","ai","edge","iot","embedded","python"],"name":"Visage","kind":"system","role":"Engineer","org":"slt-intern","summary":"Face-recognition attendance from camera to dashboard: ESP32-CAM, local recognition at the edge, and a validation server.","problem":"Attendance has to keep working when the network doesn't, on cheap hardware.","approach":"Four parts: an InsightFace validation API, an edge service that recognises faces and serves a local dashboard, ESP32-CAM firmware, and a display unit. USB, IP and RTSP cameras supported.","highlights":[{"text":"Runs offline at the edge and syncs when the network returns.","tags":["edge"]}],"stack":["Python","InsightFace","FastAPI","ESP32-CAM","C++"],"start":"2025-02","end":null,"state":"paused","weight":4,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"singlish-llama","visibility":"public","status":"verified","tags":["ai","ml","llm","nlp","python"],"name":"Singlish Llama","kind":"model","role":"Team lead","summary":"Llama models fine-tuned for Singlish, the Sinhala and English mix Sri Lankans actually type.","problem":"General models stumble on code-mixed Sinhala and English, the way most people in Sri Lanka write online.","approach":"Curated code-mixed corpora and instruction sets, then continued pre-training and LoRA fine-tuning of Llama 3.1 8B and Llama 3.2 3B with Unsloth.","highlights":[{"text":"Led the sinGPT team to the final eight of 30 teams at the Commercial Bank international hackathon.","tags":["llm"]},{"text":"Published five models and eight datasets on Hugging Face, the largest corpus with 10–100 million rows.","tags":["llm","data"]}],"stack":["Python","Llama 3.1","Llama 3.2","Unsloth","LoRA","Hugging Face"],"start":"2024-03","end":"2024-10","state":"shipped","weight":4,"featured":true,"links":[{"label":"Models and datasets","url":"https://huggingface.co/adithyasean","kind":"model"},{"label":"Code","url":"https://github.com/adithyasean/Singlish-llama","kind":"repo"}],"sources":[{"ref":"https://huggingface.co/adithyasean"}],"updated":"2026-10-23"},{"id":"cloudflare-cli","visibility":"public","status":"verified","tags":["cloud","devops","python","security"],"name":"Cloudflare CLI","kind":"tool","role":"Sole engineer","summary":"A zero-dependency Python CLI that deploys and operates Cloudflare Workers; this site is deployed with it.","problem":"Agents and scripts need one safe way to touch Cloudflare, without a Node toolchain or secrets on the command line.","approach":"Standard library only. Secrets enter from files, env files or stdin, never argv. Deploys read the standard Worker config and fail closed on anything they don't understand.","highlights":[{"text":"Standard library only, with secrets kept off the command line and out of logs.","tags":["security"]}],"stack":["Python"],"start":"2026-10","end":null,"state":"active","weight":3,"featured":false,"links":[],"updated":"2026-10-23"},{"id":"rare-finder","visibility":"public","status":"verified","tags":["product","ios","mobile","backend","games"],"name":"RareFinder","kind":"product","role":"Sole developer","summary":"A crowdsourced tracker for scarce goods: report a sighting, earn trust, post a bounty.","problem":"In a shortage, nobody knows which shop still has fuel or medicine, and rumours spread faster than facts.","approach":"Sightings need to be within 50 m of the shop; a trust-points economy rewards reports that others confirm; bounties pay for hard-to-find items. SwiftUI and MapKit on iOS; FastAPI, PostgreSQL and object storage behind it.","highlights":[{"text":"Trust-points economy and 50-metre geofence keep reports honest.","tags":["product","games"]}],"stack":["SwiftUI","MapKit","FastAPI","PostgreSQL","MinIO"],"start":"2026-04","end":"2026-09","state":"paused","weight":3,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"clinic-flow","visibility":"public","status":"verified","tags":["product","backend","ios","mobile","ai","python"],"name":"ClinicFlow","kind":"product","role":"University project","summary":"Booking, AI triage, a live queue, prescriptions and pharmacy orders for Sri Lankan clinics, with a native Apple app.","problem":"Patients wait hours in clinic queues with no idea when they'll be seen.","approach":"FastAPI and PostgreSQL with five roles; the live queue streams over server-sent events; triage runs on a small local model with a rule-based fallback; a SwiftUI app for iOS and macOS with no third-party dependencies.","highlights":[{"text":"Live queue over server-sent events; AI triage falls back to rules when the model is unavailable.","tags":["ai","backend"]}],"stack":["Python","FastAPI","PostgreSQL","SwiftUI","Ollama"],"start":"2026-02","end":"2026-09","state":"shipped","weight":3,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"planet-wars","visibility":"public","status":"verified","tags":["games","typescript","ai","llm","cloud"],"name":"Planet Wars","kind":"game","role":"Sole developer","summary":"A browser strategy game: capture planets, build fleets, and play friends or language-model opponents.","problem":"Can a small local model play a real-time strategy game well enough to be fun?","approach":"Turn-based or real-time play; host-authoritative WebRTC multiplayer; a Durable Object registry for lobbies; scripts that pit models against each other.","highlights":[{"text":"AI-versus-AI showdown and model-comparison scripts for local LLM opponents.","tags":["ai","games"]}],"stack":["TypeScript","Vite","PeerJS","WebRTC","Cloudflare Durable Objects"],"start":"2025-12","end":"2026-03","state":"shipped","weight":3,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"paper-management-service","visibility":"public","status":"verified","tags":["backend","java","nlp","devops"],"name":"Past-paper extractor","kind":"tool","role":"Sole developer","summary":"Pulls multiple-choice and structured questions out of Sri Lankan A/L science papers, scanned or not.","problem":"Students study from thousands of past-paper PDFs with no way to search a single question.","approach":"Spring Boot service with optional Tesseract OCR; detects year, subject and language; scores each paper's extraction quality; CI analyses any PDF pushed to the repository.","highlights":[{"text":"Per-paper extraction quality score from 0 to 100%.","tags":["nlp"]}],"stack":["Java","Spring Boot","Tesseract","Docker","GitHub Actions"],"start":"2025-10","end":"2025-10","state":"shipped","weight":3,"featured":false,"links":[],"updated":"2026-10-23"},{"id":"time-travelers-bookshelf","visibility":"public","status":"verified","tags":["ai","llm","product","python"],"name":"Time Traveler's Bookshelf","kind":"product","role":"Sole developer","summary":"Turns a book, or a blank page, into a choose-your-path story you can rewind and branch.","problem":"Interactive fiction forgets what happened three choices ago.","approach":"A LangGraph story engine with retrieval for continuity; readers can return to a checkpoint and branch a new timeline.","highlights":[{"text":"Rewind to any checkpoint and branch a new timeline.","tags":["llm"]}],"stack":["Python","FastAPI","LangGraph","Gemini"],"start":"2025-07","end":"2025-09","state":"paused","weight":3,"featured":true,"links":[],"updated":"2026-10-23"},{"id":"colorpicker","visibility":"public","status":"verified","tags":["games","ios","mobile"],"name":"ColorPicker","kind":"game","role":"Sole developer","summary":"A native iOS memory game with growing grids, combos and thirty-plus achievements.","problem":"A small, polished game to learn SwiftUI's animation and haptics properly.","highlights":[{"text":"3×3, 5×5 and 7×7 boards plus a progressive mode; combo multiplier up to 3×.","tags":["games"]}],"stack":["Swift","SwiftUI"],"start":"2026-01","end":"2026-01","state":"shipped","weight":2,"featured":false,"links":[{"label":"Code","url":"https://github.com/adithyasean/color-picker","kind":"repo"}],"updated":"2026-10-23"},{"id":"govconnect-sl","visibility":"public","status":"unverified","tags":["product","frontend","typescript","gov"],"name":"GovConnect SL","kind":"product","role":"Team member","summary":"A citizen-services prototype built for the Rootcode Tech-Triathlon national final.","problem":"Sri Lankans queue in person for services that could start online.","highlights":[{"text":"Finalist, Rootcode Tech-Triathlon 2025.","tags":["product"]}],"stack":["Next.js","TypeScript","Firebase"],"start":"2025-08","end":"2025-09","state":"shipped","weight":2,"featured":false,"links":[{"label":"Code","url":"https://github.com/adithyasean/govconnect-sl","kind":"repo"}],"updated":"2026-10-23"},{"id":"next-step","visibility":"public","status":"verified","tags":["backend","java","ml","devops"],"name":"Next Step","kind":"product","role":"Architect","summary":"Career guidance that recommends paths from a student's skills and interests.","problem":"School leavers choose careers with little guidance.","highlights":[{"text":"Spring Boot microservices behind a gateway, containerised with Docker and Kubernetes, with a recommendation model.","tags":["backend","devops"]}],"stack":["Java","Spring Boot","React","Docker","Kubernetes","Python"],"start":"2024-11","end":"2025-02","state":"archived","weight":2,"featured":false,"links":[{"label":"Code","url":"https://github.com/adithyasean/Next-Step","kind":"repo"}],"updated":"2026-10-23"},{"id":"enhanced-security-vision","visibility":"public","status":"verified","tags":["cv","embedded","python"],"name":"Low-light security vision","kind":"system","role":"Sole developer","summary":"Real-time face detection tuned for dark scenes on small embedded boards.","problem":"Cheap security cameras miss faces at night.","highlights":[{"text":"Lightweight enough for resource-constrained embedded devices.","tags":["embedded"]}],"stack":["Python","OpenCV"],"start":"2024-07","end":"2024-08","state":"archived","weight":2,"featured":false,"links":[{"label":"Code","url":"https://github.com/adithyasean/enhanced-security-vision","kind":"repo"}],"updated":"2026-10-23"},{"id":"human-following-robot","visibility":"public","status":"verified","tags":["robotics","embedded","cv","android"],"name":"Human-following robot","kind":"system","role":"Team member","summary":"An OpenBot robot driven by a repurposed smartphone that follows a person.","problem":"Low-cost autonomy from parts most people already own.","highlights":[{"text":"Phone as the brain and camera; a small motor board as the body.","tags":["robotics"]}],"stack":["Android","Java","OpenBot","Arduino"],"start":"2024-01","end":"2024-08","state":"archived","weight":2,"featured":false,"links":[{"label":"Code","url":"https://github.com/adithyasean/Person-Following-Robot","kind":"repo"}],"updated":"2026-10-23"}],"claims":[{"id":"dr-kappa","visibility":"public","status":"verified","tags":["cv","ml"],"subject":"dr-grading","statement":"ResNet-50 with test-time augmentation scored a quadratic weighted kappa of 0.925 (95% CI 0.910–0.939) on 523 locked test photos.","value":0.925,"unit":"κ","display":"0.925","comparison":"95% CI 0.910–0.939, on 523 photos it never tuned on","meaning":"Agreement with specialist grades is close to the level reported for human graders.","polarity":"for","date":"2026-09-28","question":"Agreement with specialist grades, where 1.0 is perfect and 0 is chance. What did the model score?","guess":{"min":0,"max":1,"scale":"linear","step":0.005,"unit":"κ"},"updated":"2026-10-23"},{"id":"dr-sensitivity","visibility":"public","status":"verified","tags":["cv","ml"],"subject":"dr-grading","statement":"At the referral threshold the model found 96.5% of patients needing a specialist, with 90.3% specificity.","value":96.5,"unit":"%","display":"96.5%","comparison":"specificity 90.3%","meaning":"A screening tool earns its keep by not missing the people who need referral.","polarity":"for","date":"2026-09-28","question":"Of test patients who needed a specialist, what share did the model refer?","guess":{"min":50,"max":100,"scale":"linear","step":0.5,"unit":"%"},"updated":"2026-10-23"},{"id":"forge-accuracy","visibility":"public","status":"verified","tags":["llm","research"],"subject":"forge","statement":"Specialists completed a mean 279.3 of 300 commands per world; the general model completed 290.0.","value":279,"unit":"of 300","display":"279","comparison":"against 290 for the general model","meaning":"Faster and cheaper came with a small, measured cost in accuracy. That trade is the finding.","polarity":"against","date":"2026-10-04","question":"Out of 300 commands, the general model got 290 right. How many did the specialists get right?","guess":{"min":200,"max":300,"scale":"linear","step":1,"unit":"of 300"},"updated":"2026-10-23"},{"id":"forge-cron-latency","visibility":"public","status":"verified","tags":["llm","research"],"subject":"forge","statement":"On 30 production-shaped scheduled prompts, the specialist gateway answered in a median 0.94 s against 16.20 s.","value":17.2,"unit":"×","display":"17×","comparison":"0.94 s against 16.20 s, median","meaning":"On the jobs my agents actually run every day, the gap is wider still.","polarity":"for","date":"2026-10-14","question":"On 30 real scheduled prompts from my own agents, how many times faster was the specialist?","guess":{"min":1,"max":50,"scale":"log","step":0.1,"unit":"×"},"updated":"2026-10-23"},{"id":"forge-operators","visibility":"public","status":"verified","tags":["research","agents"],"subject":"forge","statement":"In a registered study, agents using Forge reached a median 24.6% hidden-test pass rate against 34.9% for agents working by hand; exact Mann-Whitney p = 0.69.","value":25,"unit":"%","display":"25%","comparison":"against 35% by hand; no significant difference (p = 0.69)","meaning":"The tool made agents faster (20 against 43 minutes) and safer (no stray writes), not more accurate. The study says so, so I say so.","polarity":"against","date":"2026-10-19","question":"Agents working by hand passed 35% of hidden tests. What did agents using Forge pass?","guess":{"min":0,"max":100,"scale":"linear","step":1,"unit":"%"},"updated":"2026-10-23"},{"id":"forge-paraphrase","visibility":"public","status":"verified","tags":["research","testing"],"subject":"forge","statement":"An adapter that scored 44 of 50 on its own test suite answered 1 of 20 paraphrased prompts correctly; 52–88% of the suite prompts were verbatim training rows.","value":1,"unit":"of 20","display":"1 of 20","comparison":"44 of 50 on its own suite","meaning":"My test set had leaked into training. I threw the suites out and rebuilt evaluation on sealed, seeded worlds no training run could see.","polarity":"against","date":"2026-09-28","question":"An adapter scored 44 of 50 on its own test suite. How many of 20 paraphrased prompts did it get right?","guess":{"min":0,"max":20,"scale":"linear","step":1,"unit":"of 20"},"updated":"2026-10-23"},{"id":"forge-speed","visibility":"public","status":"verified","tags":["llm","research"],"subject":"forge","statement":"On the same 300 commands per world, Forge's 1B specialists answered in a median 1.47 s against 7.88 s for a general model.","value":5.4,"unit":"×","display":"5.4×","comparison":"1.47 s against 7.88 s, median","meaning":"Small local specialists make agent commands feel instant.","polarity":"for","date":"2026-10-04","question":"A 1B specialist and a general model ran the same 300 commands. How many times faster was the specialist?","guess":{"min":1,"max":20,"scale":"log","step":0.1,"unit":"×"},"updated":"2026-10-23"},{"id":"forge-tokens","visibility":"public","status":"verified","tags":["llm","research"],"subject":"forge","statement":"Specialists needed 604 input tokens per command against 3,573 for the general model.","value":5.9,"unit":"×","display":"5.9×","comparison":"604 against 3,573 input tokens per command","meaning":"Fewer tokens means cheaper calls and room on a laptop.","polarity":"for","date":"2026-10-04","question":"How many times fewer input tokens did the specialist need per command?","guess":{"min":1,"max":20,"scale":"log","step":0.1,"unit":"×"},"updated":"2026-10-23"},{"id":"combank-rank","visibility":"public","status":"unverified","tags":["llm"],"subject":"singlish-llama","statement":"The sinGPT team was one of 8 finalists from 30 teams at the Commercial Bank international hackathon.","value":8,"unit":"of 30","display":"8 of 30","comparison":"teams reached the final","meaning":"A Sinhala-English model built by students held its own in an international field.","polarity":"for","date":"2024-08","question":"Thirty teams entered the Commercial Bank international hackathon with the Singlish LLM team. How many reached the final?","guess":{"min":1,"max":30,"scale":"linear","step":1,"unit":"teams"},"updated":"2026-10-23"},{"id":"smart-home-tests","visibility":"public","status":"verified","tags":["systems","testing"],"subject":"smart-home","statement":"The smart-home Python suite runs 425 tests, alongside a hostile self-test that must refuse replays and forged calls.","value":425,"unit":"tests","display":"425","comparison":"plus 53 Android test tasks","meaning":"A house that runs agents gets the same gates as production software.","polarity":"for","date":"2026-10-21","question":"How many automated tests stand between a change and the house?","guess":{"min":10,"max":2000,"scale":"log","step":1,"unit":"tests"},"updated":"2026-10-23"}],"awards":[{"id":"rootcode-tech-triathlon","visibility":"public","status":"verified","tags":["product"],"title":"Rootcode Tech-Triathlon 2025, finalist","issuer":"Rootcode","date":"2025-09","summary":"National engineering competition; finalist with GovConnect SL.","rank":"Top 8 finalist","subject":"govconnect-sl","updated":"2026-10-23"},{"id":"combank-hackathon","visibility":"public","status":"unverified","tags":["llm","ai"],"title":"Commercial Bank International Hackathon, finalist","issuer":"Commercial Bank of Ceylon","date":"2024-08","summary":"Led the sinGPT team building a Singlish conversational model.","rank":"Top 8 of 30 teams","subject":"singlish-llama","updated":"2026-10-23"}],"certifications":[{"id":"lf-introduction-to-linux","visibility":"public","status":"verified","tags":["devops"],"title":"Introduction to Linux","issuer":"The Linux Foundation","date":"2025-09","updated":"2026-10-23"},{"id":"oci-genai-professional-2024","visibility":"public","status":"verified","tags":["ai","cloud"],"title":"Oracle Cloud Infrastructure 2024 Generative AI Certified Professional","issuer":"Oracle","date":"2024-07","url":"https://catalog-education.oracle.com/pls/certview/sharebadge?id=2D72BBA629E0FF0E9691E9DCF87BDC2B8BE86B502EC10DB3535DBCA001A98EBD","expires":"2026-07","updated":"2026-10-23"}],"skills":{"groups":[{"name":"Languages","items":["Python","TypeScript","JavaScript","Java","Swift","Kotlin","C++","SQL"]},{"name":"AI and ML","items":["LoRA and PEFT fine-tuning","MLX","PyTorch","Unsloth","Hugging Face","Ollama","Gemini","Workers AI","MCP","OpenCV","InsightFace","Evaluation design"],"tags":["ai","ml","llm"]},{"name":"Backend and data","items":["FastAPI","Spring Boot","Node.js","Express","Prisma","PostgreSQL","MySQL","SQLite","D1","Apache Solr"],"tags":["backend"]},{"name":"Cloud and operations","items":["Cloudflare Workers, D1, KV, R2, Durable Objects, Queues, Access, Tunnel","Docker","GitHub Actions","Oracle Cloud","Azure","Linux"],"tags":["cloud","devops"]},{"name":"Apps","items":["SwiftUI","Android (Kotlin)","React","Next.js","Astro"],"tags":["frontend","mobile"]},{"name":"Edge and hardware","items":["ESP32","Raspberry Pi","Arduino","ROS"],"tags":["edge","iot","embedded"]},{"name":"Testing","items":["pytest","Playwright","JUnit","Vitest"],"tags":["testing"]}]},"principles":{"items":[{"id":"proposes-disposes","text":"The model proposes; code disposes.","detail":"Model output is a proposal. Code checks it against a schema, a policy or a test before it touches anything real."},{"id":"sealed-test","text":"A number isn't true until it survives a test it couldn't have seen.","detail":"Pre-register the bar, seal the test set, and report what it says."},{"id":"report-the-null","text":"Report the result that went against you.","detail":"Leaks, null results and failed acceptance runs go in the record next to the wins."},{"id":"small-first","text":"Try the small model first.","detail":"A specialist that runs on the machine in front of you, with a general model as the fallback."},{"id":"fail-closed","text":"Fail closed.","detail":"Unsigned requests, unknown config keys and partial uploads stop the operation, loudly."},{"id":"push-not-poll","text":"Push, don't poll.","detail":"Kernel events, server-sent events and alarms instead of sleep loops."}]}}