Organization record
JBDI Holdings Limited
All evidence-backed facts for this organization, identity resolved across official registers.
Facts on record
Newest first; every row links to its evidence page.
| Fact | Value | Period | Source |
|---|---|---|---|
| accounts_receivable | {"amount": 1978000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2026-05-31 | sec_edgar |
| accounts_receivable | {"amount": 1624000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2025-05-31 | sec_edgar |
| accounts_receivable | {"amount": 1686000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2024-05-31 | sec_edgar |
| accounts_receivable | {"amount": 2304000, "concept": "us-gaap:AccountsReceivableNetCurrent", "currency": "USD"} | 2023-05-31 | sec_edgar |
| capex | {"amount": 95000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curren | 2026-05-31 | sec_edgar |
| capex | {"amount": 32000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curren | 2025-05-31 | sec_edgar |
| capex | {"amount": 81000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curren | 2024-05-31 | sec_edgar |
| capex | {"amount": 46000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curren | 2023-05-31 | sec_edgar |
| capex | {"amount": 926000, "concept": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment", "curre | 2022-05-31 | sec_edgar |
| cash_and_equivalents | {"amount": 1964000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency" | 2026-05-31 | sec_edgar |
| cash_and_equivalents | {"amount": 2727000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency" | 2025-05-31 | sec_edgar |
| cash_and_equivalents | {"amount": 190000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency": | 2024-05-31 | sec_edgar |
| cash_and_equivalents | {"amount": 457000, "concept": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "currency": | 2023-05-31 | sec_edgar |
| cashflow_financing | {"amount": -466000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "curr | 2026-05-31 | sec_edgar |
| cashflow_financing | {"amount": 5728000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "curr | 2025-05-31 | sec_edgar |
| cashflow_financing | {"amount": -1081000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "cur | 2024-05-31 | sec_edgar |
| cashflow_financing | {"amount": -1969000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "cur | 2023-05-31 | sec_edgar |
| cashflow_financing | {"amount": -2453000, "concept": "us-gaap:NetCashProvidedByUsedInFinancingActivities", "cur | 2022-05-31 | sec_edgar |
| cashflow_investing | {"amount": 92000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curren | 2026-05-31 | sec_edgar |
| cashflow_investing | {"amount": -4000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curren | 2025-05-31 | sec_edgar |
| cashflow_investing | {"amount": -38000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curre | 2024-05-31 | sec_edgar |
| cashflow_investing | {"amount": -46000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curre | 2023-05-31 | sec_edgar |
| cashflow_investing | {"amount": -926000, "concept": "us-gaap:NetCashProvidedByUsedInInvestingActivities", "curr | 2022-05-31 | sec_edgar |
| cashflow_operating | {"amount": -367000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2026-05-31 | sec_edgar |
| cashflow_operating | {"amount": -3367000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "cur | 2025-05-31 | sec_edgar |
| cashflow_operating | {"amount": 1000000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2024-05-31 | sec_edgar |
| cashflow_operating | {"amount": 1657000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2023-05-31 | sec_edgar |
| cashflow_operating | {"amount": 2987000, "concept": "us-gaap:NetCashProvidedByUsedInOperatingActivities", "curr | 2022-05-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 9893750, "concept": "us-gaap:CommonStockSharesIssued"} | 2026-05-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 19787500, "concept": "us-gaap:CommonStockSharesIssued"} | 2025-05-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 18037500, "concept": "us-gaap:CommonStockSharesIssued"} | 2024-05-31 | sec_edgar |
| common_shares_issued | {"unit": "shares", "value": 18037500, "concept": "us-gaap:CommonStockSharesIssued"} | 2023-05-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 9514532, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2026-05-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 9627236, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2025-05-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 18037500, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2024-05-31 | sec_edgar |
| common_shares_outstanding | {"unit": "shares", "value": 18037500, "concept": "us-gaap:CommonStockSharesOutstanding"} | 2023-05-31 | sec_edgar |
| cost_of_revenue | {"amount": 4267000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2026-05-31 | sec_edgar |
| cost_of_revenue | {"amount": 5089000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2025-05-31 | sec_edgar |
| cost_of_revenue | {"amount": 5119000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2024-05-31 | sec_edgar |
| cost_of_revenue | {"amount": 3524000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2023-05-31 | sec_edgar |
| cost_of_revenue | {"amount": 3351000, "concept": "us-gaap:CostOfRevenue", "currency": "USD"} | 2022-05-31 | sec_edgar |
| current_assets | {"amount": 4825000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2026-05-31 | sec_edgar |
| current_assets | {"amount": 4751000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2025-05-31 | sec_edgar |
| current_assets | {"amount": 2478000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2024-05-31 | sec_edgar |
| current_assets | {"amount": 3282000, "concept": "us-gaap:AssetsCurrent", "currency": "USD"} | 2023-05-31 | sec_edgar |
| current_liabilities | {"amount": 1429000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2026-05-31 | sec_edgar |
| current_liabilities | {"amount": 1494000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2025-05-31 | sec_edgar |
| current_liabilities | {"amount": 3007000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2024-05-31 | sec_edgar |
| current_liabilities | {"amount": 3123000, "concept": "us-gaap:LiabilitiesCurrent", "currency": "USD"} | 2023-05-31 | sec_edgar |
| dei:EntityCommonStockSharesOutstanding | {"unit": "shares", "value": 19029064} | 2026-05-31 | sec_edgar |
| dei:EntityCommonStockSharesOutstanding | {"unit": "shares", "value": 19254471} | 2025-05-31 | sec_edgar |
| dei:EntityCommonStockSharesOutstanding | {"unit": "shares", "value": 18037500} | 2024-05-31 | sec_edgar |
| dei:EntityListingParValuePerShare | {"per": "shares", "amount": 0.0005, "currency": "USD"} | 2026-05-31 | sec_edgar |
| dei:EntityListingParValuePerShare | {"per": "shares", "amount": 0.0005, "currency": "USD"} | 2025-05-31 | sec_edgar |
| dei:EntityListingParValuePerShare | {"per": "shares", "amount": 0.0005, "currency": "USD"} | 2024-05-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.01, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2026-05-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": -0.28, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2025-05-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": -0.11, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2024-05-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.04, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2023-05-31 | sec_edgar |
| eps_basic | {"per": "shares", "amount": 0.24, "concept": "us-gaap:EarningsPerShareBasic", "currency": | 2022-05-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.01, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2026-05-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": -0.28, "concept": "us-gaap:EarningsPerShareDiluted", "currency | 2025-05-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": -0.11, "concept": "us-gaap:EarningsPerShareDiluted", "currency | 2024-05-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.04, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2023-05-31 | sec_edgar |
| eps_diluted | {"per": "shares", "amount": 0.24, "concept": "us-gaap:EarningsPerShareDiluted", "currency" | 2022-05-31 | sec_edgar |
| gross_profit | {"amount": 4256000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2026-05-31 | sec_edgar |
| gross_profit | {"amount": 3356000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2025-05-31 | sec_edgar |
| gross_profit | {"amount": 4275000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2024-05-31 | sec_edgar |
| gross_profit | {"amount": 7598000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2023-05-31 | sec_edgar |
| gross_profit | {"amount": 8543000, "concept": "us-gaap:GrossProfit", "currency": "USD"} | 2022-05-31 | sec_edgar |
| income_tax_expense | {"amount": 90000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2026-05-31 | sec_edgar |
| income_tax_expense | {"amount": 1000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2025-05-31 | sec_edgar |
| income_tax_expense | {"amount": -125000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2024-05-31 | sec_edgar |
| income_tax_expense | {"amount": 281000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2023-05-31 | sec_edgar |
| income_tax_expense | {"amount": 417000, "concept": "us-gaap:IncomeTaxExpenseBenefit", "currency": "USD"} | 2022-05-31 | sec_edgar |
| industry_sic | {"code": "3412", "scheme": "SIC", "description": "Metal Shipping Barrels, Drums, Kegs & Pa | sec_edgar | |
| interest_expense | {"amount": 24000, "concept": "us-gaap:InterestExpenseNonoperating", "currency": "USD"} | 2026-05-31 | sec_edgar |
| interest_expense | {"amount": 34000, "concept": "us-gaap:InterestExpenseNonoperating", "currency": "USD"} | 2025-05-31 | sec_edgar |
| interest_expense | {"amount": 41000, "concept": "us-gaap:InterestExpenseNonoperating", "currency": "USD"} | 2024-05-31 | sec_edgar |
| interest_expense | {"amount": 47000, "concept": "us-gaap:InterestExpenseNonoperating", "currency": "USD"} | 2023-05-31 | sec_edgar |
| interest_expense | {"amount": 55000, "concept": "us-gaap:InterestExpenseNonoperating", "currency": "USD"} | 2022-05-31 | sec_edgar |
| inventory | {"amount": 246000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2026-05-31 | sec_edgar |
| inventory | {"amount": 268000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2025-05-31 | sec_edgar |
| inventory | {"amount": 291000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2024-05-31 | sec_edgar |
| inventory | {"amount": 334000, "concept": "us-gaap:InventoryNet", "currency": "USD"} | 2023-05-31 | sec_edgar |
| long_term_debt | {"amount": 236000, "concept": "us-gaap:LongTermDebt", "currency": "USD"} | 2025-05-31 | sec_edgar |
| long_term_debt | {"amount": 606000, "concept": "us-gaap:LongTermDebt", "currency": "USD"} | 2024-05-31 | sec_edgar |
| long_term_debt | {"amount": 979000, "concept": "us-gaap:LongTermDebt", "currency": "USD"} | 2023-05-31 | sec_edgar |
| long_term_debt_current | {"amount": 236000, "concept": "us-gaap:LongTermDebtCurrent", "currency": "USD"} | 2025-05-31 | sec_edgar |
| long_term_debt_current | {"amount": 606000, "concept": "us-gaap:LongTermDebtCurrent", "currency": "USD"} | 2024-05-31 | sec_edgar |
| net_income | {"amount": 120000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2026-05-31 | sec_edgar |
| net_income | {"amount": -2720000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2025-05-31 | sec_edgar |
| net_income | {"amount": -977000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2024-05-31 | sec_edgar |
| net_income | {"amount": 806000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2023-05-31 | sec_edgar |
| net_income | {"amount": 2233000, "concept": "us-gaap:NetIncomeLoss", "currency": "USD"} | 2022-05-31 | sec_edgar |
| noncurrent_assets | {"amount": 1465000, "concept": "us-gaap:AssetsNoncurrent", "currency": "USD"} | 2026-05-31 | sec_edgar |
| noncurrent_assets | {"amount": 1744000, "concept": "us-gaap:AssetsNoncurrent", "currency": "USD"} | 2025-05-31 | sec_edgar |
| noncurrent_assets | {"amount": 1977000, "concept": "us-gaap:AssetsNoncurrent", "currency": "USD"} | 2024-05-31 | sec_edgar |
| noncurrent_assets | {"amount": 3055000, "concept": "us-gaap:AssetsNoncurrent", "currency": "USD"} | 2023-05-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 1019000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2026-05-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 1041000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2025-05-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 1064000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2024-05-31 | sec_edgar |
| noncurrent_liabilities | {"amount": 1710000, "concept": "us-gaap:LiabilitiesNoncurrent", "currency": "USD"} | 2023-05-31 | sec_edgar |
| operating_income | {"amount": -167000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2026-05-31 | sec_edgar |
| operating_income | {"amount": -2920000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2025-05-31 | sec_edgar |
| operating_income | {"amount": -1246000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2024-05-31 | sec_edgar |
| operating_income | {"amount": 867000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2023-05-31 | sec_edgar |
| operating_income | {"amount": 2617000, "concept": "us-gaap:OperatingIncomeLoss", "currency": "USD"} | 2022-05-31 | sec_edgar |
| operating_lease_liability | {"amount": 1082000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2026-05-31 | sec_edgar |
| operating_lease_liability | {"amount": 1114000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2025-05-31 | sec_edgar |
| operating_lease_liability | {"amount": 1175000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2024-05-31 | sec_edgar |
| operating_lease_liability | {"amount": 1158000, "concept": "us-gaap:OperatingLeaseLiability", "currency": "USD"} | 2023-05-31 | sec_edgar |
| ppe_net | {"amount": 449000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2026-05-31 | sec_edgar |
| ppe_net | {"amount": 703000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2025-05-31 | sec_edgar |
| ppe_net | {"amount": 921000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2024-05-31 | sec_edgar |
| ppe_net | {"amount": 3055000, "concept": "us-gaap:PropertyPlantAndEquipmentNet", "currency": "USD"} | 2023-05-31 | sec_edgar |
| pretax_income | {"amount": 210000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxes | 2026-05-31 | sec_edgar |
| pretax_income | {"amount": -2719000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTax | 2025-05-31 | sec_edgar |
| pretax_income | {"amount": -1102000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTax | 2024-05-31 | sec_edgar |
| pretax_income | {"amount": 1087000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxe | 2023-05-31 | sec_edgar |
| pretax_income | {"amount": 2650000, "concept": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxe | 2022-05-31 | sec_edgar |
| retained_earnings | {"amount": -3507000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": | 2026-05-31 | sec_edgar |
| retained_earnings | {"amount": -3627000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": | 2025-05-31 | sec_edgar |
| retained_earnings | {"amount": -907000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": " | 2024-05-31 | sec_edgar |
| retained_earnings | {"amount": 70000, "concept": "us-gaap:RetainedEarningsAccumulatedDeficit", "currency": "US | 2023-05-31 | sec_edgar |
| revenue | {"amount": 8523000, "concept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTa | 2026-05-31 | sec_edgar |
| revenue | {"amount": 8445000, "concept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTa | 2025-05-31 | sec_edgar |
| revenue | {"amount": 9394000, "concept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTa | 2024-05-31 | sec_edgar |
| revenue | {"amount": 11122000, "concept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedT | 2023-05-31 | sec_edgar |
| revenue | {"amount": 11894000, "concept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedT | 2022-05-31 | sec_edgar |
| sga_expense | {"amount": 4230000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2026-05-31 | sec_edgar |
| sga_expense | {"amount": 6136000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2025-05-31 | sec_edgar |
| sga_expense | {"amount": 5388000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2024-05-31 | sec_edgar |
| sga_expense | {"amount": 6604000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2023-05-31 | sec_edgar |
| sga_expense | {"amount": 5699000, "concept": "us-gaap:GeneralAndAdministrativeExpense", "currency": "USD | 2022-05-31 | sec_edgar |
| share_repurchase | {"amount": 227000, "concept": "us-gaap:PaymentsForRepurchaseOfCommonStock", "currency": "U | 2026-05-31 | sec_edgar |
| share_repurchase | {"amount": 571000, "concept": "us-gaap:PaymentsForRepurchaseOfCommonStock", "currency": "U | 2025-05-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 9515000, "concept": "us-gaap:WeightedAverageNumberOfSharesOuts | 2026-05-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 9627000, "concept": "us-gaap:WeightedAverageNumberOfSharesOuts | 2025-05-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 9019000, "concept": "us-gaap:WeightedAverageNumberOfSharesOuts | 2024-05-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 18038000, "concept": "us-gaap:WeightedAverageNumberOfSharesOut | 2023-05-31 | sec_edgar |
| shares_wavg_basic | {"unit": "shares", "value": 9375000, "concept": "us-gaap:WeightedAverageNumberOfSharesOuts | 2022-05-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 9515000, "concept": "us-gaap:WeightedAverageNumberOfDilutedSha | 2026-05-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 9627000, "concept": "us-gaap:WeightedAverageNumberOfDilutedSha | 2025-05-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 9019000, "concept": "us-gaap:WeightedAverageNumberOfDilutedSha | 2024-05-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 18038000, "concept": "us-gaap:WeightedAverageNumberOfDilutedSh | 2023-05-31 | sec_edgar |
| shares_wavg_diluted | {"unit": "shares", "value": 9375000, "concept": "us-gaap:WeightedAverageNumberOfDilutedSha | 2022-05-31 | sec_edgar |
| stockholders_equity | {"amount": 3842000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2026-05-31 | sec_edgar |
| stockholders_equity | {"amount": 3960000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2025-05-31 | sec_edgar |
| stockholders_equity | {"amount": 384000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2024-05-31 | sec_edgar |
| stockholders_equity | {"amount": 1504000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2023-05-31 | sec_edgar |
| stockholders_equity | {"amount": 1705000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2022-05-31 | sec_edgar |
| stockholders_equity | {"amount": 2275000, "concept": "us-gaap:StockholdersEquity", "currency": "USD"} | 2021-05-31 | sec_edgar |
| total_assets | {"amount": 6290000, "concept": "us-gaap:Assets", "currency": "USD"} | 2026-05-31 | sec_edgar |
| total_assets | {"amount": 6495000, "concept": "us-gaap:Assets", "currency": "USD"} | 2025-05-31 | sec_edgar |
| total_assets | {"amount": 4455000, "concept": "us-gaap:Assets", "currency": "USD"} | 2024-05-31 | sec_edgar |
| total_assets | {"amount": 6337000, "concept": "us-gaap:Assets", "currency": "USD"} | 2023-05-31 | sec_edgar |
| total_liabilities | {"amount": 2448000, "concept": "us-gaap:Liabilities", "currency": "USD"} | 2026-05-31 | sec_edgar |
| total_liabilities | {"amount": 2535000, "concept": "us-gaap:Liabilities", "currency": "USD"} | 2025-05-31 | sec_edgar |
| total_liabilities | {"amount": 4071000, "concept": "us-gaap:Liabilities", "currency": "USD"} | 2024-05-31 | sec_edgar |
| total_liabilities | {"amount": 4833000, "concept": "us-gaap:Liabilities", "currency": "USD"} | 2023-05-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 6290000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "US | 2026-05-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 6495000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "US | 2025-05-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 4455000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "US | 2024-05-31 | sec_edgar |
| total_liabilities_and_equity | {"amount": 6337000, "concept": "us-gaap:LiabilitiesAndStockholdersEquity", "currency": "US | 2023-05-31 | sec_edgar |
| xbrl:AccountsAndOtherReceivablesNetCurrent | {"amount": 1686000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AccountsAndOtherReceivablesNetCurrent | {"amount": 2304000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AccountsPayableAndAccruedLiabilitiesCurrent | {"amount": 1257000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AccountsPayableAndAccruedLiabilitiesCurrent | {"amount": 1173000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AccountsPayableAndAccruedLiabilitiesCurrent | {"amount": 965000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AccountsPayableAndAccruedLiabilitiesCurrent | {"amount": 806000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AccountsReceivableGross | {"amount": 2130000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AccountsReceivableGross | {"amount": 1941000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AccountsReceivableGross | {"amount": 2003000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AccountsReceivableGross | {"amount": 2414000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 1978000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 1624000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 1686000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AccountsReceivableNetCurrent | {"amount": 2304000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 3264000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 3261000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 3997000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment | {"amount": 4089000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AccumulatedOtherComprehensiveIncomeLossNetOfTax | {"amount": -60000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AccumulatedOtherComprehensiveIncomeLossNetOfTax | {"amount": -54000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AccumulatedOtherComprehensiveIncomeLossNetOfTax | {"amount": -223000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AccumulatedOtherComprehensiveIncomeLossNetOfTax | {"amount": -80000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AdditionalPaidInCapital | {"amount": 8200000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AdditionalPaidInCapital | {"amount": 8200000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AdditionalPaidInCapital | {"amount": 1503000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AdditionalPaidInCapital | {"amount": 1503000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AdvertisingExpense | {"amount": 4000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AdvertisingExpense | {"amount": 4000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AdvertisingExpense | {"amount": 4000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AdvertisingExpense | {"amount": 3000, "currency": "USD"} | 2023-05-31 | sec_edgar |
| xbrl:AdvertisingExpense | {"amount": 3000, "currency": "USD"} | 2022-05-31 | sec_edgar |
| xbrl:AllowanceForDoubtfulAccountsReceivable | {"amount": 152000, "currency": "USD"} | 2026-05-31 | sec_edgar |
| xbrl:AllowanceForDoubtfulAccountsReceivable | {"amount": 317000, "currency": "USD"} | 2025-05-31 | sec_edgar |
| xbrl:AllowanceForDoubtfulAccountsReceivable | {"amount": 317000, "currency": "USD"} | 2024-05-31 | sec_edgar |
| xbrl:AllowanceForDoubtfulAccountsReceivable | {"amount": 110000, "currency": "USD"} | 2023-05-31 | sec_edgar |