Musawir Raji's Work | ContraWork by Musawir RajiMusawir Raji
AI-Native Full-Stack Dev | Claude Code, Cursor, Next.js
An AI guide grounded in 56 texts of conscience. It quotes only what it finds, shows only the sources it used, and finds the right one 94% of the time.
The brief
VoxAnima is a conversational guide for people facing a moral choice at work: the moment you see something wrong and have to decide whether to keep going. It speaks in the voice of its founder, an activist and author with 35 years in the work. It draws on a fixed library of nonviolence and wisdom literature: Gandhi, the Gospels, the Hebrew Bible, the Qur'an, the Dhammapada, Tolstoy, the Quakers, the Stoics and more.
One rule mattered more than anything else. Every claim had to come from a passage the system actually found, and the source line under each answer had to be true.
What I built
A searchable library of 56 texts, split into 1,600+ passages, stored in Postgres with pgvector and searched by meaning on every question.
Chunking that respects the texts. Scripture is split by whole verses, so no passage cuts a verse in half or crosses a chapter. Each passage carries its own reference, like Isaiah 58:1-14, so the answer can say exactly where a line came from.
A search cutoff measured, not guessed. The original spec's threshold was tuned for a different embedding model and returned nothing. I measured the real score range and set the cutoff from the data.
A balance rule. Scripture is about 60% of the library, so it used to crowd out every other voice. Each answer now takes at most 2 passages from any one source, which leaves room for Woolman, Tolstoy or the Buddha to speak.
Sources you can trust. The model numbers each passage it uses. The app shows a source line only for passages the answer actually drew on. A passage that was found but not used gets no byline.
A test set for search. 34 real questions with known answers, run before and after every change. The right source lands in the top 5 for 94% of them.
Fail loudly, never silently. When the database went down in production, the app had kept answering with no sources and nobody could tell. I made failures visible, added a daily health check, and the test suite now refuses to pass against a dead backend.
Results
94% of test questions find the right source in the top 5 (MRR 0.78)
Only cited passages get a byline: in the cover's live example, 5 passages were found, 3 were used, and 2 got no byline
The founder's voice comes from his own recorded answers, held as a reference set the model writes against
Stack
Next.js · Supabase (Postgres + pgvector) · Voyage embeddings · Claude via the Vercel AI SDK · Vercel A website, realtor app, office desk and developer portal on one database. Every sale is checked against its receipt, so no plot is ever sold twice.
The client. A realtor network in Ibadan. Realtors join through someone already in the network and sell estates plot by plot for developers. Before this, the work ran on a WordPress portal, WhatsApp and spreadsheets.
The problem.
Payment receipts were checked by hand on WhatsApp, and some were lost, reused or faked.
Nothing stopped two realtors from selling the same plot.
Who brought in whom could be changed quietly.
Developers couldn’t see what was selling.
What I built. One platform with four parts:
Public website: live estates showing plots left, and a clear path to join or list an estate.
Realtor app (phone-first): your circle of people, estates to sell with a live plot map, and a receipt upload that holds the plot the moment it’s sent.
Office: one Desk for every decision, with a recommended answer for each receipt (amount short, wrong sender, reference already used). Estates, the network tree, members, sales and a full audit log.
Developer portal: developers watch their own plots sell, without seeing the network.
How.
I started with research: a teardown of the competitor, what each user needs, and the hard problems written down before any code.
Then design: three concepts, sign-off, and a sample of every screen before building it.
The rules live in the database, not the screens. A plot becomes sold only when its receipt is approved, a plot can’t have two live sales, and an upline only changes with a written reason. The audit log can’t be edited.
Over 100 automated security checks prove each person only sees what they should.
Outcome. A network that runs on proof instead of screenshots in a chat, and an office that clears a day’s receipts from one screen. I designed and built book clubs for Readiary on iOS, Android and web: spoiler-locked discussions, live chat, meetups, votes and QR invites. Most founders already have the idea. Many already have a first version, built with an AI tool like Lovable, Bolt or Cursor.
If that’s you, you just found yourself a full stack AI engineer and mobile app developer.
The hard part is making it real. Users who sign up, pay, and trust it with their data. That’s the part I do.
Send me your spec, your PRD, or your AI-built app. I build the core flow first, so you see it working in days, not weeks. Then we ship the rest in weekly releases you can test yourself.
One founder hired me for a $120 Supabase job. Today her app is live on the App Store and Google Play, and she’s hired me for every phase since.
What I build:
AI agents and automations
Web apps and SaaS on Next.js and Supabase
Mobile apps in React Native and Flutter
AI assistants that answer from your own data
Send me your spec here on Contra, and I’ll tell you what I’d build first.