Logaritim
Question pool and exam builder
Gemini reads the questions in PDFs into structured data and writes new ones; every question comes out schema-bound, then goes through a blind solver and a judge model.
See the productAll of them are live; store pages and details are on the Products page.
Question pool and exam builder
Gemini reads the questions in PDFs into structured data and writes new ones; every question comes out schema-bound, then goes through a blind solver and a judge model.
See the productAI video app
OpenAI edits each video prompt before generation, or rewrites it safely, and translates template texts; the calls run on the server.
See the productAI budgeting coach
A budgeting chat powered by OpenAI: the user’s question goes from the server to the model together with a summary of their accounts and transactions.
See the productThese are not Pepechura client projects; our team worked inside these companies’ own teams.
SaaS platform for the construction industry
Our team worked on Playwright-based, AI-assisted end-to-end test automation from inside Subtraid’s own development team.
A language model is good at reading messy text into tidy data, writing short texts and turning a text into another format or language. It is weak at exact arithmetic, recalling a record word for word and giving the same answer every time. So we do not hand it the whole product; we place it in a single step whose input is known, whose output can be checked and which can be undone when the model is wrong.
| Product | Provider | The model’s job | Check |
|---|---|---|---|
| Logaritim | Gemini (Vertex AI or the Gemini API) | Reading the questions in PDFs into structured data and writing new questions against curriculum outcomes | Schema-bound output; blind solver and judge; only approved questions go into exams |
| Rigel | OpenAI | Editing the video prompt before generation and bringing it in line with content rules; translating template texts | If the model does not answer, the user’s original prompt is used; translations are checked for every requested language |
| LydiaVault | OpenAI | A chat that answers the user’s questions about their budget | The model sees only that user’s summary of accounts, goals and transactions |
Our most complete example is Logaritim. Course-material PDFs are read page by page; pages whose text can be extracted directly are not sent to a model to be read, and only pages that must be read as images go to Gemini. Every generated question is handed to a solver model that cannot see the answer key; a judge model compares the two answers and marks the question “approved”, “rejected” or “needs fix”. Only approved questions go into exams, and an admin can also reject a question by hand from the dashboard.
In Logaritim the schema of the expected answer (Pydantic) is passed straight to Gemini, so the model cannot invent a field name. In Rigel the translation response is validated with a zod schema.
In Logaritim every model call is logged with its input, output and thinking tokens, and the cost is worked out per job. How much the model may “think” is also capped per task.
Logaritim has a blind solver and a judge. In our own internal tools, too, a message the model writes is only a draft; a person decides whether to send it.
In LydiaVault the user’s name and email are not sent to the model, only the summary needed to answer the question. In Rigel only the prompt text goes to the model, not the photo.
In Rigel the flow does not stop if the model fails to answer; it carries on with the original prompt. In Logaritim, when a model is overloaded or out of quota, the next model in line takes over.
API keys live on the server, not inside the mobile app; in Rigel the key is read from AWS Secrets Manager.
We talk about which job the model will take on, which data will go to the provider and where errors will be caught.
We write down the input and output schema, the provider and account type, the acceptance criteria and how usage cost will be tracked.
Every week you see a build working on your own sample data; the examples that come out wrong set the next week’s prompt and check changes.
A senior QA tests the flow before release; besides the expected outputs, the scenarios cover broken input, empty responses and a provider that does not answer.
We fix the bugs that surface in this period free of charge; after that you can continue with monthly maintenance.
Timelines and budget ranges are on our AI automation, AI agent and pricing pages. Besides the development fee there is a model usage cost that depends on your volume; we estimate it together at the quote stage.
We use both: Gemini in Logaritim, OpenAI in Rigel and LydiaVault. We choose by the kind of work, where the data is allowed to go and the usage cost. We route model calls through a single layer, so a change of provider or model stays inside that layer.
OpenAI’s and Google’s terms for API and business use provide that the data you send is not used to train their models; free usage tiers can have different terms. We put in writing at the start which account will be used and which fields will go to the model.
We assume it will, from the start. We bind the output to a schema, reject responses that do not fit it, and show the result to a person or a second check. In Logaritim the solver model can report that none of the options is correct, and that is used as a sign that the question itself may be broken.
We send the model only the data it needs: in Logaritim pages with readable text are not sent to a model to be read, and in LydiaVault a summary of a set period goes instead of the whole history. We log the token count and estimated cost of every call, so you can see which job the cost comes from.
A perpetual licence to use the software, and its documentation. Transferring the source code to you is possible for an extra fee, stated separately in the quote.
In a free 30-minute scoping call we work out together which job the model takes on, which data goes to the provider and how its output will be checked.