Hi everyone,
During the Meta Global AI Developer Hackathon, I worked on a problem I know from my time in a bank: loan approval workflows.
Why this problem
A bank writes its credit procedures in PDF policies. To turn one policy into a working approval process, business and IT teams often meet for weeks. After that, it is hard to say which step comes from which rule of the text.
I saw this first as a developer, then as a PMO in a bank. Zotra is my attempt to make it easier.
How it works
- Read the policy. The AI (Meta's Muse Spark) drafts the steps, roles, deadlines, documents and rules from the PDF. Each step cites its paragraph.
- Review and shape. You edit the diagram by hand, or ask the assistant in plain words. Nothing is saved until you accept it.
- Test it. You play a case as any role and replay it step by step.
- Run it. On a live case, only people and CEL rules decide. The AI helps to design and test, but it does not decide.
Stack: Go, PostgreSQL, React and Tailwind. Apache 2.0 license.
Why "Zotra"?
Zotra means "path" or "direction" in Malagasy. A workflow is a path to a decision, so the name felt right.
Try it
You can run it with Docker, without an AI key (the demo replays recorded answers):
donovan-ratefison / Zotra
Meta Global AI Developer Hackathon 2026: a workflow studio that turns a bank's credit policy into a tested, auditable approval app
From a credit policy PDF to a tested approval app.
The AI drafts and tests. Humans decide
See it
- Video: watch the demo on YouTube.
- Live demo: zotra-demo.donovan-ratefison.mg No install and no account. The data is sample data and resets every hour. The AI replays recorded answers: follow the steps in examples/ai-replay.
Try it in 2 minutes
You need Docker with Compose v2.
git clone https://github.com/donovan-ratefison/Zotra.git && cd Zotra docker compose up -d Open http://127.0.0.1:8080. At the first start, Zotra adds 60 sample cases over 30 days, so the inbox, the triage and the supervision have data. No AI key is needed for the demo: the app replays recorded AI answers for the sample policies. A thin line at the top of the studio says so.
Tour in 5 minutes
These steps work with no AI key.
-
Import a policy. On the library page, under Start…
I also put a short demo on X:
// Detect dark theme var iframe = document.getElementById('tweet-2116898213101724061-790'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2116898213101724061&theme=dark" }
Your thoughts
It is still a hackathon project, and I am still learning in this area. I would love to hear your thoughts, especially if you work in or near a bank. Issues and pull requests are welcome too.
Thanks for reading!