Project Info
Inspiration
Many local businesses in Türkiye still depend on social media, messaging apps, or map listings because building a professional website can feel expensive, technical, and risky. But these businesses do not begin with a website brief. They begin with a harder question: Who can I trust to build it? SiteKapında means “your website at your doorstep” in Turkish. We reversed the usual website sales process: Do not sell the promise. Bring the first version. Our goal is to let a business see something tailored and tangible before committing—while keeping the owner in control of every decision that can affect their brand, money, or public presence.
What it does
SiteKapında is a human-supervised workflow that discovers businesses without strong websites, creates a business-specific first version, manages the sales conversation, and carries an approved website toward launch. The end-to-end flow has eight stages: Discover Account-local Codex automation experiments, configured with GPT-5.6 Sol and an hourly schedule, inspect permitted public sources. They verify the missing-website signal, collect public business contact channels, reject low-confidence cases, and save only evidence-backed opportunities. Create a tailored first version with GPT Image Business facts and image rights are handled separately. When visuals are licensed, owner-supplied, synthetic, or explicitly authorized, GPT Image can preserve the real venue or products while rebuilding the imagery for a professional website. The project demonstrates distinct directions for restaurants, beauty businesses, dental practices, cafés, automotive services, fitness studios, florists, pet groomers, education providers, and other local-business categories. Save everything in the Sales Ops panel Qualified leads enter the SiteKapında panel with: Source and qualification context Public contact channels Desktop and mobile website concepts Opportunity score and rationale Sales notes and next actions Contacted, Interested, Not interested, Approved, and Do not contact states The salesperson sees the reason to believe, the proposed first version, and the current relationship state in one place. Contact transparently A human sales operator reviews the lead and the proposed design before contacting the business. Concepts remain private, are never presented as an official website, and are never published automatically. The owner can decline, request no further contact, express interest, or continue to a working demo. Show a working demo through Codex Sites When a lead is interested, the demonstrated Codex Sites workflow produces a live private demo—not the final public website. The customer opens a Sites link and can request specific changes to: Copy Imagery Layout Services Calls to action Mobile presentation Revise and approve Codex continues from the same customer context until the owner explicitly approves the version that may be released. Human approval is required before publication. The workflow does not treat silence or initial interest as permission to launch. Register the domain and go live After the Sites version is approved, the demonstrated release workflow preserves that exact version. With explicit purchase confirmation, a Cloudflare integration can check and register the custom domain and apply the required DNS records. Domain purchase, DNS changes, and deployment are separate, human-authorized actions and are disabled in the judge quick-start. Keep a persistent customer developer Each customer can retain a persistent Codex task containing the website’s decisions and development history. The same context can support later bug fixes, copy changes, new sections, and product improvements instead of starting from zero with a new developer. In the future, this context can be packaged as a customer-owned Codex skill so the business owner can continue improving the website with their own agent.
How we built it
We built SiteKapında as two connected layers. 1. A portable, judge-ready application core The submitted repository contains a deterministic Python and SQLite pipeline for: Candidate normalization Deduplication Compliance and category rejection Website-strength classification Opportunity scoring Lead persistence Sales lifecycle states Reports Sales Ops workspace generation The default judge path uses twelve fictional businesses and makes no network requests. It does not require an OpenAI API key, Google API key, Cloudflare credentials, or production customer records. The repository includes: Twelve fictional business examples Twenty-four GPT Image website UI mockups Twelve independent desktop designs Twelve independently composed mobile designs A searchable English Sales Ops panel Nineteen offline tests A one-command bootstrap Five reusable SiteKapında Codex workflow skills 2. A Codex-assisted production workflow During Build Week, GPT-5.6-class models in Codex—primarily the gpt-5.6-sol profile—helped us: Research and understand the original project Improve discovery-agent prompts Strengthen rejection and qualification rules Add image-rights safeguards Create distinct design directions Develop and test the Sales Ops interface Build responsive website examples Review safety and release gates Produce the Remotion demonstration video Package the project as a clean GitHub repository for judges The demonstrated discovery configurations use: model = "gpt-5.6-sol" schedule = "hourly" reasoning = "xhigh" source_policy = "permitted_public" These scheduled Codex experiments remain paused in the submitted package. The offline Python application does not hide an autonomous GPT-5.6 API runtime. GPT Image was used during the authoring workflow to create rights-safe, business-specific visual directions. The offline runtime presents the resulting local assets but does not regenerate them. Codex Sites demonstrates the private review stage through a working hosted example: Open the Codex Sites demo Cloudflare domain registration and DNS deployment are represented as separately authorized release steps rather than automatic judge-path actions. Challenges we faced The hardest challenge was not generating a website. It was building an agentic workflow that remains useful without becoming misleading or unsafe. Consent and identity A generated concept must never be presented as the official website of a business. Private concepts, outreach, approval, purchasing, and publication require different controls. Image and brand rights A public image is not automatically reusable. We separated business facts from image rights and restricted the visual workflow to synthetic, licensed, owner-supplied, or explicitly authorized material. Preventing invented claims Website designs can easily introduce fictional reviews, awards, prices, statistics, or guarantees. Our prompts and review rules explicitly reject those additions. Combining many workflows Discovery, qualification, image generation, sales operations, responsive development, revisions, domain registration, and maintenance all require different tools and approval boundaries. Portability Codex tasks and schedules belong to the creator’s environment. We therefore packaged the transferable parts as: AGENTS.md repository guidance Reusable Codex skills Versioned prompts Transparent automation examples An offline deterministic runtime Judges can clone the repository, open it in Codex, and reproduce the safe synthetic workflow without our credentials or account state. Accomplishments that we are proud of We are proud that SiteKapında became more than a concept deck. We built a working Sales Ops product, a reproducible discovery and qualification pipeline, twelve sector-specific examples, twenty-four desktop/mobile GPT Image designs, a Codex Sites review experience, reusable Codex skills, and a GitHub-ready judge package. We also tested the central business assumption manually. In a founder-reported pilot of ten businesses: Four liked the design direction, but the conversations stalled Five said they were not interested One became the first paying customer The panel preserves all three outcomes—Contacted, Interested, and Not interested—because failed conversations are product evidence, not vanity-metric failures. Çağrı Karakaş became the first customer implementation: a polished, responsive personal-training website running on its own domain. Visit cagrikarakas.com This was important proof that the workflow could move beyond a generated concept and become a real customer website.
What we learned
We learned that the most useful AI system is not always the one with the fewest humans. For business identity, communication, payments, domains, and publication, the stronger design is: Agents do the repetitive work. Humans make the consequential decisions. We also learned that showing a tailored first version creates a very different conversation from selling an abstract website service. The visual concept helps the owner react to something concrete. Codex Sites turns that reaction into revision requests. Persistent Codex history then transforms a one-time website build into an ongoing developer relationship. Finally, we learned that negative outcomes matter. Recording why a lead declined or why a conversation stalled helps improve discovery, qualification, design direction, and outreach.
What's next
Our next steps are to: Harden the paused Codex automation experiments into monitored production workflows Add auditable consent and image-rights records Connect approved CRM and messaging channels Build a secure customer review and approval portal Expand industry-specific design systems Support Turkish and English website generation Improve qualification using real sales outcomes Add owner-approved domain, analytics, SEO, and maintenance workflows Preserve customer context across long-term fixes and new features Package customer histories as owner-controlled Codex skills Expand from Türkiye market by market Our long-term vision is not only to help local businesses get websites. It is to show how Codex agents, GPT Image, Sites, and deployment extensions can work together as a human-controlled digital production team. Discover the need. Show the value. Earn the trust. Then launch. Built in Türkiye. Designed to expand market by market.
SiteKapında — OpenAI Build Week submission
A first working website arrives before the sales pitch.
SiteKapında is an AI-assisted, human-approved website production workflow for local businesses that do not yet have a strong website. It discovers a qualified opportunity, produces a private first version, gives a salesperson something tangible to review with the owner, and keeps publication behind an explicit human approval gate.
This repository is the safe, judge-ready edition of the project. Its default path uses fictional businesses, requires no API key, makes no network request, and does not contact or publish anything.
See it first
| Artifact | Link |
|---|---|
| 2:40 product video | Watch on YouTube |
| Codex Sites demo | Open the private-demo example |
| SiteKapında product site | sitekapinda.com |
| Customer implementation example | cagrikarakas.com |
The Codex Sites demo is a hosted companion artifact. The Çağrı Karakaş link is a separate customer implementation example; neither is generated by the synthetic judge run below.
Clone and open in Codex
- Clone this GitHub repository, or use GitHub's Code → Download ZIP and extract it normally.
- In the Codex desktop app, IDE extension, or CLI, open the repository root—the folder that directly contains
AGENTS.md,README.md,pyproject.toml, andsrc/. - Start a new task from that root. No plugin installation is required for the default path; Codex automatically receives the checked-in
AGENTS.mdrepository guidance. - Send the prompt below. Codex can run the platform-specific bootstrap, verify the tests, and show the generated Sales Ops workspace and one synthetic preview.
Read README.md and AGENTS.md. Run the safe synthetic judge path, verify all
tests, and show me the generated English Sales Ops workspace plus one preview.
Do not enable real discovery, contact anyone, upload data, or publish anything.
Expected local outputs are runtime/generated/index.html, runtime/generated/mockups/, runtime/generated/demos/, runtime/reports/, and runtime/sitekapinda.sqlite3. Installing the bundled SiteKapında plugin is optional; it adds five named reusable workflows but is not required to run or judge the repository.
Five-minute judge path
Prerequisite: Python 3.10 or newer. Node, Docker, an OpenAI API key, and a Google API key are not required.
Windows PowerShell:
powershell -ExecutionPolicy Bypass -File .\scripts\bootstrap.ps1
macOS or Linux:
bash ./scripts/bootstrap.sh
The bootstrap is idempotent. It creates an isolated .venv, writes a local .env only when one does not already exist, runs the environment doctor, runs the unit tests, and executes one synthetic discovery cycle. It does not install third-party Python packages or use the network.
After it finishes, inspect:
runtime/generated/index.html— the English Sales Ops master-detail workspace, populated only from the local synthetic pipelineruntime/generated/mockups/— twenty-four full website UI mockups produced with GPT Image: a separately composed desktop and mobile design for each fictional businessruntime/generated/demos/— supplementary deterministic HTML preview packages used to demonstrate the downstream build stage; the Sales Ops workspace deliberately presents the GPT Image mockups insteadruntime/reports/— JSON, Markdown, CSV, and lead reportsruntime/sitekapinda.sqlite3— local state and suppression records
For the exact verification checklist and manual commands, see Judge test guide.
What runs today
The submitted application core is a deterministic Python and SQLite pipeline:
- A provider returns normalized business candidates.
- Stable identifiers are deduplicated and previously processed or suppressed records are skipped.
- A deterministic compliance gate rejects unsupported or sensitive categories.
- A transparent ruleset classifies website strength and scores the opportunity.
- A configured number of eligible candidates receive responsive, explicitly labelled,
noindex,nofollowpreview packages. The application default is five; the synthetic judge bootstrap uses twelve so every packaged category and asset pair is visible. - SQLite records provenance, decisions, run events, lead status, and suppression state.
- The English Sales Ops workspace presents a business-specific GPT Image desktop website design and an independently composed mobile design for each lead. It does not embed HTML, use iframes, or crop the desktop image into a phone.
- Report exports support human review; no production customer record or external action is bundled.
The default mock provider reads entirely fictional data from data/mock_places.json. An optional real provider demonstrates a narrow integration with the official Google Places Text Search API and an explicit field mask. The judge path does not enable or need it.
Where OpenAI is used — and where it is not
| Layer | Role in the project |
|---|---|
| OpenAI Codex | Architecture audit, multi-agent implementation, code review, tests, design iteration, browser validation, packaging, and reusable SiteKapında workflow skills |
| GPT-5.6-class Codex models | Reasoning and implementation inside the Codex authoring workflow; the repository does not hardcode or call a GPT-5.6 API model |
GPT Image / imagegen | Produced twenty-four complete, high-fidelity website UI mockups during the authoring workflow—an independent desktop and mobile composition for each of twelve fictional businesses—plus rights-safe sector photography used as visual context; the offline Python runtime makes no model call |
| Codex Sites | Hosted demonstration of the private-review step before an approved public launch |
| Python runtime | Deterministic discovery, compliance, scoring, preview packaging, persistence, English Sales Ops workspace generation, and exports |
| React/Next.js companion | Source for the fictional Sedirra Sites demonstration under apps/sites-demo/; separate from the Python judge bootstrap |
There is intentionally no OpenAI SDK dependency and no OpenAI API call in the submitted Python core. The bundled Codex skills are reusable operating instructions for a human-supervised workflow; they are not a concealed autonomous service. This boundary makes the demonstration reproducible while keeping model-assisted creative work auditable.
Read How Codex was used for prompts, skill roles, and the exact capability boundary.
Architecture at a glance
flowchart LR
A["Synthetic fixture\nor official provider"] --> B["Normalize and\ndeduplicate"]
B --> C["Compliance\ngate"]
C --> D["Transparent\nscoring"]
D --> E["Deterministic\npreview package"]
E --> F["SQLite + reports\n+ Sales Ops workspace"]
F --> G["Human sales\nreview"]
G --> H["Private demo and\nrevision"]
H --> I{"Explicit owner\napproval?"}
I -->|No| J["Revise, reject, or\nsuppress"]
I -->|Yes| K["Separate approved\ndeployment workflow"]
Only the solid local path through Sales Ops workspace generation runs in this repository. Contact, domain registration, and public deployment are deliberately outside the automatic judge run.
For component and state details, see Architecture.
Repository map
.
├── AGENTS.md # durable instructions when opened in Codex
├── apps/sites-demo/ # source of the fictional hosted Sites companion
├── codex/ # versioned prompts, routing note, automation template
├── data/ # fictional judge fixture
├── docs/ # judge-facing evidence and boundaries
├── media/ # Build Week submission thumbnail
├── plugins/sitekapinda/ # installable Codex workflow skills
├── scripts/ # bootstrap, doctor, one-shot, and hourly helpers
├── src/sitekapinda/ # deterministic Python application
├── tests/ # offline unit and integration tests
├── .env.example # safe local defaults; no credentials
├── SUBMISSION_MANIFEST.json # machine-readable components, evidence, and checks
└── pyproject.toml # zero-runtime-dependency Python package
The Python core is the required offline judge path. apps/sites-demo/ is a separate Next.js/React/TypeScript companion with its own lockfile and test command; bootstrap does not download its packages or start it. See its local README.md if you want to reproduce the hosted visual demonstration.
The optional hourly helper is a foreground local loop. It is not enabled by bootstrap and it is not a hosted autonomous agent:
.\scripts\run_hourly.ps1
bash ./scripts/run_hourly.sh
Stop it with Ctrl+C.
Open in Codex
Open this repository root as a Codex project. Codex reads the checked-in AGENTS.md, which supplies the run commands, verification standard, and safety boundaries.
No plugin installation is required. Start a new Codex task and use:
Read README.md and AGENTS.md. Run the safe synthetic judge path, verify all
tests, and show me the generated English Sales Ops workspace plus one preview.
Do not enable real discovery, contact anyone, upload data, or publish anything.
Optionally, install the local SiteKapında plugin described in CODEX_USAGE.md, start a new task, and use:
Use $sitekapinda-setup to verify this repository, run the synthetic judge path,
and show me the generated English Sales Ops workspace and one synthetic preview.
Do not enable real discovery, contact a business, upload data, or publish a site.
The other bundled skills cover discovery review, private-preview review, sales-state operations, and launch/maintenance planning. External actions always require separate user authorization.
Safety by default
- Synthetic fixture data is the default and contains no real contactable business.
- Synthetic phone and WhatsApp controls are rendered as local/inert demo actions, never outbound links.
- Generated previews declare that they are demonstrations and include
noindex,nofollow. - Review text, scraped HTML, raw provider responses, and unnecessary personal data are not stored.
- Unsupported or sensitive categories are rejected before generation.
do_not_contactwrites to the suppression list and prevents reprocessing.- The repository contains no secrets, production customer database, live admin credentials, Cloudflare identifiers, or historic runtime artifacts.
- Outreach, account changes, purchases, domain registration, and public deployment do not run without explicit human action.
See Safety and data boundary and Security policy.
Tests
Bootstrap runs the suite automatically. To repeat it:
Windows:
$env:PYTHONPATH = (Resolve-Path .\src)
.\.venv\Scripts\python.exe -m unittest discover -s tests -p "test_*.py" -v
macOS or Linux:
PYTHONPATH=src ./.venv/bin/python -m unittest discover -s tests -p 'test_*.py' -v
The nineteen-test offline suite covers compliance, scoring, multi-family responsive preview generation, desktop/mobile asset provenance, persistence, sales state, sandboxed live-frame emission, hostile-text and external-demo-path safety, idempotency, fixture safety, and the complete mock pipeline. It is not presented as exhaustive production coverage. The expected result is nineteen passing tests with no network access.
Honest limitations
- The Sales Ops preview surface uses twenty-four complete GPT Image website UI mockups. Each sector has its own composition and each mobile design was composed independently rather than cropped from desktop.
- The deterministic HTML packages remain supplementary evidence of the later implementation stage; GPT Image is not called by the offline Python process. Bootstrap copies the checked-in mockups locally but does not regenerate them or call an OpenAI API.
- Real provider mode requires the user's own Google Places API key, network access, quota, and acceptance of the provider's terms.
- The submitted package does not send outreach, buy domains, modify Cloudflare, or publish customer websites.
- The Sites demo and customer example are externally hosted evidence; local bootstrap remains useful if either external URL is unavailable.
- Production authentication, multi-tenant isolation, queues, retries, observability, and a recorded owner-approval service remain future hardening work.
Build Week disclosure
SiteKapında began as an existing product idea and prototype. Build Week work focused on turning it into a truthful, reproducible, safety-bounded system and demonstration: the runtime was audited, the Codex-assisted workflow was formalized, design and demo assets were iterated, a hosted Sites example and video were produced, and this clean synthetic submission package was created.
The detailed before/during/after boundary is in Build Week changes.
Documentation
- Judge test guide
- Architecture
- How Codex was used
- Safety and data boundary
- Build Week changes
- Security policy
License
Released under the MIT License. External brand names, linked websites, and customer-owned content remain the property of their respective owners.
Analysis
View
Metric
- 1
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
- CSSIn code
- HTMLIn code
- JavaScriptIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- FastAPIClaimed
- Node.jsClaimed
- OpenAIClaimed
8 of 11 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
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
330 KB
Source files
79
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
haakanergun/sitekapinda
161 files · 91.1 MB · @ 7ef9ffa
Structure
Interface
4 files · 2%Screens, components and styles rendered to the user.
API & routing
1 file · 1%Request entry points: routes, handlers and controllers.
Application logic
36 files · 22%Domain rules, services and shared utilities.
Background jobs
1 file · 1%Work run outside a request: tasks, workers and schedules.
Data & schema
4 files · 2%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
- Python48%
- Markdown30%
- CSS7%
- TypeScript5%
- JavaScript4%
- Shell3%
- Other (2)2%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
apps/sites-demo/package.json
npm · 20- drizzle-orm
- next
- react
- react-dom
- +16 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.