System Walkthrough & Capability Overview · Avyxen LLC

A system built so no inquiry, no signed agreement, and no follow up ever slips through the cracks

For a course business, a missed inquiry isn't a shrug, it's a lost enrollment, and an enrollment like this one is worth thousands of dollars. This walkthrough shows how the system makes that loss structurally hard to happen.

System: n8n · Airtable · WordPress/WooCommerce · Stripe · DocuSign · Gmail · Resend · Slack Prepared by: Tony Ngo, AI Automation Specialist Audience: Business owners evaluating this system, and staff learning to run it day to day, no technical background needed either way
This walkthrough describes a portfolio demonstration system (PST Academy) built to a standard suitable for review in an interview, not a live client deployment. Maria, the applicant followed throughout, is a fictional persona used to teach the lifecycle, not a real customer.

The business case

A single certification seat like this one can run $1,000 to $3,000 or more. If even a handful of inquiries a month go unanswered, or a signed agreement sits waiting for someone to notice it, that's real recurring revenue leaking out of the business every month, not a rounding error.

The upside runs the other way too. Faster response time is one of the best documented levers for closing more leads, and every hour your team isn't manually checking inboxes or updating a spreadsheet by hand is an hour they can spend on the conversations that actually close deals. A system like this doesn't just stop losses, it gives your team more selling time and a faster path from inquiry to paid student.

What follows is the same system explained two ways: this business case, and below it, the full day to day operating manual, written the way your own team would actually run it. If a system like this is what your business needs, reach out at avyxen.com.

01

How this system works

One board, one row per person. Automation handles the bookkeeping; your team handles the judgment calls.

Every prospective student gets exactly one row on the board. The columns are the stages of their journey: Inquiry → Contacted → Registered → Agreement Signed → Access Granted → Attended/CE Issued. The system moves a row forward automatically whenever the person actually does something: inquires, pays, signs, finishes the course. Staff step in only for the parts that genuinely need a human: following up, correcting a mistake, approving a refund. The board tracks the person, not individual orders; a full order history stays in WooCommerce.

Built on WordPress and WooCommerce here, but that's not what makes it valuable. That part is built to be swapped out. The pieces that actually do the work, matching people by email, never double booking a card, moving someone forward only when they really did something, don't care which website or payment platform is feeding them. A different client on a different storefront or a different form tool would mean rebuilding the connections at the very front of the system, not rebuilding the system itself.

Inquiry isn't a required first step. It's simply the earliest event the system knows how to react to. Plenty of real people never fill out that form at all, they call the number on the website, message the team on social media, meet someone from the team at an event, or just decide to buy outright. Any of those paths still lands the person on the board, just starting from whichever stage matches what they actually did (someone who goes straight to purchase lands directly at Registered, see stage 3 below).

"Automation marches forward; humans own exceptions and corrections."

This walkthrough follows one person, Maria, a dentist considering the certification, through every stage below. Watching one real person move through the whole system makes the pattern clear in a way a list of rules on its own doesn't.

Built to hold up: security by default

Security isn't a feature bolted on at the end here, it's how everything was built from the first line. That difference lives in the details your team never has to think about, because they were handled up front:

  • Passwords and access keys are stored somewhere only the system can reach, never in a place a website visitor or hacker could stumble onto.
  • Sensitive files, like customer documents, can't be found by guessing a web address.
  • The forms and systems that feed this board can't be faked by an outside party pretending to be a real customer.
  • New code gets checked for security holes before it ever goes live, not after something goes wrong.

This is built to hold up, and to keep holding up as it's handed to your team and extended over time.

Want the technical proof behind that claim? The real bugs this system caught along the way, and exactly how each one was actually verified, are documented in the companion technical writeup.

02

The full cycle, stage by stage

Six stages, six real triggers. Automation handles the bookkeeping; staff handle the judgment calls.

Fully automated

1. Inquiry

  • What triggers it: someone submits the Course Inquiry form on the website.
  • What's automated: a row appears on the board at Inquiry; the team gets a Slack ping and an email; and the person who inquired is automatically sent a confirmation email so they know it went through. Worth knowing before you call them: they've already heard from the system, so your outreach isn't the first contact they've had.
  • What a human does: nothing yet.
Real world example

