Home / Features

Supplier document management for food plants

Certly is supplier document management software for food plants, where each certificate your QA team uploads is filed against one supplier and one certificate type instead of sitting loose in a drive folder. It is built for the moment an auditor names a supplier and asks for the current allergen declaration, and you need to produce it without opening four folders, a spreadsheet and your inbox.

A drive folder is storage, not document management

Most mid-market plants already store supplier documents. They are in a folder tree on a shared drive, in the QA inbox where they arrived, in a downloads folder on one laptop, and in a spreadsheet that claims to index all of it. Storage is not the problem. Knowing which file is the current one, and for which supplier, and against which requirement, is the problem.

The symptoms are familiar. Two allergen declarations for the same supplier, one named with a version suffix and one without, and no reliable way to tell which came second. A CoA saved under a batch number instead of a supplier name. An audit certificate whose expiry date exists only inside the PDF and inside the head of the person who filed it. A supplier with three certificate types required and two on file, where the gap is visible only to whoever remembers the requirement.

That is also where an audit goes wrong. Nobody raises a non-conformance because your folder structure is untidy. They raise it because the document on file is out of date, or because the requirement you said applied to that supplier has nothing behind it, or because the evidence could not be produced while the auditor waited. The question that catches teams out is plain: show me the current allergen declaration for this supplier, and tell me when it expires, asked about a supplier nobody has thought about in nine months.

Certly's answer is narrow and deliberate. Every certificate is stored as a record, so the file, the supplier it came from, the certificate type it satisfies, and the dates it was issued and stops being valid are fields on one record rather than four things somebody has to remember.

The record, not the file

Certly keeps a supplier database. You add a supplier with its contact details and you set the certificate types you require from that supplier, for example an allergen declaration, a certificate of analysis, and an audit certificate. You can edit and list those suppliers as the approved supplier picture changes.

When your QA team uploads a certificate, it is stored against one supplier and one certificate type, as a PDF, PNG or JPEG, with its issue date and expiry date recorded as dates. That is the whole idea. The document is no longer found by remembering where it was filed. It is found on the record of the supplier it came from, under the requirement it satisfies.

Each supplier and certificate type has one current document, the one your team has accepted. When next year's audit certificate arrives it is uploaded into that same slot with its own issue and expiry dates, and the status is computed from the dates you entered. There is one place to look for the allergen declaration from that supplier, rather than three files with similar names and a judgement call about which of them is in force.

Documents with no printed expiry

Not every certificate states when it stops being valid. Allergen declarations and vendor questionnaires often carry only the date they were signed, and plants treat them as valid for a fixed period of their own choosing, commonly a year or three. Certly is built for that case: the issue date is recorded on upload, and your plant can set a renewal period per certificate type, so the due date follows from the document's own date rather than from a note in a spreadsheet that only one person understands.

Uploads are done manually by the QA team, which is the honest description of how most plants work today: the document arrives by email, somebody looks at it, and somebody files it. Certly does not change who decides a document is acceptable. It changes what happens to the document after that decision, so that months later a colleague can see which supplier sent it and which requirement it was filed against. Suppliers can also send a document in themselves through a single-use, expiring link with no account to create, which is covered on the supplier upload page in this section.

What the record then makes possible is the rest of this pillar: a single-screen status view per supplier, and alert thresholds at 90, 60 and 30 days before expiry. Both have their own pages. This one is about the storage underneath them, because a status is only as good as the field it is computed from.

How certificate storage works in Certly

  1. Add the supplier

    Create a supplier record with its contact details. This is the single entry that every document from that company hangs off, so a second spelling of the same supplier name never becomes a second pile of files.

  2. Declare the certificate types you require

    On the supplier record, set the certificate types you need from them, such as allergen declaration, CoA, or audit certificate. The requirement now lives in the system rather than in a colleague's memory of what that supplier owes you.

  3. Upload the document against a supplier and a type

    Your QA team uploads the certificate as a PDF, PNG or JPEG and files it to one supplier and one certificate type, so the document is identified by the company it came from and the requirement it satisfies rather than by where somebody happened to put it. Files are accepted up to 4 MB, and a heavier multi-page scan is refused with a message asking you to compress it.

  4. Record the issue and expiry dates as dates

    The expiry date is entered as a field on the certificate, not left inside the PDF. Certly validates that it is a real date, so a half-typed year or an impossible day is not saved and does not quietly break a status later. Where the document carries no printed expiry, record the issue date and let the renewal period you have set for that certificate type give the due date.

  5. Fix anything the form rejects, inline

    Validation runs on the server. A missing supplier name, a contact email that is not a valid email address, a missing certificate type, or an invalid expiry date comes back as a field-level error shown next to the field it belongs to.

  6. File next year's document into the same slot

    When the renewal arrives, it is uploaded against the same supplier and the same certificate type, with its new issue and expiry dates. The requirement keeps pointing at one current document, and the status and alert thresholds are computed from the new expiry date.

  7. Keep the supplier record current

    Edit a supplier's contact details and add the certificate types you require as your approved supplier programme moves, so what the system expects matches what you would defend in an audit. Choose those types deliberately when you add the supplier: a type you tick stands as a requirement until a document sits against it.

  8. Let the status view and the alerts read the record

    Because the dates sit in fields rather than in a filename, the single-screen status view per supplier and the 90, 60 and 30 day alert thresholds are computed from them. Those two parts have their own pages in this section; the storage is what they stand on.

