{"schema":"https://jsonresume.org/schema/","meta":{"version":"1.0.0","lastModified":"2026-09-06T06:06:23.947Z","canonical":"https://balisa50.github.io/api/resume"},"basics":{"name":"Abdoulie Balisa","label":"AI Systems Developer · Data Science Student · Aspiring Actuary","url":"https://balisa50.github.io","summary":"ML/AI engineer and data scientist. Self-taught, shipping real products end-to-end: RAG, agentic pipelines, forecasting models, and polished Next.js front-ends. Comfortable across Python, TypeScript, and the infra that glues them.","location":{"city":"Fajikunda","countryCode":"GM","region":"Remote"},"profiles":[{"network":"GitHub","username":"Balisa50","url":"https://github.com/Balisa50"},{"network":"LinkedIn","username":"abalisa","url":"https://www.linkedin.com/in/abalisa"}]},"skills":[{"name":"AI engineering","keywords":["RAG","pgvector","sentence-transformers","prompt specification","tool calling","output validation"]},{"name":"Machine Learning","keywords":["PyTorch","CTGAN","scikit-learn","PyMC","MCMC","HuggingFace"]},{"name":"Backend","keywords":["Python","FastAPI","Node.js","PostgreSQL","Redis","Prisma"]},{"name":"Frontend","keywords":["TypeScript","React","Next.js 15","Tailwind","Three.js"]},{"name":"Infra","keywords":["Vercel","Docker","GitHub Actions","WebAssembly"]}],"projects":[{"name":"The Gambia 2074","description":"The Gambia has no working death-registration system, so its population figures come almost entirely from the UN, and those were set before the first digital census in 2024. Mortality is fitted with Lee-Carter in three forms: the standard SVD fit, a Bayesian one in PyMC, and a coherent one that pools The Gambia with its West African neighbours. Each feeds a cohort-component model. Run first on the UN's own inputs, that model reproduces their published figures to within 1 percent, which is what makes the independent run worth reading. Re-based on the census it gives 4.66 million by 2074, with a 95 percent interval of 4.35 to 4.98 million. That is about 0.7 million below the UN, whose base sits roughly 13 percent above the census count. Over the same period total dependency falls from 77 to 49 per 100 working-age adults while old-age dependency rises from 5 to 18. Every input is public.","highlights":["An independent population forecast for The Gambia, out to 2074","~4.66M by 2074 (4.35 to 4.98M), within 1% of the UN"],"keywords":["Python","PyMC","MCMC","NumPy","Pandas","Matplotlib"],"url":"https://github.com/Balisa50/gambia-population-projection","repository":"https://github.com/Balisa50/gambia-population-projection","status":"shipped"},{"name":"NOVA","description":"Banks in West Africa hold customer data they are not allowed to share, and for rural borrowers and the informal economy much of it was never collected in the first place. NOVA generates stand-in data two ways. In Create mode you set the columns, distributions and rules, such as a new account making a large international transfer being likely fraud, and it builds records from nothing, using seven financial presets or your own. Rules run through a whitelist evaluator, so what a user types cannot execute. In Copy mode a Conditional Tabular GAN, written from scratch in PyTorch rather than pulled from SDV, learns an existing dataset and produces rows that match its structure without copying anyone. Each batch is checked four ways: statistical similarity 0.94, correlation L1 0.05, train-on-synthetic-test-on-real 0.92, and distance-to-closest-record 1.10, with 1.1 percent near-duplicates. FastAPI backend on Hugging Face Spaces, Next.js front end on Vercel.","highlights":["A synthetic-data engine for finance, from domain rules or from real data","TSTR 0.92 · 4 checks pass · 7 domains, no source data needed"],"keywords":["Python","PyTorch","CTGAN","FastAPI","Next.js 16","scikit-learn"],"url":"https://nova-fin.vercel.app","repository":"https://github.com/Balisa50/nova","status":"shipped"},{"name":"Gambia Legal Aid","description":"A question-answering system over 13 Gambian Acts of Parliament. Every answer names the section it came from. A validator checks each citation against the retrieved text before the answer ships: invented section numbers are stripped, quotation marks are only allowed around text that appears verbatim in the statute, and a claim attached to the wrong section is caught by comparing it against that section title. When the legislation store is unreachable it refuses outright rather than answering from the model's memory, and the provider chain falls through to a second model so a retired model id degrades the answer instead of ending the conversation.","highlights":["RAG chatbot for Gambian law","Cites the section, or refuses. 13 Acts, validated before it answers"],"keywords":["Python","RAG","Vector search","FastAPI","Next.js"],"url":"https://gambia-legal-aid-ab.vercel.app/","repository":"https://github.com/Balisa50/gamba-legal-aid","status":"shipped"},{"name":"Credit Risk Scorecard","description":"Full credit scoring pipeline: WoE/IV feature selection, logistic regression with Basel II points conversion, Gini/KS/PSI validation, and multi-scenario stress testing. Built on 12,000 synthetic West African microfinance loans.","highlights":["Basel II scorecard for West African microfinance","Gini 0.27 · KS 0.21 on a later-vintage holdout · PSI 0.002 while defaults rose a third"],"keywords":["Python","scikit-learn","Pandas","Next.js","Recharts"],"url":"https://credit-risk-ab.vercel.app/","repository":"https://github.com/Balisa50/credit-risk-scorecard","status":"shipped"},{"name":"FORGE","description":"A learning platform where each learner works through one of 13 career roadmaps with a mentor: data science, AI engineering, cybersecurity, full-stack and others, 12 to 43 weeks each, with about five mastery checks a week and 385 video resources. A week only counts once the engine has matched it against the learner's actual GitHub commits and deployed URLs, so nothing is self-reported. Mentors release each week and sign it off, and finishers get a signed certificate an employer can check. It also carries an Actuarial Exam P and FM engine that generates tiered, non-repeating SOA-style questions with interactive diagrams.","highlights":["Mentor-driven learning platform with proof-of-work verification","13 roadmaps · 385 video resources · 1:1 mentors · proof-of-work"],"keywords":["Next.js","TypeScript","Prisma","PostgreSQL","NextAuth v5","KaTeX"],"url":"https://forge-ab.vercel.app","repository":"https://github.com/Balisa50/forge","status":"in-progress (90%)"},{"name":"HireIQ","description":"Candidates answer in a conversation rather than a form. Each interview is run by a model on NVIDIA-hosted open weights that asks a follow-up when an answer is thin, and the hiring team gets a ranked, scored report per candidate. It covers the whole path: posting the role, generating the questions, adapting the follow-ups, scoring, and a PDF report at the end.","highlights":["A conversation in place of an application form","Conversational interviews · ranked scoring · PDF reports"],"keywords":["Python","FastAPI","NVIDIA NIM","Next.js 14","Supabase","WeasyPrint"],"url":"https://hireiq-ab.vercel.app","repository":"https://github.com/Balisa50/hireiq","status":"in-progress (95%)"},{"name":"AYAT","description":"All 6,236 verses embedded with sentence-transformers, projected to 3D with UMAP and rendered as a live particle galaxy in Three.js. Ask a question and the corpus physically reorganises: the query is embedded in the browser, verses converge on an axis of meaning measured from the results themselves, and the rest opens outward. Ask something it has nothing for and it says so instead of returning a plausible list. No inference server, so it costs nothing to run.","highlights":["A Qur'an that rearranges itself around your question","6,236 verses reprojected in 22ms, fully client-side"],"keywords":["Python","sentence-transformers","UMAP","HDBSCAN","transformers.js","Next.js 16","Three.js","LLM API"],"url":"https://ayat-ab.vercel.app/","repository":"https://github.com/Balisa50/ayat","status":"shipped"},{"name":"VANTAGE","description":"Collects technology stories from six regions, writes each one up and scores it, then publishes with nobody in the loop. Covers startups, policy, big tech, markets and infrastructure. The score exists so you can skim the feed instead of reading all of it.","highlights":["A technology brief that assembles itself","Runs unattended · every story scored"],"keywords":["Next.js","TypeScript","AI synthesis","Vercel"],"url":"https://vantage-ab.vercel.app/","repository":"https://github.com/Balisa50/vantage","status":"shipped"},{"name":"Dalasi Pulse","description":"Forecasts the Dalasi against major currencies and models remittance flows. Pipelines pull live rates from the Central Bank of The Gambia JSON API plus World Bank macro data into a Next.js dashboard.","highlights":["FX and remittance forecasting for The Gambia","Live Dalasi forecast"],"keywords":["Python","Pandas","Next.js","CBG API","World Bank data"],"url":"https://dalasi-ab.vercel.app/","repository":"https://github.com/Balisa50/dalasi-pulse","status":"shipped"},{"name":"BS Real Estate","description":"A property site for a client in The Gambia, with a private dashboard the team uses to manage their own listings without calling a developer. Next.js 16 and Prisma 7, a blue and gold brand, admin-only login, and their real listings throughout rather than placeholder content.","highlights":["Website and admin CMS for a Gambian property firm","Client site with a self-serve admin CMS"],"keywords":["Next.js 16","Prisma 7","TypeScript","Tailwind"],"url":"https://bs-real-estate-fawn.vercel.app/","repository":"https://github.com/Balisa50/bs-real-estate","status":"shipped"},{"name":"Life Insurance Risk Model","description":"Gompertz-Makeham mortality model, Kaplan-Meier survival analysis, Cox PH (concordance 0.77), actuarial premium pricing, and Monte Carlo VaR simulation with pandemic stress testing across 5,000 scenarios.","highlights":["Actuarial risk model for Sub-Saharan Africa","Cox PH C-index 0.77 · 5k Monte Carlo sims"],"keywords":["Python","lifelines","NumPy","Next.js","Recharts"],"url":"https://life-insurance-ab.vercel.app/","repository":"https://github.com/Balisa50/life-insurance-risk","status":"shipped"}],"publications":[{"name":"Site-invariant representations for cough-audio screening: removing the confound does not recover disease signal","publisher":"Working paper, unrefereed, not submitted","releaseDate":"2026","url":"https://balisa50.github.io/papers/site-invariant-cough-screening.pdf","summary":"Adversarial training removes the recording site from cough representations, and disease accuracy does not improve, because predicting a country's base rate already beats listening to the cough."},{"name":"Do prediction intervals for satellite-based poverty estimates survive a national border? A pre-registered evaluation in West Africa","publisher":"Working paper, unrefereed, not submitted","releaseDate":"2026","url":"https://balisa50.github.io/papers/poverty-interval-transfer.pdf","summary":"Conformal intervals for satellite wealth models transfer on average and not for any individual country, dispersing 2.8 to 4.7 times more than sampling permits, which makes the average the wrong summary."},{"name":"Reconstructed mortality series understate forecast uncertainty: evidence from The Gambia and thirty countries","publisher":"Working paper, unrefereed, not submitted","releaseDate":"2026","url":"https://balisa50.github.io/papers/reconstructed-mortality-uncertainty.pdf","summary":"Mortality forecasts for countries without death registration report intervals three to five years wide against the UN's twenty, and the gap traces to reconstruction smoothing away the variation the model estimates its uncertainty from."}],"work":[{"name":"Independent","position":"AI Systems Developer · Data Science Student","startDate":"2024-01","summary":"Building production AI products end-to-end: ingestion, modelling, orchestration, and the UIs on top.","highlights":["Shipped VANTAGE, a global tech intelligence feed with AI synthesis and signal scoring","Shipped Gambia Legal Aid, a RAG chatbot on Gambian law with a hallucination-guard pipeline","Shipped Dalasi Pulse, FX and remittance forecasting on CBG and World Bank data (Python + Next.js)","Shipped FORGE (accountability OS), ColdPilot (cold-outreach agent), and AYAT (Qur'anic verse galaxy)"]}],"education":[{"institution":"Kwame Nkrumah University of Science and Technology (KNUST)","area":"Statistics","studyType":"BSc","location":"Ghana","courses":["Probability Theory","Statistical Inference","Regression Analysis","Machine Learning","Linear Algebra"]}],"languages":[{"language":"English","fluency":"Native"}]}