Maria fills out the inquiry form asking whether the online course counts for CE. Within seconds her card is on the board at Inquiry, the team sees a Slack alert, and Maria gets an automatic acknowledgement so she isn't left wondering whether the form worked. Nobody had to watch an inbox.

Human step, automated board update

2. Contacted

  • What triggers it: a staff member actually reaches out to the person (a phone call, an email, or the website chat) and logs that attempt in a Contact Log entry: who reached out, which channel, and a short note. Reaching out is still entirely human judgment; only the moving of the card is automated.
  • What's automated: the system checks every minute or so for anyone still sitting at Inquiry who now has at least one logged contact attempt, and moves their card to Contacted automatically. Once someone's moved past Inquiry, they can never trigger this again, so it can't fire twice or drag anyone backward. Slack and an internal email notify the team the card moved. Nothing goes to the customer here, since she already experienced the real contact directly.
  • What a human does: make the actual call, email, or chat, and log it. The board updates itself from there.

Bonus for staff: every person's card also shows a running Contact Notes summary, every logged attempt for that person, oldest to newest, so anyone on the team can see the full contact history at a glance.

Real world example

A staff member emails Maria back, answers her CE question, and logs it as an email contact attempt with a one line note. Within about a minute her card slides to Contacted on its own, no dragging required. The judgment, what to say to Maria, is entirely human; only the bookkeeping got automated.

Fully automated

3. Registered

  • What triggers it: the person places an order (buys a tier).
  • What's automated: the system finds Maria's existing row by email and moves it from Inquiry to Registered, with no duplicate created. If someone orders who never inquired, a fresh row is created directly at Registered. The card's product/tier always updates to match what was actually bought, even if it's different from what she originally asked about (see situation 9 later). Slack and email fire to the team.
  • What a human does: nothing, unless the purchased tier differs from a prior order they already paid for, that price difference is a manual billing step (situation 9).
Real world example

Maria buys the Online Training tier. Her existing card slides to Registered, the same row, no second card. Matching by email is what keeps her from being duplicated.

Fully automated

4. Agreement Signed

  • What triggers it: the person signs electronically the course participation agreement through DocuSign. The system checks every minute or so for newly completed signatures. DocuSign also sends the signer its own confirmation copy automatically, no extra email needed from this system.
  • What's automated: the system matches the signer's email back to their row, stamps the Agreement Signed Date, and advances the card, but it doesn't stop at Agreement Signed. The same automated run continues straight into Access Granted, because access here is unlocked by the signature, not by payment. In practice the card moves from Registered to Access Granted in one step; Agreement Signed is passed through, not parked in. One Slack message and one email fire to the team for the whole move (subject line "Agreement signed"), not one per stage.
  • What a human does: nothing.
  • Where to look for who still owes a signature: the Registered column, not Agreement Signed. A card sitting at Registered is someone who has paid but not yet signed. You won't normally see a card resting in Agreement Signed, and that's correct behaviour, not a fault.

Why this matters: access to the course isn't released the moment someone pays. It's held until a signed agreement is on file. For a hands on certification course like this one, that's a genuine safeguard, not just paperwork.

Real world example

Maria signs the course participation agreement online. Within about a minute her Agreement Signed Date is stamped and her card lands on Access Granted, and the team gets a single "Agreement signed" notification. Her signature date stays on the record permanently as proof she signed, even though the card itself has already moved on.

Automated, cascades from the signature

5. Access Granted

  • What triggers it: immediately once the agreement is marked signed, the same automated step above. Signing an agreement now cascades straight into granting access; a customer doesn't have to wait on a separate check.
  • Fulfillment: the Online Training tier is a downloadable Course Access & Welcome Packet (the two in person tiers are events, nothing to download).
  • How the customer receives it: once access is genuinely granted, the system emails her the Course Access & Welcome Packet directly, as an attachment. Nothing is available for download at checkout, on purpose: handing over the course material before the agreement is signed would defeat the entire point of gating access behind the signature.
  • What's automated on the board: the card advances from Agreement Signed to Access Granted, stamped with the date access was granted. This happens in the same automated run as the signature step above, milliseconds later. The two stages are one continuous move, not two separate events. No additional notification fires here. The single "Agreement signed" Slack message and email described in stage 4 is sent at this point and covers both stage moves; there is deliberately no separate "access granted" alert, because it would be a second message about the same person moments after the first.

