Project Info
Inspiration
Every organization accumulates years of documentation across PDFs, Word documents, Markdown files, shared drives, and internal repositories. Over time, this knowledge becomes duplicated, contradictory, outdated, and difficult to trust. Employees often spend significant time searching for information, only to find multiple versions of the same document with no clear indication of which one is correct. Most AI-powered documentation tools focus on retrieving existing information. I wanted to explore a different approach: what if AI could transform fragmented organizational documentation into a structured, trusted knowledge base before anyone even searched for it? That idea became OrgWiki.
What it does
OrgWiki is an AI-powered organizational knowledge platform that converts collections of unstructured documents into curated organizational knowledge. A user uploads a ZIP containing company documentation. GPT-5.6 analyzes the entire document collection, discovers knowledge domains, identifies duplicate and conflicting information, and proposes a structured set of knowledge articles. It then generates evidence-backed articles with citations that can be reviewed by a human before publication. Published articles can be organized into Team Spaces, such as Technical, HR, Security, or Leave Policy, making trusted organizational knowledge accessible to employees through simple public links. Every published article can also be downloaded as Markdown for portability and version control. The complete workflow is: Upload → AI Discovery → AI Generation → Human Review → Publish → Team Spaces How I built it OrgWiki was built using a React frontend, an ASP.NET Core (.NET 9) backend, and PostgreSQL for persistence. The application follows a layered architecture with dedicated services for document ingestion, AI orchestration, review workflows, publishing, and public knowledge distribution. The AI pipeline intentionally separates two responsibilities: Knowledge Discovery – GPT-5.6 analyzes the uploaded document collection as a whole to identify topics, relationships, duplicate content, conflicts, and candidate knowledge articles. Knowledge Discovery – GPT-5.6 analyzes the uploaded document collection as a whole to identify topics, relationships, duplicate content, conflicts, and candidate knowledge articles. Knowledge Generation – GPT-5.6 generates structured Markdown articles with summaries, metadata, related articles, confidence scores, and evidence-backed citations. Knowledge Generation – GPT-5.6 generates structured Markdown articles with summaries, metadata, related articles, confidence scores, and evidence-backed citations. Every generated article enters a human review workflow before publication, ensuring AI assists knowledge creation without becoming the final decision maker. How GPT-5.6 was used GPT-5.6 powers the core intelligence of OrgWiki. Rather than acting as a chatbot, it performs structured knowledge transformation by: Discovering organizational knowledge across an entire document collection Identifying duplicate and conflicting documentation Generating structured knowledge articles Producing evidence-backed citations Suggesting relationships between articles Using GPT-5.6 as the reasoning engine allowed the application to move beyond document search into AI-assisted knowledge management. How Codex was used Codex significantly accelerated development throughout the project. It was used to implement and refine backend APIs, database models, authentication, frontend workflows, AI pipeline integration, review workflows, public Team Spaces, and Markdown export while preserving the overall architecture. This allowed me to spend more time designing the product, refining the AI workflow, and improving the end-to-end user experience instead of writing repetitive implementation code. Challenges One of the biggest challenges was balancing AI capability with trust. Generating articles is relatively straightforward; generating articles that people can confidently rely on is much harder. That led to several design decisions: Separating knowledge discovery from knowledge generation Requiring human review before publication Including evidence-backed citations for every generated article Keeping published knowledge as the only public source of truth Another challenge was designing prompts that consistently produced structured JSON outputs suitable for automated processing while remaining efficient enough to keep API usage practical. What I learned Building OrgWiki reinforced that successful AI applications require much more than connecting an LLM to a user interface. Designing reliable AI systems involves prompt engineering, validation, structured outputs, workflow orchestration, human oversight, and thoughtful product design. The project also deepened my understanding of building scalable backend architectures with ASP.NET Core, designing AI-assisted workflows, and creating products where AI augments human decision-making instead of replacing it.
What's next
Future development will focus on enterprise deployment and integrations, including SharePoint, Google Drive, Confluence, incremental synchronization, organization workspaces, role-based access control, knowledge graph visualization, and support for self-hosted local language models for organizations with strict security requirements. The long-term vision is for OrgWiki to become an AI-powered organizational knowledge platform that helps companies preserve, organize, and continuously improve their collective knowledge while keeping humans in control.
OrgWiki
Transform fragmented organizational documents into trusted, searchable knowledge.
OrgWiki is an AI-assisted organizational knowledge platform. It turns a bounded ZIP archive of PDFs, DOCX files, Markdown, and text documents into a structured knowledge map, citation-backed draft articles, and a human-reviewed knowledge base.
It is not a chat-with-your-files application. OrgWiki refactors the organization’s knowledge before it is published: it discovers domains, identifies duplicate and conflicting guidance, generates grounded articles, and keeps people in control of publication.
The product story
Source documents
-> Document ingestion
-> AI knowledge discovery
-> Validated knowledge map
-> AI knowledge generation
-> Human review
-> Explicit publishing
-> Searchable knowledge base and public Team Spaces
Published articles may also be curated into Team Spaces: public, read-only collections that employees can browse without signing in.
Key capabilities
- Safe ZIP ingestion for PDF, DOCX, Markdown, and text documents.
- Corpus-level discovery of domains, topics, relationships, duplicates, conflicts, and potentially outdated knowledge.
- Citation-backed Markdown article generation.
- Exact evidence validation against normalized source content.
- Human edit, approve, reject, publish, and republish workflow.
- Private, user-owned workspaces with JWT authentication.
- Published knowledge browsing, keyword filtering, and source evidence.
- Public Team Spaces with scoped search and Markdown downloads.
Architecture
React + TypeScript (Vite)
-> ASP.NET Core .NET 8 API
-> PostgreSQL
API AI provider selection
-> Replay providers for offline development
-> OpenAI provider for deliberate Live execution
The backend uses Entity Framework Core with PostgreSQL/Npgsql. The frontend uses React, React Router, React Query, Tailwind CSS, and Motion.
AI design and key technical decisions
Two controlled GPT-5.6 stages
OrgWiki deliberately avoids per-document, per-topic, or agent-loop AI usage.
- Knowledge Discovery makes exactly one bounded provider call for an eligible upload. It analyzes the complete deterministic corpus and produces a knowledge map.
- Knowledge Generation makes exactly one bounded provider call for an analysis. It generates all proposed articles in a single response.
Review, publishing, search, Team Spaces, and citation display are deterministic application features and make no AI calls.
The configured model is read from OPENAI_MODEL; the checked-in default is gpt-5.6. Live execution is an explicit opt-in through OPENAI_MODE=Live and requires OPENAI_API_KEY.
Why this approach
- Cost control: the MVP bounds archive size, document count, normalized corpus size, and output tokens before any Live request.
- Trust: discovery and generation responses are validated before persistence. Source document references, cross-references, confidence values, and conflict evidence are checked by the application.
- Evidence: conflict and article citations must be exact substrings of normalized source content; fabricated or paraphrased evidence is rejected.
- Human governance: generated articles remain Pending Review until a person explicitly approves and publishes them.
- Safe development: Replay is the default mode and makes zero OpenAI requests, enabling full workflow and UI development without API spend.
How Codex accelerated implementation
Codex was used as an implementation partner across the MVP: designing and implementing the phased workflow, focused test coverage, EF Core migration and SQL-script workflow, deterministic Replay support, security hardening, frontend UX polish, and deployment configuration.
Key decisions were made explicitly in code rather than delegated to the model: one provider call per AI stage, no automatic AI retries, strict structured output, exact evidence verification, transactional persistence, manual database migration application, and human approval before publication.
Prerequisites
- .NET 8 SDK
- Node.js 20 or newer
- PostgreSQL 15+ or a Supabase PostgreSQL database
- A modern browser
Docker is optional for backend deployment. See backend/Dockerfile for the Render-oriented backend image.
Quick start
1. Create a PostgreSQL database and apply the schema
OrgWiki does not apply EF migrations at application startup and does not use dotnet ef database update as its deployment workflow.
For a fresh database, manually review and execute these SQL files in this exact order:
- backend/orgwiki-initial-schema.sql
- backend/orgwiki-add-authentication-foundation.sql
- backend/orgwiki-add-user-owned-workspaces.sql
- backend/orgwiki-add-team-spaces.sql
For Supabase, create the project, open the SQL Editor, confirm the database is empty, review each script, and execute each one once. Verify the matching entries in __EFMigrationsHistory before configuring the backend.
2. Configure the backend
Set environment variables in your shell, IDE launch profile, or .NET User Secrets. The sample backend/.env.example is a reference file; it is not automatically loaded by ASP.NET Core.
PowerShell example:
$env:DATABASE_URL = "Host=localhost;Port=5432;Database=orgwiki;Username=postgres;Password=YOUR_PASSWORD"
$env:JWT_SIGNING_KEY = "replace-with-a-random-secret-at-least-32-characters-long"
$env:OPENAI_MODE = "Replay"
$env:OPENAI_MODEL = "gpt-5.6"
$env:CORS__ALLOWEDORIGINS__0 = "http://localhost:5173"
Required settings:
| Variable | Purpose |
|---|---|
DATABASE_URL | PostgreSQL/Npgsql connection string. |
JWT_SIGNING_KEY | Random signing secret, at least 32 characters. Never commit it. |
OPENAI_MODE | Replay for safe local development, or Live for a deliberate model request. |
OPENAI_MODEL | Configured Live model identifier; default configuration is gpt-5.6. |
OPENAI_API_KEY | Required only when OPENAI_MODE=Live. |
CORS__ALLOWEDORIGINS__0 | Frontend origin allowed to call the API. |
OPENAI_VERBOSE_LOGGING | Optional true for request metadata and usage diagnostics; defaults to false. |
SUPABASE_URL, SUPABASE_KEY, and SUPABASE_STORAGE_BUCKET are reserved configuration placeholders. The current MVP uses direct PostgreSQL through Npgsql and local archive storage; it does not use a Supabase SDK or Supabase Storage client.
Start the API:
cd backend
dotnet restore
dotnet run --project src/OrgWiki.API
The local API health endpoint is available at http://localhost:5051/health when using the default launch profile. Swagger is enabled only in Development.
3. Configure and start the frontend
cd frontend
copy .env.example .env.local
npm install
npm run dev
On macOS or Linux, use cp .env.example .env.local instead of copy.
Set VITE_API_BASE_URL in frontend/.env.local to the backend URL. For local development, the sample value is:
VITE_API_BASE_URL=http://localhost:5051
Open the Vite URL shown in the terminal, register an account, and begin importing documents.
Replay demo data
No ZIP fixture is committed to the repository. Replay works with any small supported archive and never calls OpenAI.
To make a simple local demo archive, create two small files such as:
demo-corpus/
Engineering/Authentication.txt
HR/LeavePolicy.md
Then create DemoDocs.zip from the files. In PowerShell:
Compress-Archive -Path .\demo-corpus\* -DestinationPath .\DemoDocs.zip
Upload the archive while OPENAI_MODE=Replay. The Replay discovery provider maps the first one or two parsed documents into a deterministic fixture-compatible knowledge map, and the Replay generation provider returns deterministic cited drafts. This supports the full flow:
Register -> Upload -> Analyze -> Generate -> Review -> Approve -> Publish -> Knowledge Base -> Team Spaces
For Live testing, start with a deliberately small two-document corpus. Use the Retry actions only when intentionally authorizing another provider call.
Security and ownership
- Passwords use ASP.NET Core
PasswordHasherand are never stored in plaintext. - JWT authentication protects upload, analysis, generation, review, publishing, and private knowledge-base routes.
- Uploads are owned by the authenticated user; downstream documents, analyses, generations, citations, and articles inherit ownership through the upload.
- ZIP extraction validates paths, entry limits, file types, archive sizes, extracted sizes, PDF page count, and normalized text limits.
- Markdown is rendered without unsafe HTML injection, and external links are restricted to HTTP(S).
- Public Team Spaces expose only curated, Published article content through read-only routes.
Deployment notes
- Backend on Render: set the Root Directory to
backend, useDockerfile, internal port10000, and health-check path/health. - Frontend on Vercel: set
VITE_API_BASE_URLto the Render API URL. The includedfrontend/vercel.jsonprovides the SPA fallback required for/spacesand other direct routes. - CORS: set
CORS__ALLOWEDORIGINS__0on Render to the deployed Vercel origin. - Database: apply reviewed SQL manually before deploying the backend. Do not enable automatic EF migrations.
- Archive retention: Render filesystem storage is ephemeral. Normalized source content persists in PostgreSQL, but durable original archive retention requires future object-storage integration.
Project structure
OrgWiki/
frontend/
src/ React application
vercel.json SPA deployment fallback
backend/
src/
OrgWiki.API/ ASP.NET Core API and configuration
OrgWiki.Application/ application contracts and use cases
OrgWiki.Domain/ domain entities
OrgWiki.Infrastructure/ EF Core, storage, providers, services
tests/ focused backend tests
*.sql manually reviewed PostgreSQL migration scripts
Dockerfile Render-oriented backend image
MVP scope
Included:
- ZIP ingestion and normalization
- One-call knowledge discovery
- One-call article generation
- Exact citation validation
- Human review and explicit publishing
- Private knowledge base, keyword filtering, and source evidence
- Public Team Spaces and Markdown download
- JWT authentication and user-owned workspaces
Intentionally out of scope:
- AI chat, semantic search, embeddings, and vector databases
- Background queues, agent frameworks, or automatic AI retries
- OAuth, RBAC, organizations, and collaboration workflows
- Version history, source connectors, and durable object-storage integration
License
OrgWiki is a hackathon MVP and portfolio project. Future work can evolve the personal-workspace foundation into organization-based knowledge management.
Analysis
View
Metric
- 21
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- C#In code
- CSSIn code
- HTMLIn code
- ReactIn code
- SQLIn code
- Tailwind CSSIn code
- TypeScriptIn code
- OpenAIClaimed
- PostgreSQLClaimed
- SupabaseClaimed
7 of 10 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
486 KB
Source files
127
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
karthikeyansrin/OrgWiki
153 files · 577 KB · @ f1da669
Structure
Interface
25 files · 16%Screens, components and styles rendered to the user.
API & routing
10 files · 7%Request entry points: routes, handlers and controllers.
Application logic
85 files · 56%Domain rules, services and shared utilities.
Data & schema
13 files · 8%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- C#70%
- TypeScript26%
- Markdown2%
- SQL2%
- CSS0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 14- @tanstack/react-query
- lucide-react
- react
- react-dom
- react-router-dom
- +9 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.