- 🏗️ Founder & Director, Onenept Studios (Delaware C-corp). I build AI systems that can be checked.
- 🔍 Trust is the interesting problem: can a user verify what the system just told them? That shows up in ML governance, retrieval and provenance, and it is most of what I have shipped.
- 🎓 MSc IT Management with Data Analytics, GBS Malta (in progress) · MSc Innovation, Strategy & Entrepreneurship, Grenoble École de Management (Distinction) · BEng Electrical & Electronics Engineering, Covenant University
- 🚀 Open to remote and contract work: AI Product Manager, Customer Centric Engineer, Forward Deployed Engineer
- 🌐 Site: onenept.com
- 📧 Email: cnpierrepapi@gmail.com
Measured across my repos with the GitHub languages API, not estimated.
🧬 Ariadne | Python, Next.js, TypeScript, DataHub lineage | Aug 2026 | Live
- When a model starts behaving badly, Ariadne walks data lineage to the upstream change that caused it instead of guessing. It carries policy packs, so one warehouse can be checked against several regulatory regimes at once.
- The result I care about most is a negative one. Testing whether protected attributes could be reconstructed from a "clean" dataset, sex came back at 0.813 AUC and race at 0.73, while geographic region carried almost nothing. Dropping a column is not the same as dropping the information.
📈 Warmleads | Next.js, TypeScript, Supabase, Prisma, Stripe, Paystack | 2026 | Live
- Scores local businesses on how badly they need what an agency sells, so outreach starts from evidence instead of a list. 10,675 scored businesses, live billing in two currencies.
- Taught me more about pricing than about code: the first pricing model needed roughly 1,400 subscribers to work. The fix was the customer, not the feature set.
📄 Dossier | Next.js, TypeScript, Voyage embeddings, pgvector, NDJSON streaming | 2026 | Live
- Answers you can check. Two halves that do the same job and differ only in who fetches the text. Documents: bring a PDF, pasted text or a URL, ask questions, every answer cites the passages it came from. Companies: name a company and a tool-using agent reads their site and the web, then returns a brief with talking points.
- Every endpoint streams, so you watch each search and each page open as it happens instead of staring at a spinner. Built because an AI answer you cannot check is worth very little anywhere that being wrong is expensive.
🛂 MIGRAGENT | Gemini 3.5, Google ADK, Cloud Run, Firestore, Python | Aug 2026 | Live
- You are moving country or getting licensed to work in one. Fill one short form, upload the documents you already have, and an agent reads the official government sources and hands back a guide you can save as a PDF. No chat window.
- Over 2,000 live requirements across 16 lanes, and every single one carries the source link plus the date it was read. No source, no claim: it goes to an open questions section instead.
- A scheduled round re-reads the sources every day, so when a rule moves the guide moves with it. Changes are reported from the government's own published history, with their dates, never as a forecast.
🩺 Solana Error Doctor | TypeScript, Solana | 2026
- Turns an opaque chain error into a root cause and a verified fix. Shipped as a public skill for coding agents.
One thread, running since July 2026, on how DataHub models incidents. DataHub could raise an incident on a table but not on a column, so the metadata model and the docs disagreed about which entity types were actually supported. I took the column case and the documentation.
- datahub#19115 · merged 20 Aug 2026 · Incident support for
schemaField, so a data quality problem attaches to the column it belongs to instead of the whole dataset. - datahub#18685 · open · Generates the supported-entity table from the metadata model at build time, rather than asking someone to remember to update a page.
- datahub#18684 · open · Two self-hosted MCP troubleshooting entries, both from problems I hit myself.
- datahub-skills#66 · open · A skill that traces which models and dashboards a dataset change is about to break.
Building MIGRAGENT on Google's Agent Development Kit turned up four things worth sending back. The first one is mine. The other three are threads somebody else opened where I could add the measurement or the workaround that was missing. All four came out of shipping on it, not from reading the tracker.
- adk-python#6880 · open · A custom model class gets handed one config object holding 35 fields that belong in three different places in the request, and nothing says which is which. Put the tools in the wrong half and the call still returns 200, so your agent silently has no tools and answers from memory. Filed with a repro that runs offline.
- adk-python#2425 · open · A design for cancelling a running agent. The stopping machinery already exists and is load bearing, it just cannot be reached from outside the run. Offered to write it.
- adk-python#2792 · open · Stopping an agent early prints a stack trace for something you chose to do, plus the workaround that fixes it.
- python-genai#782 · open · Thinking spends two to three thousand tokens before writing a character, so any output limit under about 4k is a zero budget dressed as a generous one. Every call failed the same way across 400 pages until we found it.
- Build on real data. Live markets, real documents, production lineage. A demo that only works on fixture data has not been tested.
- Prove it. A claim should link to a source or settle on chain. I would rather ship a measured result that is inconvenient than a confident one I cannot support.
- Build for one user first. If it is not useful to a single named person, scale will not save it.
- Test on the deployed thing. Localhost agrees with you. Production does not.