Heads up for staff: that automated email only covers the Online Training tier. For the two in person tiers, nothing fires here yet, no email, no packet. Staff need to reach out manually with what an in person student actually needs to know: where to show up, what time, and who to report to. An automated version of this is possible, and would follow the same pattern as the Welcome Packet email above, it just wasn't built for the demo.

Real world example

Maria finishes checkout and sees her order confirmation, but no course material yet, nothing to download. A few minutes later she signs her agreement, and her Welcome Packet arrives by email automatically the same moment her card moves to Access Granted.

Staff triggered, then automated

6. Attended / CE Issued

  • What triggers it: a staff member marks the person Attended with a completion date on their board record. This is a deliberate human step: attendance and passing an assessment isn't something a website can confirm on its own. The system checks for this roughly every five minutes, deliberately slower than the near instant checks used elsewhere, because a certificate issued by accident for a course this expensive isn't a cheap mistake to undo. That gap trades a little speed for a real window to catch and fix a mistake before it's processed.
  • Artifact: a landscape Certificate of Completion PDF with the recipient's name, course, correct CE credit hours for their tier, completion date, a unique certificate ID, signature lines, and a CE seal, generated per student, not a static file.
  • What's automated: the certificate is generated, emailed directly to the student, the card advances to Attended/CE Issued (the finish line), and Slack plus email notify the team. Two safeguards protect this stage: one stops the same person from ever being certified twice, even if marked Attended more than once; the other blocks issuance entirely if the attendance date doesn't make chronological sense (see situation 11 later).
  • What a human does: confirm attendance or passing, and mark it on the record. Everything after that is automatic.

Heads up for staff: nothing currently reminds anyone to check for this. Staff need to glance at the Access Granted column themselves to see who's ready. A reminder that flags anyone sitting there too long could be added on top of this system later, it just wasn't built for the demo.

Real world example

Maria finishes the seven modules and passes the assessment. A staff member marks her Attended, and within about a minute her personalized CE certificate lands in her inbox and her card moves to Attended/CE Issued.

How to prove a certificate was actually provided

Four independent records that can be checked against each other exist for every certificate issued, not just one field:

  1. The certificate file itself. Every certificate is a permanently archived file (never deleted, named with the student and date), convertible back to a PDF at any time, the actual document, not just a record that one was made.
  2. The issued date field on the board record: the timestamp.
  3. Who confirmed it, and when: which staff member marked attendance, and exactly what time.
  4. The delivery email itself, sitting in the outbound mailbox's sent folder with the PDF attached: proof it actually reached the student, not just that it was generated.

If any one field on a record ever looks inconsistent, say, someone unchecked Attended by accident on a record that was already certified, the other three sources still independently confirm what happened. A single accidental click can't erase the paper trail.

Resending a certificate

Because the certificate file itself is always kept, staff can resend it at any time: check Resend Certificate on the student's record, and the system finds the original file and emails it again, no new certificate generated and no lifecycle field touched. The only thing that changes on the record is the Resend Certificate box itself, which the system unticks automatically once the email has gone, so it's ready for next time. If Resend Certificate gets checked by mistake on someone who was never actually certified, the system doesn't guess or send anything to them, it alerts the team instead so whoever checked it can find out why.

Payment

Checkout runs on Stripe, in test mode, no actual charges. Registered reflects an actual test payment, not a placeholder, riding the same automation from order to Registered already described above. Stripe never needed its own automated step: it's a WooCommerce payment plugin, so a paid order looks the same to the board no matter which gateway processed the card.

The system's own bookkeeping

Behind the scenes, a small internal table keeps track of which automated actions have already run, so a webhook or check that accidentally fires twice can't send a duplicate email, issue a duplicate certificate, or advance a card twice. Staff never open it and never need to; it holds a single field: a one line marker for each action already taken. There are no names, no courses, no order totals, no message content and no notes.

One thing to be aware of, though: to keep those markers unique per person, many of them have the customer's email address built into the marker text (for example, agreement-signed-claim-maria@example.com). So while this table holds no customer record, it does contain email addresses. That matters practically in two ways: it's in scope for a data deletion request, and access to it should be treated like access to any other table holding personal data, not as a purely technical scratch pad.

If something breaks

If part of this stops working, the system says so. That notice goes to whoever supports the system, not to your team's channels, since "a connection failed" isn't something staff can do anything with.

