Skip to content
View cnpierrepapi's full-sized avatar

Block or report cnpierrepapi

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
cnpierrepapi/README.md

Hi, I'm Chukwudumaga Nnawuogo 👋

  • 🏗️ 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

📬 Contact


🛠️ Languages

Python TypeScript JavaScript Java SQL GraphQL HTML/CSS


🤖 AI & data

Gemini Google ADK PyTorch scikit-learn Pandas NumPy DataHub pgvector Voyage AI Jupyter


⚙️ Web & data stores

Next.js React Node.js Express.js FastAPI Tailwind CSS Prisma PostgreSQL Supabase SQLite


☁️ Cloud, payments & tooling

Vercel Google Cloud Cloud Run Firestore AWS Docker Stripe Paystack Solana Git GitHub Actions


💻 Most used languages

Measured across my repos with the GitHub languages API, not estimated.

Python 49 percent TypeScript 39 percent HTML 7 percent CSS 3 percent


🚀 Projects

🧬 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.

🤝 Upstream contributions

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.

🧭 How I work

  • 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.

Popular repositories Loading

  1. blocklist blocklist Public

    Forked from phantom/blocklist

    JavaScript

  2. onenept-site onenept-site Public

    TypeScript

  3. solana-error-doctor solana-error-doctor Public

    Diagnostic skill for AI coding agents: paste a Solana error, get the root cause and the verified fix. Symptom-routed chapters (Anchor, toolchain, transactions, tokens, RPC, wallet, oracles) + /sola…

    JavaScript

  4. solana-ai-kit solana-ai-kit Public template

    Forked from solanabr/solana-ai-kit

    Claude Code / Codex / AI configs for the expert Solana builder. CLAUDE.md, agents, commands, hooks, rules, skills and settings across Web, Anchor, Pinnochio, Unity, Mobile, security and more.

    Shell

  5. dossier dossier Public

    Chat with your own documents. Upload a PDF, text, or URL and get answers with citations. RAG over pgvector.

    TypeScript

  6. cnpierrepapi cnpierrepapi Public

    Profile