A collection of files becomes a website
You already have the material. It is sitting in folders.
An old site's backup. Twenty years of programmes and slides. Scans, photographs, recordings, reports, minutes, orphaned PDFs that something used to link to. Pages from a system nobody can run any more.
Publishing it properly is supposed to mean cataloguing every item, agreeing a structure, choosing a content system, filling a database and re-entering all of it by hand. Nobody has the months. So it stays where it is, and each year a little more of it becomes unreachable.
We publish it without any of that. You send the files as they are — inconsistent names, uneven folders, missing dates, whole sections that were organised by someone who left in 2011. What comes back is a website: pages, sections, navigation, search, and a sitemap, built from what is actually there.
What you get back
A real site, not a search box bolted onto a pile of documents. Folders become sections. Text pages, images and galleries are published as pages, with titles and dates read out of the files themselves.
Documents, recordings and everything else — PDFs, spreadsheets, video, audio, archives — become entries in the site you can link to and find, each carrying whatever title and date could be read from the file itself. They are published and reachable, not embedded: there is no generated player, poster or thumbnail, and we would rather say so here than have you discover it at delivery.
Everything is plain static files. No content system, no database, no application server and no plugin licences are needed to serve it — ordinary hosting and a domain renewal are all it takes to stay up. The site does not stop working because something lapsed.
If there was an old site with URLs worth keeping, they are kept. And where a link has shifted or broken, the site works out the nearest surviving page and sends the visitor there rather than to a dead end.
Where the source is genuinely uncertain, the site says so — date unknown, probable author, found in the 2008 folder. We would rather publish an honest gap than invent a precision the material does not have. That tolerance is exactly what makes publishing possible at all: nothing has to be perfect before it can be public.
Why this works when a normal migration does not
Because we are not filling in a database. There is no schema that every item has to fit before it can exist, which is the thing that makes ordinary migrations so expensive: someone has to decide, in advance, that every object is an article or an event or a person, and then someone has to sit down and make ten thousand imperfect objects pretend to be one of those.
Our compiler reads the folder instead. It infers what it can from the file — its name, its type, its date, its language, the folder it sits in, the files beside it — and publishes what it finds. Required ceremony is poison; that is the rule the engine is built on.
That this is real
The compiler is ours. It is written in Rust, it runs on our own machine, and it publishes live sites every day — including this page you are reading, which is itself a folder of files handed to it.
We also build statistical-analysis sites, which is a different machine and a different kind of work: a database or a feed becomes tens of thousands of generated pages that calculate, compare and let a visitor interrogate the numbers. Our own is odds.school — around 22,900 URLs across thirteen languages, live, and the first of a line we are extending.
It is built by a different tool than the compiler described above, and we would rather tell you that than let you work it out. We mention it because it answers the question actually worth asking about a supplier this small: has this person run multilingual publishing at that scale, and kept it standing? If your material is regular enough to be a database rather than a pile of folders, that is the machine you want, and it is the same conversation.
[DEMONSTRATION — not yet built.]
Two things hold the engine, and they are not the same thing. The same source always produces the same site, every page and every byte — so a rebuild is never a gamble, and any difference between two builds is a difference you asked for. Separately, the compiler itself is held by conformance, property and fuzz tests: that is what stands between a change in one corner and three thousand quietly corrupted pages somewhere else, which is the failure that ruins large archives and is usually noticed years too late.
How an engagement runs
First, a bounded stage. You send a representative part of the collection. We generate a real, private, working version of it — not a mockup — along with what we found in the material, the complications it contains, and a fixed price for the whole thing. If you stop there, you have seen the actual result on your actual files before committing to anything.
[PRICE — not yet set.]
Then the complete publication. The full collection imported, pages and navigation and search generated, redirects where there is an old URL list worth preserving, deployed and handed over.
[FLOOR — not yet set.]
Fixed price for the agreed scope. Anything new is quoted before it is started — never added afterwards as an overrun. Every proposal names a start date and a delivery date, and we would rather give you a date we will beat than one we hope for.
Your domain, your hosting account, your data and your repository are yours from the first day, in your own accounts.
What is separate work
Said plainly, because the border is what keeps this affordable. The publication and the archive come back. What does not: reviving a login system, a forum, a shop or any dynamic application; researching unidentified photographs; transcribing recordings; generating players, previews or thumbnails for documents and media; ongoing synchronisation with other systems; unlimited passes of corrections.
[SCOPE BORDER — draft only.]
Who this is not for
We work with people who can decide. If a purchase here needs a tender, a supplier registration process, a security questionnaire, three competing quotations, a certification we would have to go and obtain, or a committee that meets monthly — we are not your supplier, and saying so now saves us both a season.
Nor is this for a collection whose publication turns on handling sensitive personal data. We publish material that is meant to be public. If the hard part of your problem is deciding what may lawfully be shown about living people, that is a different job and a different supplier.
There are no standing meetings, no retainer, no on-call arrangement, and no permanent position. The work is defined, built, delivered and finished. You are welcome to come back with the next thing; you are not signing up to anything continuing.
This is not modesty about our size. It is why our quote and an agency's quote are not for the same thing: nearly everything they charge for is the apparatus, and we do not carry any.
Send us a sample
Not a call — an artifact. Send a sample of the collection, a link to the old site, or a written description of what you have and what you want it to become. We will tell you plainly whether it fits, and what a finished result would take.
Please do not send confidential, restricted or personal material at this stage. A public link, a written description, or a small non-sensitive sample is enough for us to answer.
[CONTACT — form and address not yet added.]
Engagements are conducted in writing, in English or Spanish.