What this changes in practice

One place to look, per supplier

When an auditor names a supplier, you open that supplier. The documents you hold from them sit on the record, by certificate type, rather than spread across a folder tree, an inbox and a spreadsheet that disagree with each other.

A requirement that exists outside your head

Because required certificate types are set on the supplier, what you expect from that supplier is written down. A colleague covering for you can see the requirement without asking what you normally chase them for.

Expiry dates that are data

An expiry date entered as a validated field is stored and read as data, which is what lets Certly tell current from expiring from expired. An expiry date buried in a filename or inside a PDF can only be found by someone who opens the file.

One current document per requirement

Each supplier and certificate type points at the document your team accepted, so nobody has to choose between three files with similar names and guess which one an auditor should be handed.

Bad records rejected at the door

Server-side validation means a certificate cannot be saved without a type or with a nonsense expiry date, and a supplier cannot be saved with a malformed contact email. You find out at the moment of entry, with the error beside the field, rather than during an audit.

Personal details you can remove on request

Supplier contacts are named individuals, and sometimes one of them asks to be removed. On the supplier's page you can erase that contact's name and email behind a confirmation that explains what goes, the name and the email, and what stays, the certificate records, and the contact fields are then shown as erased.

Where the documents live, and who can see them

Certificate documents are held in the product's own Postgres database on Amazon Web Services, not in a shared file store, alongside supplier company names, contact names and contact email addresses, and the issue and expiry dates you record. Records are kept while your account is open, expired certificates and chase history included, because that trail is what an auditor asks for.

You can take it all back out and you can delete it. Account deletion sits in Settings, under Site details, confirmed with your email address, and it removes your sites, suppliers, certificate documents, chase history, settings and sign-in details at once, cancelling any live subscription. The same screen downloads a JSON file of your data first. A single supplier contact's name and email can be erased on their own, without touching the certificate records.

Certly is single-tenant per plant, and every supplier and certificate query is scoped to the authenticated user's plant, so your plant's supplier documents are read only by people signed in to your plant. People sign in with an email address and a password. Beyond Amazon Web Services, which hosts the application and its database and sends chase and upload-link email through Amazon SES for a site that has not connected its own sending account, Stripe handles subscriptions and card payments, and Resend delivers email for a site that connects a Resend account instead.

It is worth being plain about what is not in place yet, because a QA manager will be asked. There is no independent security audit or certification such as SOC 2 or ISO 27001, no single sign-on or two-factor authentication, no standard data processing agreement ready to countersign, no published backup and disaster-recovery schedule, and no choice of data residency region. If any of those is a condition of your approval process, it is better to know now than after a trial.

Questions

Is this document management for the whole plant or only supplier certificates?

Only supplier certificates. Certly stores the documents your QA team collects from suppliers, tied to a supplier and a certificate type, and your team uploads them. Suppliers can also send one in themselves through a single-use, expiring link with no account to create. It is not a general document control system for your internal procedures, work instructions or HACCP paperwork.

What certificate types can I record against a supplier?

You set the certificate types you require from each supplier, for example an allergen declaration, a certificate of analysis, or an audit certificate, and each uploaded document is filed against one of those types. Choose them deliberately: a type you tick stands as a requirement on that supplier until a document sits against it.

What file formats are stored, is there a size limit, and where do the documents live?

Certificates are stored as PDF, PNG or JPEG with their issue and expiry dates, up to 4 MB per file; a larger scan is refused with a message asking you to compress it. Documents are held in the product's own Postgres database on Amazon Web Services rather than in a shared file store, and there is no choice of hosting region today.

What if a supplier document has no printed expiry date?

Record the issue date on upload and set a renewal period for that certificate type at your plant, so the due date is derived rather than guessed. This is the common case for allergen declarations and vendor forms, which carry the date they were signed and nothing else.

What happens when a renewal is uploaded?

The renewal is filed against the same supplier and the same certificate type, with its own issue and expiry dates, and the status for that requirement is recomputed from the new date. The slot then points at the renewed document as the current one for that requirement.

Can a supplier contact's personal details be deleted, and can I get my data out?

Yes to both. On the supplier's page there is a delete contact data action behind a confirmation dialog that explains what is removed, the contact name and email, and what remains, the certificate records, and the contact fields are then shown as erased. Account deletion in Settings, under Site details, downloads a JSON file of your data first, then removes your sites, suppliers, certificate documents, chase history, settings and sign-in details at once.

Does Certly check that a certificate is genuine?

No. Certly stores and organises what your team uploads and reminds you about expiry. It does not verify certificate authenticity and it does not guarantee regulatory compliance, so review of the document itself stays with your QA team.

Can I start using it today?

Not yet. Certly is at the waitlist stage, so joining the list is how you get an invitation when plants are being onboarded.

Tell us how you track certificates today

If you keep supplier certificates in a spreadsheet and chase them by email, we want the details: your standard, your supplier count, and the part of the chase that wastes the most time.

One email when it launches, and the occasional update. Unsubscribe any time. Privacy.