The part to know: silence isn't proof that everything is fine. If you're waiting on something that never arrived, a card that never moved, an agreement that never went out, tell whoever supports the system instead of assuming it's on its way. They can see every run the system has made and exactly what went wrong.

03

Situations staff will actually see

Eleven real situations, worth knowing before they come up, not after.

  1. A returning inquirer buys. The same row updates, it isn't duplicated (Inquiry to Registered on one card).
  2. A cold order (never inquired first). A fresh row appears directly at Registered.
  3. Source vs. Stage, the biggest source of confusion. Source is how they first arrived and never changes ("Website inquiry" stays even after they buy). Stage is where they are right now, and only ever moves forward.
  4. A refund, hold, or withdrawal is always a manual staff change. Automation only ever moves someone forward; exceptions are human decisions.
  5. Someone who's already moved further orders again (say, they're already at Agreement Signed). The system won't knock them backward; a notification fires so a human can look into it.
  6. Staff advance someone by mistake. The system still protects that stage from going backward; a human corrects it, and the notification that already fired prompts them to look. Automation never undoes a human's forward move.
  7. A customer accidentally reorders (a duplicate order). No duplicate row gets created and the stage stays protected; a notification lets a human catch and refund the double. The board tracks the person, not the order.
  8. A returning inquirer inquires again (a follow up question, or an accidental resubmit). Same protection as situation 5, just from the inquiry side. A brand new person gets a fresh card at Inquiry. Someone who already inquired but hasn't moved further gets their same card refreshed with the new message, no duplicate. Someone who's already moved past Inquiry still gets their message logged, but their stage is never pushed backward. Every resubmission also sends the team a fresh Slack ping and email with whatever she wrote this time, not just on the very first one. Maria emails a follow up question after she's already registered: her card picks up the new note but stays at Registered, not knocked back to Inquiry, and staff still get notified of her new message.
  9. A customer buys a different tier than they originally asked about. The card's tier always updates to reflect what they actually bought, automatically, every time, never a stale snapshot of their first question. But if she'd already paid for a cheaper tier and later decided to upgrade, crediting that earlier payment toward the new total is a manual staff step in your payment processor; the system has no billing logic and won't calculate or apply any credit on its own. Maria asks about Online Training, then decides to upgrade before ever paying: her card just shows the tier she actually bought, automatically. Had she already paid and then decided to upgrade, a staff member would need to manually credit that payment toward the pricier tier, same as any refund or adjustment.
  10. Staff accidentally uncheck "Attended" on a record that's already been certified. Nothing happens, on purpose. Once a certificate has been issued, that record permanently falls outside what the system looks for next, so toggling that box afterward can't trigger a resend, an unsend, or any error. The three other independent records of the certificate, described in the previous section, still exist regardless; a single accidental click can't make a certificate unhappen.
  11. Staff enter a completion date that doesn't make chronological sense (before the agreement was even signed, or a date in the future). The certificate is not issued. The system catches this automatically, alerts staff once by Slack and email so it doesn't get missed, and stops there. Fixing the date is all it takes; the next check picks it up normally. This exists because a CE accredited certificate with an impossible date is a real audit risk, not a cosmetic typo.
04

Two board mechanics to know

Two small things worth teaching once, so nobody's confused the first time they see them.

The "Uncategorized" column is a triage signal

Almost always this column stays empty, and a card sitting there means a human or an import added a record without a stage. Drag it to where it belongs.

One normal exception: when a new order arrives from someone who has never been on the board before, the system creates their row first and stamps their stage a moment later. For those few seconds the brand new card legitimately appears here. If you refresh and it's gone, nothing was wrong. Treat a card as needing attention only if it's still sitting in Uncategorized after a minute or so.

"+ Add contact" is for manual entry

For people who didn't come through the website (a phone lead, a referral, a walk in, an offline registration), click "+ Add contact" in the right column and fill in the details. They drop onto the board at that stage. The board captures everyone, not just the automated entries.

05

Closing

Built to be handed off, not just handed over

The point of this walkthrough isn't just to explain what the system does, it's so your team can run it day to day without needing to call anyone for the routine cases, and know exactly when something genuinely needs a human decision instead of a card drag.

Everything above comes back to one line: automation marches forward, humans own exceptions and corrections. If a card ever looks wrong, that's the first question worth asking: is this a real exception someone needs to handle, or did the system just do exactly what it was built to do.