Feoda Documentation Project — Project Instructions¶
Version: 1.0
Last Updated: 2026-02-18
Owner: Head of Technology
Status: Active
Table of Contents¶
- Purpose & Vision
- Folder Structure
- Naming Conventions
- Writing Style Guide
- Markdown Conventions
- Frontmatter Metadata Standard
- Template Usage Policy
- Client Documentation Rules
- Change Governance & Consistency Protocol
- Contribution Workflow
- Review & Ownership Model
- Versioning & History
- Future Considerations
1. Purpose & Vision¶
This repository is Feoda's single source of truth — the central, authoritative documentation for everything related to the company, its solutions, client implementations, technical architecture, processes, and policies.
Core Principle: Nothing Gets Lost¶
⚠️ No piece of information provided by a stakeholder — no matter how small — may be ignored or discarded. Every fact, detail, clarification, preference, or instruction shared by a team member must be captured somewhere in this documentation. If the information does not have an obvious home in the current structure, flag it and discuss where it belongs — but never silently drop it. This applies to all contributors, human and AI alike.
Goals¶
- Onboarding: Any new joiner can read this documentation and understand what Feoda does, how its solutions work, and how the company operates.
- Consistency: One place for all knowledge — no more scattered SharePoint documents, tribal knowledge, or undocumented processes.
- Traceability: Every decision, process, and customization is documented with history tracked via Git.
- AI-Readiness: The documentation is structured with consistent metadata and taxonomy so it can serve as a knowledge base for AI-assisted querying and retrieval in the future.
- Accessibility: The documentation will eventually be published as an internal website accessible to all employees via a browser.
- Completeness: Every piece of information provided is captured. Nothing is too small to document.
Scope¶
This documentation covers:
- Company-level: About Feoda, glossary, onboarding guides, business processes, company policies
- Solutions: ERP, ARM, EPM — features, processes, NetSuite bundle details
- Client implementations: Per-client requirements, design, customizations, testing, deployment, support
- Technical: Architecture, development guides, NetSuite specifics, frontend layer, infrastructure, runbooks, architecture decision records
- Meetings: Extracted knowledge from team meetings and discussions
2. Folder Structure¶
Documentation/
├── PROJECT_INSTRUCTIONS.md ← This file — master governance
├── README.md ← Repo landing page, navigation guide
├── CHANGELOG.md ← History of major documentation updates
│
├── doc-templates/ ← Reusable templates for all document types
│
├── company/ ← Company-wide, non-solution-specific docs
│ ├── about-feoda.md
│ ├── glossary.md
│ ├── onboarding/
│ ├── processes/
│ └── policies/
│
├── solutions/ ← One folder per Feoda product line
│ ├── erp/
│ ├── arm/
│ └── epm/
│
├── clients/ ← Per-client implementation documentation
│ ├── _template/ ← Skeleton to copy for new clients
│ └── [client-name]/ ← One folder per client
│
├── tech/ ← Technical documentation
│ ├── architecture/
│ ├── development/
│ ├── netsuite/
│ ├── frontend/
│ ├── infrastructure/
│ ├── runbooks/
│ └── decisions/
│
└── meetings/ ← Meeting extractions & knowledge capture
Rules¶
- Do not create folders outside this structure without updating this document first.
- Every folder must contain a
README.mdthat explains the purpose of that folder and what belongs in it. - Nesting depth: Maximum 4 levels deep from
Documentation/. If you need more, reconsider the structure. - No orphan files: Every file must live in the appropriate folder as defined above.
3. Naming Conventions¶
Files¶
| Rule | Example |
|---|---|
| Use kebab-case (lowercase, hyphens) | solution-design.md, go-live-checklist.md |
| Date-prefixed for chronological content | 2026-02-18-arm-process-review.md |
Use .md extension for all documentation |
— |
No spaces, no underscores (except _template) |
— |
| Be descriptive but concise | business-requirements.md not br.md |
Folders¶
| Rule | Example |
|---|---|
| Use kebab-case | fixed-assets/, payment-plans/ |
| Client folders use the client's codename or short name | green-valley-school/ |
| Prefix template/skeleton folders with underscore | _template/ |
Dates¶
- Always use ISO 8601:
YYYY-MM-DD(e.g.,2026-02-18) - In filenames:
2026-02-18-topic-name.md - In frontmatter:
last-updated: 2026-02-18
4. Writing Style Guide¶
Audience Awareness¶
Every document has an intended audience. Tag it in the frontmatter and write accordingly:
| Audience Tag | Write For |
|---|---|
all |
Anyone in the company — use plain, non-technical language |
technical |
Developers, architects — technical detail is expected |
functional |
Business analysts, project managers — process-focused |
leadership |
Executives — high-level, outcome-focused |
client-facing |
Support staff, client interactions — clear, professional |
Style Rules¶
- Write in plain English. Avoid jargon unless it's in the glossary.
- Be concise. Say what needs to be said, nothing more.
- Use active voice. "The system generates invoices" not "Invoices are generated by the system."
- Use consistent terminology. Always refer to terms as defined in
company/glossary.md. Do not invent synonyms. - Define acronyms on first use. "Accounts Receivable Management (ARM)" — then use "ARM" thereafter.
- Use numbered steps for procedures. Use bullet points for lists of items.
- Include context. Don't assume the reader knows what you know. Link to related documents.
- Keep paragraphs short. 3-5 sentences maximum.
- Use examples. When explaining a concept or process, include a concrete example.
- Date your knowledge. If something is likely to change, note when it was last verified.
Language¶
- Primary language: English
- Arabic translations may be added later as a parallel structure, not inline.
5. Markdown Conventions¶
Heading Hierarchy¶
# Document Title (H1) — only ONE per document, matches the document's purpose
## Major Section (H2)
### Subsection (H3)
#### Detail (H4) — use sparingly
- Never skip heading levels (e.g., don't go from H2 to H4).
- H1 is reserved for the document title only.
Links¶
- Internal links: Use relative paths from the current file.
- External links: Use full URLs with descriptive text.
Code Blocks¶
- Use fenced code blocks with language identifiers:
Tables¶
- Use Markdown tables for structured data.
- Include a header row.
- Align columns for readability in source.
Images¶
- Store images in an
assets/subfolder within the relevant section. - Use descriptive alt text:

Callouts¶
Use blockquotes with emoji prefixes for callouts:
> ⚠️ **Warning**: This process requires admin access to NetSuite.
> ℹ️ **Note**: This feature is available in ARM v2.3+.
> ✅ **Best Practice**: Always test in sandbox before production.
6. Frontmatter Metadata Standard¶
Every document must begin with a YAML frontmatter block. This enables future site generation, search indexing, and AI retrieval.
---
title: "Document Title"
description: "One-line summary of what this document covers"
author: "Name or team"
created: YYYY-MM-DD
last-updated: YYYY-MM-DD
status: draft | in-review | approved | deprecated
audience: all | technical | functional | leadership | client-facing
tags:
- tag1
- tag2
owner: "Name or role responsible for keeping this document current"
related-documents:
- path/to/related-doc-1.md
- path/to/related-doc-2.md
---
Required Fields¶
| Field | Required | Description |
|---|---|---|
title |
✅ | Document title |
description |
✅ | One-line summary |
author |
✅ | Who wrote it |
created |
✅ | Creation date |
last-updated |
✅ | Last modification date |
status |
✅ | Current status |
audience |
✅ | Target reader |
tags |
✅ | Searchable tags |
owner |
✅ | Who maintains it |
related-documents |
✅ | List of related documents (paths relative to repo root) |
Status Lifecycle¶
Tags Taxonomy¶
Use consistent tags from this controlled vocabulary (expand as needed):
- Solutions:
erp,arm,epm - Functional areas:
accounting,billing,payroll,budgeting,procurement,hr,reporting,fixed-assets,payment-plans - Technical:
suitescript,netsuite,integration,api,frontend,infrastructure - Document types:
process,architecture,runbook,decision-record,requirements,design,customization - Client-related:
client-implementation,client-[name]
7. Template Usage Policy¶
Rule: Always Start from a Template¶
Every new document must be created from one of the templates in doc-templates/. Do not create documents from scratch.
Available Templates¶
| Template | Use For |
|---|---|
solution-overview.md |
Documenting a Feoda solution (ERP, ARM, EPM) |
process-document.md |
Business or operational process documentation |
meeting-extraction.md |
Extracting knowledge from meeting recordings/transcripts |
technical-spec.md |
Technical architecture, design documents |
runbook.md |
Operational procedures, how-to guides |
decision-record.md |
Architecture Decision Records (ADRs) |
client-implementation.md |
Client project documentation (overview, requirements, design) |
Process¶
- Copy the appropriate template.
- Fill in all frontmatter fields.
- Replace placeholder content with actual content.
- Remove any sections that don't apply (but add a note why if it's a major section).
- Fill in the
related-documentsfield linking to all related documents. - Submit for review per the contribution workflow.
Creating New Templates¶
If none of the existing templates fit, propose a new one:
- Create the template in
doc-templates/following the same conventions. - Add it to the table above in this document.
- Submit for review and approval.
8. Client Documentation Rules¶
When to Create a Client Folder¶
Create a new folder under clients/ when:
- A new client project begins (at the requirements stage or earlier).
- An existing client engagement needs documentation that doesn't exist yet.
How to Create a Client Folder¶
- Copy
clients/_template/toclients/[client-name]/. - Use kebab-case for the client folder name (e.g.,
green-valley-school/). - Fill in
overview.mdwith the client profile, contract scope, and timeline. - Populate sections as the project progresses — not everything needs to be filled in immediately.
Mandatory vs. Optional Sections¶
| Section | When Required |
|---|---|
overview.md |
Always — created when the folder is created |
requirements/business-requirements.md |
Before design begins |
requirements/technical-requirements.md |
Before development begins |
design/solution-design.md |
Before development begins |
design/integrations.md |
If the client has third-party integrations |
design/data-migration.md |
If data migration is in scope |
customizations/* |
If any customizations are made |
testing/test-cases.md |
Before UAT begins |
deployment/go-live-checklist.md |
Before go-live |
support/known-issues.md |
After go-live |
Confidentiality¶
- Never include: Passwords, API keys, tokens, or other credentials.
- Never include: Personally identifiable information (PII) of students, parents, or staff.
- Use codenames if client confidentiality requires it — document the mapping separately in a secure location (not in this repo).
- Financial terms: Do not include contract values, pricing, or payment terms unless explicitly approved.
Cross-Referencing Solutions¶
Client documentation should link to solution documentation, not duplicate it:
This client uses Feoda ARM for billing. See [ARM Overview](../../solutions/arm/overview.md)
for standard features. Client-specific customizations are documented below.
9. Change Governance & Consistency Protocol¶
⚠️ This section is mandatory for all contributors, including AI assistants.
9.1 Plan Before Execute¶
Every documentation change — whether new content, edits, restructuring, or deletions — must first be presented as a proposal before implementation.
A change proposal must include:
- What will change: Clear description of the intended modification.
- Which files/sections are affected: List of primary files AND all related files that reference the same information.
- Rationale: Why this change is needed.
- Impact assessment: What other documents, templates, or sections could be affected.
The proposal must be explicitly approved before any changes are made.
9.2 Cross-Reference Propagation¶
Any change to a piece of information must be reflected in every place that references it. There are no exceptions.
Examples:
| If You Change... | Also Update... |
|---|---|
A solution's description in solutions/erp/overview.md |
company/about-feoda.md, any client docs referencing ERP, glossary.md if terminology changed |
A process definition in company/processes/ |
All client docs that reference that process, any solution docs that describe the process |
A term in company/glossary.md |
Every document that uses that term (search the entire repo) |
A template in doc-templates/ |
Review all documents created from that template for alignment |
Client-specific info in clients/[name]/ |
Related solutions/ docs if the customization reveals a gap in standard documentation |
The related-documents frontmatter field exists specifically to make this traceable. Keep it accurate.
9.3 Pre-Implementation Consistency Audit¶
Before making any approved change, the implementer (human or AI) must:
- Search the entire project for all references to the affected content (terms, process names, feature descriptions, etc.).
- Flag any existing discrepancies found during the search — even if they are unrelated to the current change.
- Present a consistency report that includes:
- Files that will be updated as part of this change
- Discrepancies found elsewhere in the project
- Proposed fixes for each discrepancy
- Wait for approval of the full consistency report before executing any changes.
9.4 Post-Implementation Verification¶
After changes are applied, the implementer must:
- Re-scan affected files to confirm all updates landed correctly.
- Verify no orphaned references remain (links to moved/deleted content, outdated terminology, etc.).
- Update
CHANGELOG.mdwith a summary of the change. - Update
last-updatedfrontmatter in every modified file.
9.5 Discrepancy Escalation¶
If a discrepancy is detected between documents at any point — even when not actively making changes:
- Flag it immediately. Do not ignore it.
- Do not proceed with the current task until the discrepancy is acknowledged by the document owner or project lead.
- Propose a resolution with a clear recommendation on which version of the information is correct.
- Document the resolution once decided — update all affected files and log the fix in
CHANGELOG.md.
9.6 AI-Specific Rules¶
When an AI assistant is used to make documentation changes:
- AI must never ignore any information provided by a stakeholder — no matter how minor it seems. If the information has no clear home in the current structure, AI must flag it and propose where to place it. Silently dropping information is a violation of the core principle (Section 1).
- AI must always perform the pre-implementation consistency audit (Section 9.3) before making any change.
- AI must present the change plan and consistency report to a human for approval.
- AI must not auto-approve its own changes — a human must confirm.
- AI should flag any ambiguity, conflicting information, or unclear ownership immediately.
- AI must update all related documents in a single operation, not piecemeal.
10. Contribution Workflow¶
For All Contributors¶
1. Create a branch → feature/[description] or docs/[description]
2. Make changes → Following all rules in this document
3. Self-review → Run the consistency checks in Section 9
4. Submit PR → With a clear description of what changed and why
5. Peer review → At least one reviewer who owns the affected section
6. Merge → Squash merge to main
7. Update CHANGELOG → Log the change with date and author
Branch Naming¶
| Type | Pattern | Example |
|---|---|---|
| New content | docs/add-[topic] |
docs/add-arm-billing-process |
| Updates | docs/update-[topic] |
docs/update-erp-overview |
| Fixes | docs/fix-[topic] |
docs/fix-glossary-typos |
| Restructuring | docs/restructure-[area] |
docs/restructure-clients-folder |
| Client documentation | docs/client-[name]-[topic] |
docs/client-greenvalley-requirements |
Commit Messages¶
Use conventional commit format:
docs: add ARM billing process documentation
docs: update ERP overview with new fixed assets feature
docs: fix inconsistent terminology in glossary
11. Review & Ownership Model¶
Section Owners¶
Each top-level section has a designated owner responsible for accuracy and currency:
| Section | Owner | Review Cadence |
|---|---|---|
company/ |
Head of Technology | Quarterly |
solutions/ |
Product/Solution Lead | Monthly |
clients/ |
Project Manager per client | Per milestone |
tech/ |
Head of Technology / Lead Developer | Monthly |
meetings/ |
Meeting facilitator | Per meeting |
doc-templates/ |
Head of Technology | As needed |
Review Responsibilities¶
Owners must:
- Review PRs that touch their section.
- Conduct periodic reviews per the cadence above.
- Ensure content is current and accurate.
- Update
last-updateddates after review (even if no changes were made — to confirm it's still accurate).
12. Versioning & History¶
Git as Version Control¶
- All documentation lives in this Git repository.
- History is tracked through Git commits.
- Use branches and PRs for all changes (no direct commits to
main).
CHANGELOG.md¶
Maintain a human-readable changelog at the root of the repository. Every significant change must be logged:
## [YYYY-MM-DD] - Brief Description
- **Added**: New documents or sections
- **Changed**: Updates to existing content
- **Fixed**: Corrections to errors or inconsistencies
- **Removed**: Deprecated or deleted content
Document Status¶
Use the status frontmatter field to track each document's lifecycle:
draft: Work in progress, not yet reviewed.in-review: Submitted for review, pending approval.approved: Reviewed and accepted as accurate.deprecated: No longer current — kept for historical reference, with a note pointing to the replacement.
13. Future Considerations¶
These are planned but not yet implemented. Keep them in mind when creating content:
Internal Documentation Website¶
- The documentation will be published as an internal website using a static site generator (Docusaurus is the current recommendation — React-based, good search, sidebar navigation, versioning).
- Frontmatter fields (
title,description,tags, sidebar position) will map directly to site navigation. - Write Markdown that renders well both on GitHub and in a static site.
AI-Assisted Querying¶
- This documentation is intended to serve as a knowledge base for AI retrieval (RAG — Retrieval-Augmented Generation).
- Consistent metadata, clear headings, self-contained documents, and explicit cross-references make AI retrieval more accurate.
- The
tagstaxonomy,related-documentsfield, anddescriptionfield are specifically designed for this purpose. - Keep documents self-contained where possible — a document should make sense on its own without requiring the reader to navigate five other files for context.
Multi-Language Support¶
- Arabic translations may be added in the future as a parallel folder structure (e.g.,
company/ar/about-feoda.md). - Do not mix languages within a single document.
Migration from SharePoint¶
- Existing documentation on SharePoint will be gradually migrated to this repository.
- When migrating, always adapt content to follow the conventions in this document — do not copy-paste without reformatting.
This document is the ultimate authority on how documentation is created, maintained, and governed at Feoda. When in doubt, refer here. If something is missing, propose an addition through the standard contribution workflow.