# ADJL Technology: every page as markdown > Every page on https://adjltechnology.com, converted at build time from the same HTML a browser receives. Each page is also at its own URL plus index.md. --- # AI, websites and apps, built for what’s next. > ADJL Technology builds AI agents and automation, websites and native apps, and the technical SEO that gets them found by search and AI answer engines. Page: https://adjltechnology.com/ Updated: 2026-11-12 AI · Websites · Apps · SEO ADJL Technology builds AI that handles the busywork, websites people can find, and apps for iPhone and Android. Everything on this page was built by us. Scroll down and try it. [See what we’ve built](https://adjltechnology.com/#systems) [See what AI sees on your site](https://adjltechnology.com/scan/) We build AI that reads documents, fast websites, iPhone and Android apps, pages that search engines and AI can read, automation and dashboards. People read the top layer, crawlers follow the middle one and machines parse the bottom one. What we do ## What we can build for you. You don’t need the jargon to work with us. Here’s what we build and what you get. AI Engineering ### AI that does the busywork We build assistants that read your documents, pull out what matters and fill in your systems. When a mistake would cost money, a person checks it first. You get - Invoices, contracts and forms read for you - A person’s sign-off where it counts - Code and tests, handed over [How we build AI systems](https://adjltechnology.com/services/ai-engineering/) SEO & AI Search ### Easy to find, easy to quote Search engines and AI assistants read your site’s code before they show you to anyone. We make that code clear, complete and fast. You get - Pages that load fast and read in full - Labels that tell machines who you are - A summary file for AI assistants [How we do technical SEO](https://adjltechnology.com/services/seo/) Websites & Apps ### One build, on every screen We build websites, web apps and apps for iPhone and Android. The phone apps share one codebase, so a fix lands on both at once. You get - Fast from the first version - One codebase for iPhone and Android - Strict security settings by default [How we build sites and apps](https://adjltechnology.com/services/software/) Systems we run ### We run what we build We built the engine behind property decisions at ADJL Capital, a private investment firm, and it’s still running. Paste in a listing link and it returns a file where every figure names its source. How we run them - Every number says where it came from - Unaudited figures say so - New methods tried here first [See the systems](https://adjltechnology.com/work/) You say “We need a booking page that takes a deposit.” We write The code for that page. You get A working booking page with a deposit button. An example request. It starts with a sentence. We write the code, test it, and hand you something people can use. What we’ve built ## Things we built, and how they work. Each card opens a page that walks one system step by step. We show how each one works. We don’t publish what it returned, and since the firm is new, you won’t find client logos here either. Real estate Running · ADJL Capital ### A listing URL in, a sourced file out. Resolves the parcel, pulls live rents and comparables, reads years of public record and models tax through reassessment. Every figure names its source. Anything unaudited says so. [How the engine works](https://adjltechnology.com/work/real-estate-intelligence/) Loep Private preview ### The records behind a price, on one sheet. A property scanner, company reports read from SEC filings, a business analyst and an indicator our research tested. The engines are pure modules that run in the browser. AI writes one optional note from figures the code computed. [How Loep works](https://adjltechnology.com/work/loep/) Trading and research Running · ADJL Capital ### From the feed to the evening brief. Market-data ingestion, order logic and backtests that share the production code path. Plus a daily research pipeline built on point-in-time index membership. [How the pipeline works](https://adjltechnology.com/work/trading-infrastructure/) Agentic research Running · on paper ### AI agents run the studies. A person decides. Agents write the spec, the plan, the code and the reviews. A person approves each gate. Ideas face a blind control on the same days, and rules-based programs follow the chosen ones on paper after every close. [How the research runs](https://adjltechnology.com/work/agentic-research/) Native app Private distribution ### The whole engine, offline, on a phone. One Expo and React Native codebase for iOS and Android. The underwriting engine runs on the device, and tests hold it to the same answers as the web. [How the app works](https://adjltechnology.com/work/mobile-app/) Private website Private · gated ### Sealed at build. Checked at the edge. Members’ pages are kept out of the public build. An edge function checks a signed session before it serves any of them. [How the lock works](https://adjltechnology.com/work/private-site/) This website Public · you’re on it ### Prerendered, strict and self-checking. Static HTML, a content policy that allows nothing from other origins, structured data on every page, and a build that fails on hype. [How this site is built](https://adjltechnology.com/work/this-site/) - [All work](https://adjltechnology.com/work/) - [How an AI rollout runs](https://adjltechnology.com/work/ai-implementation/) ## Have something in mind? Let’s build it. Send a few lines about what you need, and Daniel will answer you himself. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) From here down, it’s the proof, and it gets more technical. You can try the next two demos yourself. SEO, demonstrated ## What a machine reads on this page. Nobody outside a search engine can tell you what it’ll do with a page. We can show you exactly what it’s handed. When scripts run, the panel below fetches this page again and reads the raw HTML with no script run. Switch readers to see what an answer engine gets. Nobody can promise you a place in an AI answer. We can make your pages easy to read, quote and credit, and then measure what changes. - [How we do technical SEO](https://adjltechnology.com/services/seo/) Retrieval, demonstrated ## Ask this site. It cites or it stays quiet. This is the pattern under most of our AI work, small enough to run in your browser. Your question is matched against every paragraph on this site. The best passages come back quoted, with links. If nothing scores well enough, it says so and points you to a person. - [Who owns the code?](https://adjltechnology.com/#ask-q1) - [Do you build mobile apps?](https://adjltechnology.com/#ask-q2) - [What happens to our data?](https://adjltechnology.com/#ask-q3) - [What’s llms.txt?](https://adjltechnology.com/#ask-q4) Retrieval only. No language model writes these answers, and your question never leaves this page. - [How we build AI systems](https://adjltechnology.com/services/ai-engineering/) How we build ## Every build runs the same six steps. It barely matters whether the thing is an agent, a website or an app. We define right before we write code. Then we build the smallest version we can check, and hand it over running. ### Trace the work We follow the real process with the people who do it. Every workflow has a step nobody wrote down. ### Pick one step Expensive, repetitive, and survivable when it’s wrong now and then. Picking a glamorous one is how projects stall. ### Write down what right looks like For an AI system it’s an evaluation set built from real cases. For a site it’s a speed budget and a crawl test. Either way, it exists before the build does. ### Build it narrow One step, one system, one output you can measure. It runs on your data, as code your team can read. ### Put guards where mistakes cost A person reviews anything that’s expensive to get wrong. The build fails on anything a machine can check. This site won’t deploy if its copy uses a hype word, counts clients or puts a number on a result nobody measured. ### Hand it over running You get the code, the prompts, the evaluation set and the docs. Your team can change it without calling us. - [The full method, with pricing](https://adjltechnology.com/approach/) Working with us ## You talk to Daniel. A team builds it. ADJL Technology is Daniel Laskowski and a small senior development team. He takes the first call, writes the scope and reads every message sent to the address on this page. Nobody stands between you and the person accountable for the work. The team builds AI systems, websites, native apps and the search work around them. The software behind ADJL Capital was built here, including its underwriting engine, its investor app and its private website. Client work is held to the same standard. Daniel Laskowski Chief Executive Officer & Founder Four steps, and the first one’s free. After the second you have a written scope with a price on it. After the fourth your team owns a running system. 1. A conversation ### You describe the problem A call with Daniel and whoever will lead the build. No qualifying call first, and no salesperson. 2. Week one ### We watch it happen Time with the people doing the work and the systems holding the data. The real problem often turns out to be somewhere else. 3. Written down ### A scope, in writing The one step we’d build, what it costs, how long it takes and what has to be true for it to work. Priced and dated before anyone commits. 4. Then it ships ### Built, measured, handed over It runs against an evaluation set from day one and goes live behind the review gate the risk deserves. It ends with your team owning it. What the work is built out of. The constraint decides the tool. Fair questions ## The things you’re actually thinking. ### How big is the team, and who actually does the work? Daniel founded the firm and leads every engagement. He scopes the work and stays on it through delivery. The build is done by a small senior development team, and you meet the people who are on yours. There’s no bench of juniors a brief gets handed down to, and nobody translating between you and the engineers. ### Is this just a wrapper around someone else’s model? The model is one component, and usually the least interesting one. The work is in getting your data to a state where a model can act on it, deciding where a human has to stay in the loop, and building the evaluation that tells you whether any of it works. Swap the model out in a year and that scaffolding is what you keep. ### We already have developers. Where do you fit? Usually alongside them. We’re not there to replace anyone. An in-house team knows the business far better than we will in week one. What they often don’t have is spare capacity, or a reason to have built this particular thing before. We build the piece, work in your repository against your conventions, and hand it to your people to carry. They’re the ones who’ll still be here in a year. ### Who owns the code when we’re done? You do. The code, the prompts, the evaluation set and the documentation, in your repository, with no license back to us and no runtime dependency on anything we host. There’s no version of this where you have to keep paying to keep using what you paid to have built. ### What about our data? It stays in your environment wherever that’s possible. Where it isn’t, you’re told exactly what leaves, where it goes and how long it lives there. You get that before anything is built, not in an appendix afterward. ### How is this related to ADJL Capital? ADJL Capital is a private investment firm with three partners. ADJL Technology is a separate company, founded and led by Daniel Laskowski with its own development team. The software the fund runs on was built here, which is why we can describe it in this much detail. It’s our own. Neither firm owns the other, and nothing on this site is an offer of any security. ### Can you get us into AI answers? Nobody can promise that, and you should be wary of anyone who does. We can make your site easy to read and hard to misquote. That means prerendered pages, structured data that matches the copy, one clear name for each thing you sell and a plain-text summary for machines. Then we check what the engines actually say. ### Do you build mobile apps? Yes. Native iOS and Android from one codebase, with Expo and React Native. The app we built for ADJL Capital runs its whole underwriting engine on the phone, offline. ### Do you only work in finance and real estate? No. Those are the systems we built for ourselves first, so they’re the ones we can describe in detail. The patterns carry over to any business that runs on documents, data and decisions. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # AI, SEO and software, from one team. > AI engineering, technical SEO for search and AI answers, and websites, apps and backends, from one team that measures what it ships. Page: https://adjltechnology.com/services/ Updated: 2026-11-12 Services The practices share people, tools and a habit of measuring. Most projects touch more than one. A new web app needs to be found. An agent needs somewhere to live. [See the work](https://adjltechnology.com/work/) [Talk to Daniel](https://adjltechnology.com/services/#contact) People read the top layer, crawlers follow the middle one and machines parse the bottom one. What each practice does ## What each practice hands over. Each practice has its own page. Here’s what goes in, what we build, how we measure it and what you keep. ### AI Engineering Agents, retrieval, extraction, automation Agents that call real tools. Retrieval that cites its sources. Extraction from documents nobody structured. Each build ships with an evaluation set, and a person signs off wherever a mistake costs money. - Evaluation sets written before the build - A review gate where being wrong is expensive - Code, prompts and evals handed over - **Inputs:** Documents, records and tools - **Builds:** Agents, retrieval, extraction, routing - **Measures:** An evaluation set and a trace of every run - **Hands over:** Code, prompts, evals and docs [How we build AI systems](https://adjltechnology.com/services/ai-engineering/) ### SEO & AI Search Technical SEO for two kinds of reader Search has two readers now. One ranks pages and one quotes them. Both read your markup first, so we fix that layer. Prerendered HTML, structured data about real entities, clean crawl paths and fast pages. - Structured data that matches the copy - Pages that read in full without JavaScript - Machine-readable summaries like llms.txt - **Inputs:** Your site and its build - **Builds:** Prerendering, structured data, crawl paths - **Measures:** What crawlers are served, and real page speed - **Hands over:** The changes and the checks [How we do technical SEO](https://adjltechnology.com/services/seo/) ### Websites & Apps Sites, web apps, native apps, backends Marketing sites like this one. Web apps and the APIs behind them. Native iOS and Android apps from one React Native codebase. The data pipelines and scheduled jobs underneath. - Fast before anyone tunes it - Strict security headers by default - One codebase for iOS and Android - **Inputs:** A problem and whatever already exists - **Builds:** Sites, web apps, native apps, APIs - **Measures:** Speed budgets, security headers, pinned outputs - **Hands over:** Repository, tests, build guards [Websites & Apps](https://adjltechnology.com/services/software/) ### Systems we run Property and market infrastructure We built the underwriting engine behind ADJL Capital’s property decisions and the market-data plumbing under its research. They’re still running, and new methods get tested on them first. - A listing URL in, a sourced file out - Point-in-time market history - Backtests on the production code path - **Inputs:** Listings, public records, market data - **Builds:** Underwriting, research pipelines, execution - **Measures:** Provenance on every figure - **Hands over:** Running for ADJL Capital today [See the systems](https://adjltechnology.com/work/) Where they meet ## Most work crosses a line. This site is a software build and an SEO build at the same time. The investor app is software with the underwriting engine inside it. The underwriting engine is an AI system where the model writes the narrative and never a figure. We scope the work as one job, so nothing gets lost between teams. - [How this site is built](https://adjltechnology.com/work/this-site/) - [The engine on a phone](https://adjltechnology.com/work/mobile-app/) - [A model that writes prose, never figures](https://adjltechnology.com/work/real-estate-intelligence/#replay) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # AI agents and automation that show their work. > AI agents, retrieval with citations, document extraction and workflow automation, built with an evaluation set and a review gate where errors cost money. Page: https://adjltechnology.com/services/ai-engineering/ Updated: 2026-11-12 AI Engineering We build AI systems that do one job inside a business that already runs. Agents that call your tools. Retrieval that cites its sources. Extraction from records nobody structured, and drafting that stops at a review gate. Each one ships with an evaluation set, so you can tell whether it’s still right next month. [Watch a run stop](https://adjltechnology.com/services/ai-engineering/#replay) [Talk to Daniel](https://adjltechnology.com/services/ai-engineering/#contact) - **Inputs:** Your documents, records and tools - **Builds:** Agents, retrieval, extraction, routing, drafting - **Measures:** An evaluation set of real cases, plus a trace of every run - **Hands over:** Code, prompts, evals and docs, in your repository People read the top layer, crawlers follow the middle one and machines parse the bottom one. What it covers ## Narrow systems, measured from day one. ### Agents that call tools An agent is a loop. It plans, calls a tool, reads the result and decides what’s next. We give it narrow tools, a budget and a log of every call. It stops and asks when the evidence runs out. ### Retrieval with citations Answers come from your own documents, and every answer links to the passage it came from. A wrong answer traces back to a wrong document, which someone can fix without retraining anything. ### Extraction Fields pulled out of invoices, contracts, filings and emails nobody structured. Each field is checked against a schema. Anything missing goes to a person instead of getting filled in with a guess. ### Routing and drafting Classify what came in, send it to the right queue and draft the reply. Drafts wait for a person wherever a wrong one would cost real money. ### Evaluation Before launch, a set of real cases with known right answers. After launch, the same set runs on every change. You find out a model update made things worse before your customers do. ### Handover The code, the prompts, the evaluation set and a runbook go into your repository. Swap the model out in a year and the scaffolding is what you keep. Try to break it ## Retrieval you can argue with. The same retrieval pattern as the home page, with the controls exposed. Move the confidence floor and watch the gate change its mind. Then try a question this site can’t answer. 1. [Who owns the code when you’re done?](https://adjltechnology.com/services/ai-engineering/#ask-q1) 2. [Do you sell a chatbot subscription?](https://adjltechnology.com/services/ai-engineering/#ask-q2) 3. [Who ownes the code?](https://adjltechnology.com/services/ai-engineering/#ask-q3) 4. [Do you build iOS apps, and who owns the code?](https://adjltechnology.com/services/ai-engineering/#ask-q4) A system we run ## A pipeline that stops and asks a person. This is the underwriting engine we run for ADJL Capital, replayed stage by stage. A model writes the narrative at the end and nothing else. It’s handed figures that are already computed, and its prose is never parsed back into a number. Pick a bad input and watch where the run stops. - Not one property. Nothing was fetched and nothing was spent. - The provider had nothing on this listing. The fields are left blank for a person to fill in, and no figure is guessed. - Held at the price check. The analysis doesn’t run on a price nobody confirmed. - No local water schedule on file. The line uses the national average and says so. Review gates ## Where a person stays in the loop. We put a review gate wherever a wrong answer costs real money. We keep them few, because a person who approves everything soon stops reading. Choosing where they go is part of the scope we write. Proof ## Where this already runs. The patterns on this page run in systems we operate. Each page below shows one of them stage by stage. - [How an AI rollout runs](https://adjltechnology.com/work/ai-implementation/) - [A model that writes prose, never figures](https://adjltechnology.com/work/real-estate-intelligence/) - [An options model checked against real quotes](https://adjltechnology.com/work/trading-infrastructure/#research) Fair questions ## Questions about AI builds. ### Which models do you use? Whichever fits the job and your data rules. We work with Claude, OpenAI models and open-weight models run locally. The evaluation set makes the choice, and it lets you switch later without guessing. ### Can it run without sending our data to a model provider? Often, yes. Retrieval and extraction can run on a local open-weight model inside your environment. Where a hosted model is the better tool, you’re told what leaves, where it goes and how long it’s kept, before anything is built. ### How do you know it works? An evaluation set of real cases, written before the build and scored on every change. Plus a trace of every run, so a bad answer can be followed back to the step that produced it. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Technical SEO for search and AI answer engines. > Technical SEO for search engines and AI answer engines: prerendering, structured data, entity clarity, crawl paths, Core Web Vitals and llms.txt. Page: https://adjltechnology.com/services/seo/ Updated: 2026-11-12 SEO & AI Search Search has two readers now. Search engines rank pages. Answer engines read them and decide what to quote. Both start from the same HTML, and most sites hand them a mess. We fix that layer, then measure what changed. [See what a crawler reads](https://adjltechnology.com/services/seo/#machine) [Talk to Daniel](https://adjltechnology.com/services/seo/#contact) - **Inputs:** Your site, its templates and its build - **Fixes:** Rendering, structured data, entities, crawl paths, speed - **Measures:** What a crawler is served, and how fast real visitors get it - **Hands over:** The changes, the checks and the reasons, in your repository People read the top layer, crawlers follow the middle one and machines parse the bottom one. Two readers ## One ranks. One quotes. A search engine crawls your pages, ranks them and shows a link. An answer engine reads them, lifts out claims and may or may not credit you. Many AI crawlers never run your JavaScript, and the ones that do run it later. Both trust pages that say the same thing in the markup and in the copy. 1. Both readers start from the same HTML document. 2. A search engine crawls it, ranks it and shows a link. 3. An answer engine reads it, lifts out claims and decides what to quote. 4. Both trust a page more when its markup and its copy say the same thing. What we fix ## The layer both of them read. ### Prerendering Every page arrives as complete HTML. A reader with JavaScript off, a crawler in a hurry and a screen reader all get the same words. ### Structured data JSON-LD that describes real entities and matches the visible copy. Your company, its people, its services and the pages about them, joined by stable IDs. ### Entity clarity One name for each thing you sell, used the same way on every page. Answer engines stitch claims together across pages, and two names for one service reads as two services. ### Crawl paths Every page reachable in a few clicks from the home page, with link text that says where it goes. No orphan pages, no redirect chains and one canonical URL per page. ### Core Web Vitals Fast first paint, no layout shift and quick response to input. We set a budget, and the build fails when a page goes over it. ### Machine-readable surfaces A sitemap with real dates, a robots file that says what you mean, and llms.txt, a proposed plain-text summary some AI tools read. We’re clear that it’s a proposal and not a standard. Measured, not described ## Here’s what a crawler gets from this page. This page practices what it describes. When scripts run, the panel fetches it again and reads the raw HTML with no script run. Compare the readers. Then open the whole page in Machine view. Honest limits ## What we won’t promise. Nobody outside a search engine controls rankings, and nobody controls what an AI answer says. Anyone who guarantees either one is guessing. We promise the work we control. Pages that are fast, complete without JavaScript, consistent and easy to quote. Then we report what changed, with the measurements. Proof ## The proof is the page you’re on. This site was built as the case study. Every claim on this page can be checked against the page itself, and the build notes are public. - [How this site is built for search](https://adjltechnology.com/work/this-site/) - [The home page’s live readout](https://adjltechnology.com/#machine) Fair questions ## Questions about SEO and AI search. ### What’s llms.txt, and does it matter? It’s a proposed convention, a plain-text file at the root of a site that summarizes it for language models. Some AI tools read it and many don’t. It’s cheap to generate from pages you already have, so we do, and we don’t oversell it. This site’s own file is rebuilt from its pages on every deploy. ### Do you do traditional SEO too? Yes. Technical SEO is most of the work either way. Titles, descriptions, headings, internal links, speed and structured data help ranked results and quoted answers alike. We don’t write bulk content to chase keywords. ### Will you rebuild our site? Only if that’s the cheapest fix. Most technical SEO work happens inside the site you already have, in its templates and its build. When a rebuild is the honest answer, we’ll say so and price it separately. ### How do you measure results? With tools anyone can run. What a crawler is served, how fast real pages load, which pages get indexed and what the search consoles report. We report what changed and leave out what we can’t attribute. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Websites, apps and the systems behind them. > Marketing sites, web apps, native iOS and Android apps in React Native, backends and data pipelines. Fast, measured, and handed over with the code. Page: https://adjltechnology.com/services/software/ Updated: 2026-11-12 Websites & Apps Marketing sites, web apps, native iOS and Android apps, APIs and data pipelines. We build them fast to load, strict about security and easy for the next developer to read. Then we hand over the repository. [See this page measured](https://adjltechnology.com/services/software/#telemetry) [Talk to Daniel](https://adjltechnology.com/services/software/#contact) - **Inputs:** A problem, a brand and whatever already exists - **Builds:** Sites, web apps, native apps, APIs, pipelines - **Measures:** Speed budgets, security headers, tests that pin outputs - **Hands over:** The repository, the tests and the build guards People read the top layer, crawlers follow the middle one and machines parse the bottom one. What we ship ## From the page to the pipeline. ### Marketing sites Static HTML that renders before any script runs, a strict content policy and structured data on every page. This site is one. ### Web apps Customer portals, internal tools and dashboards. Quick to open, honest about loading, and clear about where every number came from. ### Native apps iOS and Android from one Expo and React Native codebase. Logic that matters is shared with the web version and pinned by tests, so the phone and the website can’t disagree. ### Backends and APIs Serverless and edge functions, scheduled jobs and the APIs your front ends call. Every function checks who’s asking before it spends anything. ### Data pipelines Daily jobs that fetch, check and store data. They record when each fact was true, and they fail loudly when a source changes shape. Live readout ## This page, measured. The readout below comes from your browser’s own performance APIs. We didn’t type any of the numbers. If your browser doesn’t report a metric, the field says so instead of guessing. Shared logic ## One engine, two platforms. The investor app we built for ADJL Capital runs its underwriting engine on the phone. The engine files are the same ones the website runs, byte for byte, and tests hold both to the same answers. 1. The website and the app run the same engine files. 2. Each module is copied byte for byte. None of them is ported. 3. Golden scenarios run against both copies, so any drift fails a test. 4. The phone needs no network to compute. Take it offline and it still recomputes. - [How the app works](https://adjltechnology.com/work/mobile-app/) Build guards ## Checks your team inherits. Every site we ship comes with checks that fail the build. Dead CSS, broken links, missing structured data, pages over budget and copy that claims what it can’t back up. Your team gets the checks along with the code. Handover ## What you get at the end. Everything needed to run it without us. - The repository, with its history - Tests that pin the outputs that matter - The build guards, already wired in - Deployment config and security headers - A runbook for when something breaks - Design tokens, so the next page matches Proof ## Software that’s running now. Each of these runs today. - [How the app works](https://adjltechnology.com/work/mobile-app/) - [How the private site’s lock works](https://adjltechnology.com/work/private-site/) - [How this site is built](https://adjltechnology.com/work/this-site/) Fair questions ## Questions about software builds. ### Which stack do you use? Whatever fits the job. This site is Vite and plain TypeScript with no framework. The investor app is Expo and React Native. Backends run as serverless and edge functions. The scope explains each choice. ### Can you work with our existing site? Yes. Most of the time the cheapest fix lives inside what you already have. We work in your repository, to your conventions, and leave it easier to change than we found it. ### Do you maintain what you build? The handover is built so your own team can take it over. If you’d like us to stay on, that’s a separate written agreement with its own scope. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # A website audit, priced by quote. > A website audit of how people, search crawlers and AI answer engines read your site, with a written report of fixes in order of impact. Priced by quote. Page: https://adjltechnology.com/services/seo/audit/ Updated: 2026-11-12 SEO & AI Search · Website audit We read your whole site the way people, search crawlers and AI answer engines do. You get a written report with the fixes in order of impact, and a call to walk through it. Ask, and Daniel replies with a price after a look at the site. [Ask for a quote](https://adjltechnology.com/start/?topic=audit#form) [Talk to Daniel](https://adjltechnology.com/services/seo/audit/#contact) - **Reads:** Every kind of page on your site, from the outside - **You get:** A written report, fixes in order of impact, and a call - **Price:** By quote, after a look at the site - **Payment:** None online. The quote comes by email first People read the top layer, crawlers follow the middle one and machines parse the bottom one. What it covers ## The scan’s three layers, across every page. The free scan reads one page. The audit starts from the same three layers and reads them across your site: the home page, each kind of page you have, and the templates behind them. ### What people read Titles, descriptions and headings on every kind of page, and whether each page says plainly what it offers. We check that the words are there before any script runs. ### What crawlers follow Status codes, redirects, canonical tags, robots.txt, noindex and the sitemap. Whether search and AI crawlers may reach each page, and whether they’re told to skip ones you want found. ### What machines parse Structured data, share tags and llms.txt. Whether the JSON-LD parses, describes real things and matches what the page says. - [Try the free scan on one page](https://adjltechnology.com/scan/) Then deeper ## Then the parts one page can’t show. ### Rendering How each kind of page is built: sent as complete HTML, or put together in the browser by JavaScript. We compare what arrives with what a person ends up seeing. ### Content without JavaScript Many AI crawlers don’t run scripts. We read every template with scripts off and list the words, links and prices that only appear once JavaScript runs. ### Structured data Your business, its services and its pages, and whether the JSON-LD joins them up. Missing types, broken blocks and claims the visible page doesn’t make. ### Internal links How many clicks each page is from the home page, which pages nothing links to, and link text that doesn’t say where it goes. ### AI crawler access What your robots.txt tells each AI crawler, page by page. Which ones fetch pages for AI answers and which collect training data, so you can choose on purpose. ### llms.txt Whether you have one, whether it matches the site, and whether it’s worth keeping up. It’s a proposed convention, and we say so. ### Speed basics How fast each kind of page answers and how heavy it is: the server’s response time, page weight, images and the scripts that hold up the first paint. What you get ## A report, and a call. The report goes through what we found, most important first. Each finding says what we saw, why it matters and what to change, in words you can hand to whoever runs your site. - A written report, with the fixes in order of impact. - For each fix: what we found, where, why it matters and what to change. - A call to walk through it and answer your questions. - If you’d like us to make the fixes, we quote that separately. How it’s priced ## Priced by quote, after a look. Sites differ in size and in what’s wrong with them, so there’s no list price. Tell us the site and what worries you. Daniel looks at it and replies with a quote by email. There’s no checkout on this site and nothing to pay online. You decide after you’ve seen the quote. Honest limits ## No promises we can’t keep. No audit can guarantee a ranking, more traffic or a mention in an AI answer. Search engines and AI companies decide those, and anyone who promises them is guessing. We promise a careful read of your site and a clear list of what to fix. Getting started ## It starts with a short form. - Send the form with the topic set to Website audit. Add your site’s address and what you’d like to know. - Daniel looks at the site and replies with a quote by email. - If you go ahead, you get the written report and then the call. - [Ask for an audit quote](https://adjltechnology.com/start/?topic=audit#form) - [Run the free scan first](https://adjltechnology.com/scan/) Questions ## Before you ask. ### How much does an audit cost? It’s priced by quote. Sites differ in size and in what’s wrong with them. Ask, and Daniel will reply with a price after a look at the site. ### Can I pay online? No. There’s no checkout on this site. You get a quote by email first. ### How is it different from the free scan? The scan reads one page in a few seconds and lists what it finds. The audit reads every kind of page on your site, checks the parts one page can’t show, and comes with a written report and a call. ### Will it get my site to the top of Google? Nobody can promise that, and we won’t. The audit tells you what stands between your site and the people and machines reading it, in order of what matters most. ### Do you need access to my site? No. We read it from the outside, the way search engines and AI crawlers do. If you share access to Google Search Console, we can also look at what Google reports about it. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # What we’ve built, and how it works. > Systems we built and run: property underwriting, trading and research pipelines, a native investor app, a gated members’ site and this website. Page: https://adjltechnology.com/work/ Updated: 2026-11-12 Work Each page walks one system stage by stage. What goes in, what each stage does, and the decisions a buyer would otherwise have to ask about. No outcomes are quoted. The mechanism is the part you can check. [Talk to Daniel](https://adjltechnology.com/work/#contact) People read the top layer, crawlers follow the middle one and machines parse the bottom one. Filter by practice Real estate Running · ADJL Capital ### A listing URL in, a sourced file out. Resolves the parcel, pulls live rents and comparables, reads years of public record and models tax through reassessment. Every figure names its source. Anything unaudited says so. [How the engine works](https://adjltechnology.com/work/real-estate-intelligence/) Loep Private preview ### The records behind a price, on one sheet. A property scanner, company reports read from SEC filings, a business analyst and an indicator our research tested. The engines are pure modules that run in the browser. AI writes one optional note from figures the code computed. [How Loep works](https://adjltechnology.com/work/loep/) Trading and research Running · ADJL Capital ### From the feed to the evening brief. Market-data ingestion, order logic and backtests that share the production code path. Plus a daily research pipeline built on point-in-time index membership. [How the pipeline works](https://adjltechnology.com/work/trading-infrastructure/) Agentic research Running · on paper ### AI agents run the studies. A person decides. Agents write the spec, the plan, the code and the reviews. A person approves each gate. Ideas face a blind control on the same days, and rules-based programs follow the chosen ones on paper after every close. [How the research runs](https://adjltechnology.com/work/agentic-research/) Native app Private distribution ### The whole engine, offline, on a phone. One Expo and React Native codebase for iOS and Android. The underwriting engine runs on the device, and tests hold it to the same answers as the web. [How the app works](https://adjltechnology.com/work/mobile-app/) Private website Private · gated ### Sealed at build. Checked at the edge. Members’ pages are kept out of the public build. An edge function checks a signed session before it serves any of them. [How the lock works](https://adjltechnology.com/work/private-site/) This website Public · you’re on it ### Prerendered, strict and self-checking. Static HTML, a content policy that allows nothing from other origins, structured data on every page, and a build that fails on hype. [How this site is built](https://adjltechnology.com/work/this-site/) AI Engineering Service ### Into the workflow you already run. Retrieval, extraction, routing and drafting, with a review gate where mistakes cost money and an evaluation set from day one. [How a rollout runs](https://adjltechnology.com/work/ai-implementation/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Paste a listing. Get the underwriting. > A property underwriting scanner. Paste a listing URL and it resolves the parcel, pulls live market data, reads public records and models the full carry. Page: https://adjltechnology.com/work/real-estate-intelligence/ Updated: 2026-11-09 Real Estate Underwriting Software A property underwriting scanner that takes a listing URL and returns a structured underwriting file: rent roll, operating statement, tax and insurance build-up, debt service and the resulting yield. It resolves the address to a parcel, pulls live market data, reads years of public record, and models the tax, insurance, hazard, operating cost and financing that decide whether the deal works. Every figure carries its source: a county record, a live listing, a comparable, or an assumption you supplied. [Talk to Daniel](https://adjltechnology.com/work/real-estate-intelligence/#contact) - **Input:** One listing URL - **Reads:** Live market data, county records, parcel history - **Models:** Tax on reassessment, insurance, hazard, operating cost, financing - **Output:** A sourced underwriting file, unaudited figures marked People read the top layer, crawlers follow the middle one and machines parse the bottom one. Manual Property Underwriting ## Underwriting is slow, and the slowness is the cost. Underwriting one property properly is slow manual work: match the address to a parcel, pull the rents and sanity-check them against comparables, read the county records for prior sales and assessment history, model the tax forward through reassessment, price the insurance against actual hazard exposure instead of a rule of thumb. Most of the work is retrieval and arithmetic. It’s also expensive in hours, so plenty of deals never get it. They get a screening pass built on the listing’s own numbers and a cap rate someone remembered. That shortcut carries the seller’s tax bill into the buyer’s model. The tax line is often the largest error in the model. - A full underwriting is expensive in hours, so it tends to go to deals that are already half-decided. The ones that should have been surfaced don’t get it. - Listing figures get taken at face value: square footage, rent, expenses, and a tax line that’s the current owner’s and not yours. - Public records hold the answer to the tax question. They’re also tedious enough to read that they routinely go unread. - Screening and underwriting use different numbers. The deal that looked good in the screen isn’t the same deal once it’s underwritten. Run replay ## Watch a run. Then break the input. This is the engine replayed stage by stage, with the values withheld. Pick a bad input and watch where the run stops. It refuses, leaves a field blank for a person, or labels a fallback. It never fills the gap with a guess. - Not one property. Nothing was fetched and nothing was spent. - The provider had nothing on this listing. The fields are left blank for a person to fill in, and no figure is guessed. - Held at the price check. The analysis doesn’t run on a price nobody confirmed. - No local water schedule on file. The line uses the national average and says so. How The Scanner Underwrites ## Five stages between a URL and a decision. Each stage takes a defined input and does one job. Then it hands the next stage something a person could check line by line. 1. 01 ### Resolve the address The listing URL is scraped for the address. Then the address is matched against parcel records to resolve it to a specific parcel. Where the records won’t support a match, the system says so and leaves the field for a person. Listing text is treated as a claim, not a fact. Square footage, bed and bath counts and lot size are checked against the county’s own record of the parcel. Where the two disagree, both are kept. 2. 02 ### Pull the live market Current asking rents, closed comparables and vacancy are pulled for the submarket the parcel actually sits in, not the city it shares a name with. Comparables are filtered on unit type, size band and distance before anything is averaged. The spread is carried forward alongside the midpoint, because a midpoint with no dispersion attached hides how little the comparables agree. 3. 03 ### Read years of public record The system reads back through the parcel’s history: prior sales, assessed values, permit filings, and the local assessor’s own reassessment behavior. Records that far back are what expose an assessor who reassesses aggressively on transfer, and one who doesn’t. A parcel assessed at a fraction of its market value for a decade carries that gap into the buyer’s first tax bill. The history is where the size of the gap becomes visible. 4. 04 ### Model the carry Property tax is modeled forward including reassessment on sale. This is where most spreadsheets go wrong. Insurance is priced against the hazard exposure of the specific parcel, not the state average. Operating costs, capital reserves and financing terms go in as explicit assumptions. Each one is visible and each one is editable. 5. 05 ### Return a sourced file The output has the sections an underwriting file normally has: rent roll, operating statement, tax and insurance build-up, debt service and the yield that falls out of them. Each figure carries the source it came from. Anything the system couldn’t verify gets labeled unaudited instead of rounded into the total. The whole file is the deliverable. It comes back in a form you can edit and re-run against your own assumptions. Tax, Reassessment & Provenance ## Three decisions behind the output file. ### Tax is modeled, not copied Most underwriting carries the seller’s current property tax line forward into the buyer’s first year. In a reassessment-on-sale jurisdiction, that one copied cell can misprice the deal outright. The system models the assessment the sale itself triggers. It uses the county’s own rules and its record of what it’s done to comparable parcels after transfer. Where the local behavior is inconsistent, it returns a range. ### Every number carries its source Each line in the output points back to where it came from: a county record, a live listing, a closed comparable, or an assumption you supplied. Anything derived from thin or stale data is labeled unaudited. It stays labeled all the way to the summary. ### Built for ADJL Capital first This wasn’t built as a product and then sold as one. It was built for ADJL Capital, to do the underwriting that would otherwise be done a field at a time. It has been run on the firm’s own capital before anyone else’s. Development runs against live listings and live county records, because the edge cases only live there. Off-the-shelf underwriting tools model the way their authors model. A tool that doesn’t match how you underwrite quietly imports someone else’s assumptions. Built under - [AI engineering](https://adjltechnology.com/services/ai-engineering/) Next - [The engine on a phone](https://adjltechnology.com/work/mobile-app/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Code that behaves the same on Tuesday as it did on Monday. > Market data, execution and latency work, backtests on the live code path, and a daily research pipeline built on point-in-time index membership. Page: https://adjltechnology.com/work/trading-infrastructure/ Updated: 2026-11-12 Market Data & Execution Systems Programming and network work for trading firms: market data coming in, orders going out, and the monitoring that tells you when either one has stopped. Most expensive failures in trading start here. A correct signal and a late one produce the same result, and only one of them shows up in the research. [Talk to Daniel](https://adjltechnology.com/work/trading-infrastructure/#contact) - **Inputs:** Exchange and vendor feeds, an existing rules set, whatever already runs - **Scope:** Ingestion, execution, network, backtesting, monitoring - **Runs on:** Your venues, your hardware, your accounts - **Output:** Code the firm owns and can read, and the alerting around it People read the top layer, crawlers follow the middle one and machines parse the bottom one. Where Trading Systems Fail ## A rule in someone’s head isn’t a rule. The signal is defensible and the feed handler drops a message once a week without mentioning it. The rules are clear in conversation and applied three different ways by three different people. The backtest is written in one language and the live system in another, so the two agree right up until the day they don’t. None of that arrives labeled as a bad idea. It arrives as slippage nobody can account for, and a review meeting where the explanation is a shrug. - A backtest written separately from the live system, so nobody can say whether a discrepancy is a bug or a market. - Market data normalized one way in research and another way in production. You find out during a fast tape. - Rules that live in a head and a spreadsheet, applied one way in a quiet market and another way in a loud one. - Failures found by reading the P&L at the end of the day instead of from an alert during it. Ingestion, Execution & Backtesting ## From the feed to the fill. This is the shape of the work, in the order it’s usually done. Not every firm needs all five. Sometimes only one piece needs work. 1. 01 ### Market data in, normalized once Feeds arrive in whatever shape the venue or the vendor chose. They get normalized into one internal representation, timestamped at capture, not at parse, and recorded so the same bytes can be replayed later. Everything downstream reads that one representation, so a fix to a feed handler is a fix everywhere. 2. 02 ### The rules set, written down as code A discretionary rules set gets read back to you as a list of conditions and actions, in plain language, until you agree the list is the thing you actually do. Then it becomes code, with the ambiguities already resolved on paper. What a trader says the rule is and what the rule turns out to be are two different things. That gap is the part worth spending time on. 3. 03 ### Orders out, on a path you can name Order construction, risk checks before the wire, order routing, and the state machine that keeps the system’s idea of a position and the venue’s idea of it in agreement. Every hop is timestamped. When something is slow, you get an answer instead of a theory. Reconciliation runs whether or not anyone is watching it. 4. 04 ### One code path, two clocks The backtester feeds recorded data into the same strategy and execution code that runs live. Only two things change. One is where the clock comes from, and the other is where fills come from. That removes the usual source of a whole class of bug. With no second implementation, there’s nothing for the backtest to diverge from. It’s slower to build and less pleasant to experiment in, and worth it. 5. 05 ### Alerting on the conditions that precede a P&L surprise Gaps in sequence numbers, a feed going stale, an order that never got an ack, position drift against the broker, a process that stopped and told nobody. Each condition raises an alert with enough context to act on, and it goes to a person, not to a dashboard nobody has open. Silent failure gets expensive long before it’s visible. Two clocks, one path ## Replay and live run the same code. A backtest replays recorded data in bursts. Live trading reads a steady stream. Both feed the same path from normalization to orders, so a fix in one is a fix in the other. 1. Market data takes one path from the feed through normalize, the book and the rules to orders. 2. In a backtest the clock is a recording, and data arrives in bursts. 3. In live trading the clock is the market, and data arrives as a steady stream. 4. Only the clock source changes. The path and its code stay the same. Research pipeline ## Point-in-time data, so the past stays honest. A backtest that only knows today’s index members has already dropped every company that fell out of the index. Its results look better than anything you could have traded. The research pipeline avoids that. It records who was in the index on each date, keeps the companies that left, and runs every trading day. ### Daily jobs Prices are refreshed every trading day. Larger data sets are pulled as studies need them, and coverage is checked before anything reads them. ### Point-in-time membership Index membership is frozen by date, delisted and removed companies included, so a test on any past day sees that day’s universe. ### An evening brief A plain-text summary assembled after the close from that day’s data. ### An options model checked against real quotes The pricing model is checked against real option-chain quotes, not only against itself. 1. Each column is a trading date and each row is a place in the index. 2. Companies join the index and leave it over time. 3. The point-in-time record keeps every company for the dates it was a member, the ones that left included. 4. A survivors-only view keeps today’s members and drops the rest. The gap it leaves is the bias. - [How the research runs with AI agents](https://adjltechnology.com/work/agentic-research/) Latency & Backtest Design ## Three choices and what each costs. ### Latency work starts with measurement Before anything is made faster, the path is instrumented end to end: capture, decode, decision, encode, wire. The bottleneck is often somewhere nobody instrumented. A lock, a log line, a collection pause, a switch hop taken twice. Measure before you buy hardware. The work follows what the timestamps show, and it stops when the remaining cost is the distance itself. ### The backtest shares the live path on purpose A firm running one or two strategies gains more from certainty than from throughput, so that’s what this design buys. Research code has to be production code, so fewer ideas get tested in a given week. What you buy is the absence of a second implementation. The backtest and the live system have nowhere to drift apart, because there’s only one of them. A shop testing twenty ideas a week should probably choose the other way. Just know that when the two versions do disagree, the disagreement gets found late. Withheld from this page ### What doesn’t get written down We describe what a system is for and how it behaves, never how to rebuild it. No thresholds, no parameter values, no live positions. Not on this site, and not in a conversation before there’s a contract. That restraint is carried over from ADJL Capital, where the property scanner runs on the firm’s own capital and the rules-based equities work is tracked on paper every trading day. It points the same way for client work. Your rules set doesn’t get written up anywhere, for any audience. This is deliberate, and it’s why this page argues from method instead of from names. Built under - [Websites & Apps](https://adjltechnology.com/services/software/) Next - [How an AI rollout runs](https://adjltechnology.com/work/ai-implementation/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # We start at the workflow, not the model. > AI implementation for businesses that already run: retrieval over your documents, extraction from unstructured records, classification and routing. Page: https://adjltechnology.com/work/ai-implementation/ Updated: 2026-11-09 AI Implementation Consulting This is the AI implementation practice: folding AI into a business that already works, starting at the workflow instead of the model. The revenue exists. The process exists. Somewhere inside it, competent people spend their best hours reading documents and moving them along. We find those steps. Then we build the narrow thing that does one of them and put it into production with a way to tell whether it’s helping. [Talk to Daniel](https://adjltechnology.com/work/ai-implementation/#contact) - **Inputs:** One workflow, the records it runs on, and access to the people who do it today - **Runs on:** Your data, in your own cloud or on your own machines - **Output:** A running system, plus the code, the prompts and the evaluation set - **Engagement:** Direct with Daniel Laskowski, who scopes the work, and the senior developers who build it People read the top layer, crawlers follow the middle one and machines parse the bottom one. Why AI Pilots Never Ship ## The pilot worked. Nothing shipped. In a business that already runs, there’s no shortage of places AI could go. What’s short is places where the change is worth the disruption. The usual sequence runs backwards. A tool gets chosen, a pilot gets run, and then someone goes looking for a workflow that fits it. What’s left is a demo that nobody owns. The real cost sits in plain sight, in the hours a capable person spends reading a long document to pull a few fields out of it. - A pilot that worked in the demo and was never wired into the system that holds the data. - Staff quietly redoing the same extraction by hand. The tool is right often enough to use and wrong often enough not to trust. - Nobody can say whether the thing is working, because nothing was measured before it was installed. - A process that exists only in one person’s head, which makes it impossible to automate and risky to leave alone. How An AI Rollout Runs ## One step, built narrow, handed over running. Every stage below exists to keep the build small enough to finish and specific enough to check. 1. 01 ### Follow the work as it actually happens We walk one workflow end to end, in the order it really runs. Who touches the file, what they open, what they retype, where it sits waiting. The output is a map of steps with a cost written against each one. That cost is time spent, plus what it costs when the step is done wrong. 2. 02 ### Find the reading, sorting and routing The candidates tend to be the same shape. A person is reading, extracting, classifying, routing or summarizing. We rank them by how repetitive the step is and how well it tolerates an error. High volume and cheap to correct goes first. Rare and expensive to get wrong stays with a person, who gets better tooling instead. 3. 03 ### Build the narrow thing One step, one system, one output you can measure. That usually means retrieval over company documents with citations back to the source, extraction from unstructured records into fields, classification and routing into the queues you already use, or drafting that stops at a review gate. It runs against your data inside your environment, and it’s code you can read. 4. 04 ### Put the person where being wrong is expensive Where an error is costly, the system’s job changes. It prepares the decision instead of making it. The draft arrives with its sources attached. The extraction arrives with the field and the page it came from, and the reviewer approves or corrects in a single action. Each correction is saved as a new evaluation case. 5. 05 ### Instrument it, then hand it over running Every run is logged with its inputs, its output and what the reviewer did to it. That produces an evaluation set built from real traffic. It also tells you whether the thing is still right this month. Handover is the running system, the code, the prompts and the evaluation set, with an owner named on your side before we finish. Evaluation, Retrieval & Build vs Buy ## Three choices made before anything is built. ### The evaluation set comes first Before anything is built we assemble real cases with the right answer written down beside them, produced by the person who currently does the work. It’s slow. It’s also the easiest part to want to skip. Without it, "it seems better" is the only verdict available, and that verdict is worthless three months later when the model underneath has changed. The set outlasts the build. It’s how you check the system after handover. ### Retrieval before training The default is grounded retrieval against your own documents, with citations. We don’t start by training a model on your data. Training is expensive to repeat and hard to correct one fact at a time, and it hides where an answer came from. With retrieval, a wrong answer traces back to a wrong document. Someone can fix that document without retraining anything. We move off that default when the same task runs thousands of times a week and the definition of a right answer has stopped changing. ### Buy it where buying works Not everything should be built, and saying so early is part of the job. Where a product already does the step properly, we configure it and move on. The case for building shows up when the workflow carries assumptions specific to you: your definitions, your exceptions, your record formats. A tool that doesn’t model those quietly imports someone else’s. A purchase is faster and someone else maintains it. Build when those assumptions are the reason the step is hard in the first place. Built under - [AI engineering](https://adjltechnology.com/services/ai-engineering/) Next - [How the underwriting engine works](https://adjltechnology.com/work/real-estate-intelligence/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # The whole engine, on the phone. > A native iOS and Android app built with Expo and React Native. The full underwriting engine runs offline on the phone, held to the web by tests. Page: https://adjltechnology.com/work/mobile-app/ Updated: 2026-11-10 Case study · Native app A native app for ADJL Capital’s investors, built with Expo and React Native for iOS and Android from one codebase. The underwriting engine runs on the device with no network. Its files are the same ones the website runs, and tests hold both to the same answers. It’s distributed privately, not through a public store listing. [Talk to Daniel](https://adjltechnology.com/work/mobile-app/#contact) - **Platform:** iOS and Android, one codebase - **Built with:** Expo, React Native, TypeScript - **Runs offline:** The full underwriting engine - **Distribution:** Private, not a public store listing People read the top layer, crawlers follow the middle one and machines parse the bottom one. Why native ## Why an app and not a bookmark. A web page needs a connection to compute anything. This app doesn’t. Paste a listing or type the numbers in, drag an assumption, and the result recomputes under your thumb with no network at all. Shared engine ## Same files. Same answers. The engine modules are copied byte for byte from the website. They aren’t ported, because a port is a chance to mistype a number. Golden scenarios produced by the original prototype run against the copy, so any drift fails a test. 1. The website and the app run the same engine files. 2. Each module is copied byte for byte. None of them is ported. 3. Golden scenarios run against both copies, so any drift fails a test. 4. The phone needs no network to compute. Take it offline and it still recomputes. Pure modules ## A rule the tests enforce. Every engine module is pure. No network calls, no filesystem and no access to the process. A test reads the vendored source and fails if one appears. A single import added on the website would otherwise break the app on a device, where no type checker sees it. Server side ## What stays on the server. Property lookups and the written narrative stay behind authenticated endpoints, because they need secrets. So do the large market datasets. They’re too big to ship in an app someone downloads over cellular. Distribution ## Shipped privately. The app reaches investors through private distribution, not a public store listing. Its icon, splash screen and in-app mark are all generated from one file that holds the three-bar mark’s geometry. Built under - [Websites & Apps](https://adjltechnology.com/services/software/) Next - [How Loep works](https://adjltechnology.com/work/loep/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # The records behind a price, on one sheet. > How we built Loep: a property scanner, company reports from SEC filings, a business analyst and an indicator our research tested, every figure sourced. Page: https://adjltechnology.com/work/loep/ Updated: 2026-11-12 Case study · Loep Loep is a research tool we built for people who aren’t professionals. Give it one US address, one stock ticker or one business for sale. It reads the public records and company filings behind it and lays them out as numbered sheets, with each figure’s source beside it. It’s research, never advice. [Talk to Daniel](https://adjltechnology.com/work/loep/#contact) - **Takes:** An address, a ticker or a business for sale - **Built with:** Static HTML, TypeScript, serverless functions - **Engines:** Pure modules that run in the browser - **Status:** Private preview People read the top layer, crawlers follow the middle one and machines parse the bottom one. What it does ## One tool, a sheet for each question. Every screen in Loep is a numbered sheet, like a page in an atlas. Each one answers one kind of question and ends with a list of its sources. ### Property Scanner Type a US address or click a roof on the map. The survey brings back the listing, value and rent estimates, the county record, tax history and the ZIP’s Census figures. ### Market Research Enter one ticker. The report reads the company’s annual and quarterly filings from the SEC, builds its statements, and prints a conventional, textbook signal beside the rule that produced it. ### Business Analyst Paste the listing for a business for sale, or type its figures. A parser with fixed rules reads them, and nothing becomes an input until you accept it. ### Indicators Chart scripts a person adds to their own charts. The one available today was replicated, tested and revised in our research, and its method and its weaknesses are written out. The rest are marked as in testing. Research and AI ## An indicator our research tested, and one optional note. ### The indicator The indicator Loep offers today is a system our research replicated, tested and revised, working with AI agents. The ones still in testing go through the same process. Its sheet describes the method and leaves the settings out. ### The optional note Loep uses AI to write an optional note that explains figures its own code has computed. No figure, signal or verdict comes from a model, and every sheet is complete without the note. - [How the research runs](https://adjltechnology.com/work/agentic-research/) One property ## A scan, start to finish. ### Nothing runs until asked A click only outlines the building and drops a pin. No record is looked up until the person presses the survey button. ### Resolved to one address A typed address or a point on the map is reduced to one normalized address before any property record is requested. ### Fetched together Whatever is out of date is fetched at once, under one deadline. A part that doesn’t arrive is listed as unavailable, with the reason. ### Sources on every sheet The answer comes back as sheets. The last one lists each source and when it was read, and an answer served from cache says so. ### The price is confirmed first The server returns facts and no verdict. The underwriting won’t run until the person checks a box that says this is the price they would pay. ### Underwritten in the browser Then the engine runs on the person’s own inputs and reruns on every edit. Each assumption shows its default and where the default came from. Its own rules ## What it won’t do. Loep is held to a short list of refusals. These are the ones a reader runs into on every sheet. - Every figure carries a label for how it was obtained: retrieved, curated, modeled, an assumption, entered, computed or third party. The build fails if that list drifts. - A value it didn’t read shows as a dash, never as a zero. - A sample figure is stamped SAMPLE in its sheet’s header. - Evidence from filed figures, from a company’s own risk headings and from a provider’s news score stays in three separate tiers. It’s never netted into one number. - A language model writes one optional note, from figures the code has already computed. Its words are never read back into a number. How it’s built ## Checks that stop the build. The calculation engines are pure modules. They fetch nothing and call no model, so the same arithmetic runs in the browser and on the server, and their tests need no network. - Each engine is checked against frozen fixtures that were produced by running the code, not typed by hand. - An inline script in a built page fails the build. So does a privileged database key anywhere in the output. - Only one server file may reach a language model. A check fails if a second one does. - The plan rules are rebuilt from the database’s SQL and from the JavaScript, then run over the same profiles. A disagreement fails the build. - Every table has row-level security, deny by default. A person reads only their own rows. The drawing ## Contour lines, computed. Loep’s hero is a terrain of contour lines, traced by marching squares over seeded noise. The algorithm is pure, so one piece of code draws the canvas in the browser and the still picture the build prerenders. Under reduced motion the terrain is drawn complete in the first frame. Withheld from this page Where it stands ## Built, and not open yet. Loep is deployed behind a sign-in gate today, so this page doesn’t link to it. Card checkout isn’t connected, and an iPhone app is planned and not built. When the gate comes down, the link goes here. This page leaves out Loep’s data providers, its prices and plan limits, and the settings behind any signal or verdict. Loep keeps those off its own marketing pages too. This page also leaves out every result of the research behind Loep’s indicator. Built under - [Websites & Apps](https://adjltechnology.com/services/software/) - [AI Engineering](https://adjltechnology.com/services/ai-engineering/) Next - [A private site that says no](https://adjltechnology.com/work/private-site/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # A private site that says no by default. > A private, gated website. Members’ pages are sealed out of the public build, and an edge function verifies a signed session before serving them. Page: https://adjltechnology.com/work/private-site/ Updated: 2026-11-12 Case study · Private site Most of ADJL Capital’s site is for its investors. The build seals members’ pages out of the public output. An edge function checks for a signed session before it serves any of them, and when it can’t tell, it refuses. Serverless functions handle property lookups, market data and scheduled email briefs. [Talk to Daniel](https://adjltechnology.com/work/private-site/#contact) - **Locks:** Sealed at build, checked at the edge - **Default:** Refuse when unsure - **Functions:** Property lookup, market data, scheduled briefs - **Shown here:** The design only. No keys, paths or rules People read the top layer, crawlers follow the middle one and machines parse the bottom one. Build and edge ## Two locks, one rule. The first lock runs at build time. Members’ pages never reach the public files at all. The second runs at the edge on every request, before any cache. It checks a signed session and serves the page only when the check passes. 1. Members’ pages are sealed out of the public build, so they never reach the public files. 2. Every request for one meets an edge function first, before any cache. 3. A request with a valid signed session gets the page. 4. Anything the function can’t verify gets an error, and nothing is served. 5. If the lock were ever missing from a deploy, the members’ pages wouldn’t exist in it. Failure mode ## When unsure, refuse. If the edge function can’t decide, it serves an error and not the page. If the lock were ever missing from a deploy, the members’ pages wouldn’t exist in it. That trade is deliberate. A confusing error now and then is cheap next to a members’ page served to a stranger. Serverless functions ## Functions behind the pages. ### Property lookup Takes a pasted listing URL and returns what’s known about the address, with each figure labeled by its source. It checks access and rate limits before it spends anything. ### Market data Quotes, filings and news, fetched with server-side keys the browser never sees. ### Scheduled briefs Email briefs that run on a schedule and go only to people who asked for them, with a working unsubscribe. Withheld from this page Not shown ## Left out on purpose. This page describes the design and leaves out the paths, the token format, the rules and the keys. Those stay private for the same reason the members’ pages do. Built under - [Websites & Apps](https://adjltechnology.com/services/software/) Next - [How this site is built](https://adjltechnology.com/work/this-site/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # The site you’re on is the SEO case study. > How this site is built for search and answer engines: prerendered HTML, a strict CSP, JSON-LD on every page, llms.txt and build-time guards. Page: https://adjltechnology.com/work/this-site/ Updated: 2026-11-12 Case study · This website We can’t name clients yet, so here’s a build we can open all the way. Every page is HTML before any script runs. Nothing loads from another origin. Each page describes itself in structured data, and the build fails if the copy uses a hype word or an unmeasured number. The numbers on this page are measured in your browser. [Talk to Daniel](https://adjltechnology.com/work/this-site/#contact) - **Rendering:** Static HTML, prerendered at build - **Scripts:** Same origin only, no inline script - **Data:** One JSON-LD graph per page - **Checks:** The build fails on any guard People read the top layer, crawlers follow the middle one and machines parse the bottom one. Telemetry ## Measured on your visit. The sizes below were measured when this page was built. The timings come from your browser’s performance APIs, measured now, on your device. If a browser doesn’t report a metric, the field says so instead of guessing. How each one is measured - **html, css, js:** gzip sizes of this page’s own files, measured at build - **LCP:** the largest-contentful-paint entry - **CLS:** layout-shift entries in session windows, ignoring shifts right after input - **slowest input:** the longest event duration per interaction - **3rd-party:** resources from any origin that isn’t this one - **cookies:** read from document.cookie Prerendering ## Readable before any script runs. Every page is rendered to complete HTML at build time by plain string functions. Scripts add motion and measurement, and run the two tools that call a server: the scanner and the scoping assistant. Turn JavaScript off and every word is still there. The meter below compares the words in the raw HTML with the words your browser rendered. Response headers ## Nothing loads from anywhere else. No font host, no outside script host, no analytics and no embeds. The content security policy says so, and your browser enforces it. When scripts run, the panel fetches this page’s real response headers as it comes into view. Without them, it shows the policy this site ships. - **`default-src 'self'`:** Nothing loads from anywhere else. - **`script-src 'self'`:** No inline script and no eval. - **`style-src 'self' 'unsafe-inline'`:** Inline style attributes, used for animation offsets. - **`img-src 'self' data:`:** Images from this site and inline data images. - **`font-src 'self'`:** Fonts are self-hosted. - **`media-src 'none'`:** No video or audio at all. - **`connect-src 'self'`:** The live readouts fetch from this site and nowhere else. - **`frame-src 'none'`:** No embeds. - **`object-src 'none'`:** No plugins. - **`frame-ancestors 'none'`:** Nobody can frame this site. - **`base-uri 'self'`:** Relative links can’t be pointed elsewhere. - **`form-action 'self'`:** A form can post only back to this site. - **`upgrade-insecure-requests`:** Any plain http request is upgraded. Structured data ## Every page describes itself. Each page carries one JSON-LD graph. The company, its founder, the site, the page and what the page is about, joined by stable IDs. The same IDs appear on every page, so a machine reading two pages knows they describe one company. Machine-readable files ## Files written for machines. Each of these is generated from the built pages on every deploy, so none of them can describe a site that no longer exists. - sitemap.xml (dates from git history) - robots.txt - llms.txt - llms-full.txt - A markdown copy of every page - build-report.json Build guards ## Checks that fail the build. These run on every deploy. If one fails, the previous version stays live. If you’re reading this, every check passed. | Guard | What it stops | | --- | --- | | check-css | A class with no style, or a style nothing uses | | check-links | A link to a page or fragment that doesn’t exist, or a page nothing links to | | check-claims | Hype words, and any number attached to a performance claim | | check-contact | The contact address missing, unlinked or half-changed | | check-motion | An animation module with nothing on any page to animate | | check-markers | An authoring marker shipped as visible text | | check-usage | British spellings, the wrong firm name, or a description that’s too long | | check-voice | Copy drifting into the padded register we don’t write in | | check-seo | A missing canonical, a second h1, a relative share image or broken structured data | | check-provenance | A demo without a label saying whether it’s live | | check-budget | A page over its byte budget, or a file nothing uses | Motion tiers ## Motion that knows when to stop. Every animation here runs at one of three levels. Full on a desktop, lighter on phones and low-memory devices, and none at all if you’ve asked your system for reduced motion. Anything that loops pauses when it’s off screen. The Pause button stops all of it. Left out ## What it doesn’t do. No cookies. No trackers. No third-party scripts. A form can post only back to this site. Ask This Site is retrieval only, and no language model writes its answers. The one place a model runs is the scoping assistant on the start page. It’s called from a server function, so no key ever reaches your browser. Built under - [SEO & AI Search](https://adjltechnology.com/services/seo/) - [Websites & Apps](https://adjltechnology.com/services/software/) Next - [How the trading pipeline works](https://adjltechnology.com/work/trading-infrastructure/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Research with AI agents. A person decides. > How we research the stock market with AI agents. A person approves each plan, guards work against hindsight, and rules-based programs follow results on paper. Page: https://adjltechnology.com/work/agentic-research/ Updated: 2026-11-12 Case study · Agentic research We research the stock market with AI agents. The agents write the code, run the studies and check each other’s work. A person sets each question, approves each plan and decides what goes forward. This page shows the method and leaves out every result. [Talk to Daniel](https://adjltechnology.com/work/agentic-research/#contact) - **AI agents:** Write the code, run the studies, review the work - **A person:** Sets the question, approves the plan, decides - **On paper:** Rules-based programs, after every close - **Shown here:** The method only. No results or settings People read the top layer, crawlers follow the middle one and machines parse the bottom one. The loop ## From a question to a written verdict. Studies now follow one written workflow with gates in it. AI agents do the work between the gates. The research’s owner approves each gate before the next step starts, and only he can shorten the workflow. ### The question The owner says what he wants to know. An agent asks him focused questions, one at a time, sets out the options and writes a design spec with his decisions in it. Nothing moves until he approves it. ### A test-first plan Agents design the structure, then write a plan that names the exact files and the tests to write first. The owner approves the plan before any code is written. ### Built against known answers By default, a fresh agent builds each task against tests on synthetic prices, where the right answer is known in advance. A reviewer agent checks each task. A published strategy is rebuilt rule by rule, and each rule cites its source. ### Run behind guards Then the study runs behind guards meant to stop us fooling ourselves. They’re listed further down this page. ### An independent review A reviewer agent checks the whole change, first against the spec and then for quality. The owner reads the findings and chooses which ones to act on. ### The verdict, written down The result goes into a findings log, failures included. A near miss isn’t adopted after the fact. ### The owner chooses From the tested results, the owner chooses what goes onto paper and which changes are adopted. The agents recommend. He decides. ### On paper, then Loep After every close, a scheduled job checks its code against the research, rebuilds the paper accounts and works out the orders for the next open. The results are emailed. A result that holds up can also reach Loep as an indicator. So far, one has. Who decides ## Who does what at every gate. No AI model picks a strategy, and none runs in the paper programs. The agents write, test and check. The owner chooses at every gate. | Step | AI agents | The owner | | --- | --- | --- | | Question | Ask focused questions and write the spec | Approves the spec | | Plan | Write a test-first plan | Approves it before any code | | Review | Check the whole change | Picks the findings to act on | | Choosing | Recommend from the tested results | Decides what goes forward | | Each close | Built the programs. No model runs in them | Can hold the day’s run | Guards ## Guards against fooling ourselves. A backtest can flatter an idea in quiet ways. A company that later failed drops out of the data, or a setting gets picked with the answer in view. Each guard below closes one of those gaps. - The later studies use the index as it stood on each day, companies that later left it included. A stock can be bought only on days it was really a member. - The survivorship bias was measured, not assumed, by testing companies that were delisted, failures among them. - Prices include dividends and are adjusted for splits, so a split never looks like a crash. - An idea is measured against a blind control on the same days. The control keeps the same exits and holding rules and enters without the signal. - Settings are tuned on earlier years only. Each test year runs on settings chosen from the years before it. - A proposed change is written into the spec before the run, so the test can’t be shaped to fit the answer. - A result has to hold in both halves of the history and for every random seed. - Strategy tests and paper records charge realistic trading costs. - A look-ahead test cuts the price history off at a given day. Nothing decided before that day may change. - Most ideas fail, and the findings log says so. 1. Each column is a trading date and each row is a place in the index. 2. Companies join the index and leave it over time. 3. The point-in-time record keeps every company for the dates it was a member, the ones that left included. 4. A survivors-only view keeps today’s members and drops the rest. The gap it leaves is the bias. - [Research that can’t fool itself, a field note](https://adjltechnology.com/notes/research-that-cannot-fool-itself/) On paper ## Followed on paper after every close. The owner chooses which results go onto paper. From then on, automated, rules-based programs follow them after every market close. AI agents built and reviewed these programs, and no AI model runs in them. They follow the strategies our research judged most promising. Those are published strategies the agents rebuilt and tested, with corrected versions beside the originals where the published code didn’t do what it said. It’s research, not advice. ### Checked before it publishes The programs run the research’s own code. Where a program uses its own version of a strategy, each run first checks that version against the research. A run also refuses to publish when too little of the market has that day’s prices. ### Rebuilt from the start The paper accounts are rebuilt from their start at every close, and a check reports where the record changed since the last run. The part from before the accounts existed is a replay, worked out after the strategies were chosen. ### Orders, never sent After each close the job works out the orders for the next open. Nothing goes to a broker. The orders are published for a person to read, and the results are emailed. ### A person can stop it The owner can hold any day’s run, and its email with it. He has done so. Into Loep ## Where Loep comes in. Loep is a research tool we built for people who aren’t professionals. The indicator Loep offers today is a system our research replicated, tested and revised, working with AI agents. The ones still in testing go through the same process. Nothing carries research into Loep automatically. The indicator’s sheet writes out its method and its weaknesses, and its settings stay out. The paper records don’t appear on Loep. - [How Loep works](https://adjltechnology.com/work/loep/) Withheld from this page Not shown ## What this page leaves out. This page describes how the research works, not what it found. A single quoted result would be judged without its method, so none appears here. These stay private. - Every result and figure, and any comparison with the market. - The names of strategies and stocks, and every setting and threshold. - What the paper accounts hold, and when their record starts. - The tools, vendors and published sources the work draws on. Built under - [AI Engineering](https://adjltechnology.com/services/ai-engineering/) Next - [Loep](https://adjltechnology.com/work/loep/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Field notes from real work. > Short write-ups of real work: how machines read this site, how its build checks its own words, and how our research keeps from fooling itself. Page: https://adjltechnology.com/notes/ Updated: 2026-11-12 Field notes Short write-ups of work we can show. How machines read this site, how its build checks its own words, and how our research keeps from fooling itself. Each one sticks to what we did and how. [Talk to Daniel](https://adjltechnology.com/notes/#contact) People read the top layer, crawlers follow the middle one and machines parse the bottom one. The notes ## What we’ve written so far. Each one takes a few minutes. The notes about this site describe code anyone can read in its public repository. ### [What AI crawlers read.](https://adjltechnology.com/notes/what-ai-crawlers-read/) What a search crawler or an AI answer engine is handed when it fetches a page, and how this site makes sure that’s the whole page. ### [A build that refuses to overclaim.](https://adjltechnology.com/notes/a-build-that-refuses-to-overclaim/) How this site’s build stops on hype, invented numbers and counts of clients, and what writing under those checks costs. ### [Research that can’t fool itself.](https://adjltechnology.com/notes/research-that-cannot-fool-itself/) The checks our market research runs against fooling itself, with AI agents doing the work and a person deciding at every step. Method only, no numbers. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # What AI crawlers read. > What a search crawler or an AI answer engine gets when it fetches a page: the raw HTML, title and headings, structured data, robots.txt and llms.txt. Page: https://adjltechnology.com/notes/what-ai-crawlers-read/ Updated: 2026-11-12 Field note Many AI crawlers read your page the way your server sends it, before any script runs. Here’s what that copy holds, what each part is for, and how this site makes sure it’s the whole page. - **Written by:** Daniel Laskowski - **Published:** November 12, 2026 - **Reading time:** 4 min People read the top layer, crawlers follow the middle one and machines parse the bottom one. ## The page before any script runs. A browser downloads a page, then runs its scripts, and the scripts often fill in the words. A crawler starts the same way. Many AI crawlers stop there. They read the HTML your server sent and never run the scripts. The ones that do run them often get to it later. So the first question about any site is a plain one. What’s in the HTML before JavaScript runs? On a site built as a single-page app, the answer can be an empty shell and a script tag. A person sees a full page. A crawler that doesn’t run scripts sees almost nothing. Every page on this site is rendered to complete HTML when the site is built. Small functions turn the copy into markup, and the result is saved as a plain file. Scripts add motion, measurement and the tools you use, like the site scan. Turn JavaScript off and every word of the page is still there. Our browser tests check exactly that on every page, with scripts on and off. ## The parts a machine reads first. Some parts of a page do more work than their size suggests. The title and the description are often what a search result or an AI answer shows. The headings are the outline a machine uses to tell what each part of the page covers. Links tell a crawler where else to go. Every page here has one main heading, a canonical address and a description of its own. The build fails if any of them goes missing, or if two pages share a description. You can see this reading on any page here. Switch the view to Machine, in the status bar or in the menu on a phone. The page labels itself the way a crawler takes it in, with its headings numbered as an outline and its links and structured data marked. ## Structured data says who you are. Structured data is a block of JSON-LD in the page’s HTML that names things outright. Here, it says the page is an article. It names Daniel Laskowski as the author. ADJL Technology published it on this date. A person works all that out from the layout. A machine can read it from the data and doesn’t have to guess. Every page here carries one graph of it, with the company, its founder, the site, the page and what the page is about. The company, its founder and the site each have an ID that stays the same on every page, so a machine reading two pages knows they describe one company. The build checks that every reference in the graph points at something that exists. ## robots.txt says who may read. `robots.txt` is a short file at the root of a site that tells crawlers what they may fetch. AI companies publish names for their crawlers, so a site can allow or block each one by name. Some fetch pages to train models. Some fetch a page when a person asks a question that needs it. Blocking the wrong one can keep your pages out of answers you wanted to be in. It’s a request, not a lock. The bigger AI companies say in their documentation how each of their crawlers treats it, and the answers differ. Our `robots.txt` names the AI crawlers in a group of their own. Today that group allows everything, the same as the default. It’s written out so the choice is on record, and it takes one line to change it. ## llms.txt is a summary, and only a proposal. `llms.txt` is a newer idea. It’s a plain markdown file at the root of a site that lists the pages, each with a line about what it covers. It’s a proposed convention and not a standard. Some AI tools read it and many don’t. This site writes one on every deploy, from the built pages, so it can’t describe a page that’s gone. Each page also has a markdown copy of its own words, linked from the page’s head, and `llms-full.txt` holds all of them in one file. It costs almost nothing to produce, so we do it, and we don’t claim more for it than that. ## Check your own site. You can take the same reading of your own pages. The [site scan](https://adjltechnology.com/scan/) fetches a page from our server with no scripts run, the way many AI crawlers do. It reads your `robots.txt` and looks for a sitemap and an `llms.txt`. Then it lists what to fix first. Nobody can promise you a place in an AI answer. What you can control is what a machine is handed when it asks for your page. On this site, the markdown copy is made from the built page (in its Technical wording), so it can’t drift from what the page says. The title and description are written in the same file as the words on the page. ## Related - [Scan your own site](https://adjltechnology.com/scan/) - [How this site is built for search](https://adjltechnology.com/work/this-site/) - [SEO & AI Search](https://adjltechnology.com/services/seo/) ## More notes - [A build that refuses to overclaim](https://adjltechnology.com/notes/a-build-that-refuses-to-overclaim/) - [Research that can’t fool itself](https://adjltechnology.com/notes/research-that-cannot-fool-itself/) - [All field notes](https://adjltechnology.com/notes/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # A build that refuses to overclaim. > How this site’s build fails on hype words, unmeasured numbers and counts of clients, why we set it up that way, and what writing under it costs. Page: https://adjltechnology.com/notes/a-build-that-refuses-to-overclaim/ Updated: 2026-11-12 Field note This site won’t deploy if its copy uses a hype word, counts clients or puts a number on a result nobody measured. Here’s how those checks work, why they’re there, and what they cost us. - **Written by:** Daniel Laskowski - **Published:** November 12, 2026 - **Reading time:** 4 min People read the top layer, crawlers follow the middle one and machines parse the bottom one. ## Why the build checks the words. ADJL Technology is new. We don’t have published clients, metrics or awards to point to yet. A site that hints otherwise gets found out in the first conversation, and after that nobody believes the rest of it. Good intentions don’t survive every small edit. Someone adds a line to a page that felt thin. A number from a draft makes it into the final copy. So the rules are written as code, and the code runs on every deploy. If a check fails, the new version doesn’t ship, and the last good one stays live. ## Hype and invented numbers stop the build. The first check, `check-claims`, holds a list of phrases that sell without saying anything. Claims to be the best or the newest. Stock lines about experience. Trust borrowed from people we can’t name. If one turns up anywhere on the site, the build stops and prints the words around it. It also looks for numbers doing a job they haven’t earned. A percentage next to a word like faster or cheaper. A sum next to saved. A count of clients, customers or projects, in digits or spelled out in words. We have no measured results to report yet, so any sentence like that would be invented. It reads more than the visible page. It reads the labels a screen reader speaks, image descriptions, the structured data search engines quote, and the files written for AI tools. A claim isn’t acceptable because it sits where a person rarely looks. And it fails if the site ever loads an analytics script. The privacy page says there are none, so the policy has to change first. ## A check on how the copy sounds. The first version of this site read as machine-written. Counting showed why. It leaned on dashes, on sentences that turned on a reversal, and on long polished lines with nothing short between them. Each sentence was fine on its own. Together they sounded like a template. So `check-voice` measures how often things happen, not which words appear. For every thousand words of copy, it counts: - Dashes used as asides. - Sentences built on a reversal. - Colons that set up a punchline. - Phrases spelled out in full where a person would contract them. - A short list of soft marketing words. It also checks that sentences stay short on average and that a fair share are very short. Over any limit, the build fails. Hiding words doesn’t get around it. Interface labels are skipped, since they aren’t sentences. But if the skipped text grows past a set share of the site, the check fails anyway. ## Real numbers carry a label. Some numbers on this site are real. Page sizes are measured when the site is built. Load times are measured in your browser while you read. Those are allowed, as long as they say what they are. A third check, `check-provenance`, makes every figure and demo carry a small label that reads Live, Build, Recorded or Illustration. Live means measured in your browser just now. So no page may ship with a Live label already in its HTML, and only the script that did the measuring can set one. Anything left out on purpose is drawn hatched and labeled, so a withheld value never looks like a missing one. ## What it costs. Writing under these checks is slower. A true sentence sometimes has to be rewritten because it looks like a false one. A count of something we really did would still fail. When something becomes true, the fix is to change the check on purpose and write down why in the commit. The checks read their own descriptions too. This note can’t quote the phrases it describes, because the build would stop on them. The page about [how this site is built](https://adjltechnology.com/work/this-site/) paraphrases each check for the same reason. And the checks miss things. A list of phrases can’t tell a careful claim from a careless one, and a limit on dashes can’t make dull writing good. A person reviews anything that’s expensive to get wrong. The checks catch what a machine can, on every deploy. ## See it run. Every check runs on every deploy. The [build guards](https://adjltechnology.com/work/this-site/#guards) section lists each one and what it stops, and shows the output of the run that built the page you’re on. The code is public too, in [the site’s repository on GitHub](https://github.com/dlaskowski-py/ADJL-Technologies-). ## Related - [How this site is built](https://adjltechnology.com/work/this-site/) - [What changed, and when](https://adjltechnology.com/changelog/) - [How we work](https://adjltechnology.com/approach/) ## More notes - [What AI crawlers read](https://adjltechnology.com/notes/what-ai-crawlers-read/) - [Research that can’t fool itself](https://adjltechnology.com/notes/research-that-cannot-fool-itself/) - [All field notes](https://adjltechnology.com/notes/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Research that can’t fool itself. > How our market research with AI agents guards against fooling itself: blind controls, the index as it stood, changes declared first, both halves of history. Page: https://adjltechnology.com/notes/research-that-cannot-fool-itself/ Updated: 2026-11-12 Field note We research stock-market ideas working with AI agents, and a person decides at every step. The easy mistake in this work is a result that only looks good because of how it was tested. These are the checks we use against that. Method only, no numbers. - **Written by:** Daniel Laskowski - **Published:** November 12, 2026 - **Reading time:** 4 min People read the top layer, crawlers follow the middle one and machines parse the bottom one. ## A person decides at every gate. The agents write the code, run the studies and review each other’s work. A person sets each question. An agent asks focused questions and writes a design spec, and the workflow requires a person to approve the spec and the plan before any code is written. A person can also choose to shorten that path. A reviewer agent checks the finished work, and a person chooses which of its findings to act on. Nothing an agent finds is adopted on its own say-so. Whether a change goes forward is a person’s call, made after the results are in. ## Code is tested where the answer is known. Before a strategy meets real history, its code is tested on made-up prices where the right trades are known in advance. If the code doesn’t make exactly those trades, it’s wrong, whatever its results look like later. One test cuts the price history off at a given day and checks that nothing decided before that day changes. Code that quietly peeks at the future fails it. The agents run these tests as they build and again in review. ## Every idea faces a blind control. A signal can look good just because the market went up. So each idea is compared with a blind control on the same days. The control keeps the same exits and holding rules, and enters without the signal. If the idea doesn’t beat entering blind, the signal isn’t doing the work. Entries can bunch up on the same bad days for the whole market. The test allows for that, so one bad day isn’t counted as many separate wins. ## The index as it stood on each day. Test a strategy on today’s list of large companies and you’ve quietly picked the winners. The companies that shrank, failed or were bought out aren’t on today’s list. A test that never meets them looks better than real life would have been. So our later studies use the index as it stood on each day, with the companies that later left it still in. A strategy may buy a stock only on days it was really in the index. A separate study measured how much this matters, with companies that had dropped out of the market added back, some of them found by hand. Every test also charges trading costs. ## Changes are written down before the run. The easiest way to fool yourself is to try a lot of tweaks and keep the one that worked. So the candidates are fixed in writing before any data runs. When a recent study tuned the settings of textbook strategies, the full set of settings to try was written down before any test. When another tested changes to the indicator Loep offers, each candidate change was declared in its spec first. Near misses aren’t adopted after the fact. ## A result has to hold in both halves. Some ideas work in one stretch of history and nowhere else. To catch that, the history is split in two, and a result has to hold in both halves. Where a test uses random draws, it has to hold for every random seed too. When settings are tuned, each year of the test runs on settings chosen only from the years before it. The test never borrows from its own future. ## Failures go in the log. Most ideas fail. The findings log says so, in the same plain terms it uses for the ones that hold up. When an earlier conclusion turns out to be wrong, the log records the correction. A log of failures is what makes a success worth reading. It shows the bar every idea had to clear. ## Then it runs on paper. A person chooses what goes forward, from the research’s recommendations, after the testing. Automated paper-trading programs, built with our AI agents, then follow those strategies on paper after every market close. They’re plain rules-based programs. No AI model makes a decision when they run, and no order is ever sent to a broker. The programs run the research’s own code, or check that the published version still matches it. What survives can reach [Loep](https://adjltechnology.com/work/loep/) as an indicator, with its method and its weaknesses written out and its settings withheld. There are no numbers in this note, on purpose. Results are the easiest part of research to fool yourself with, and the method is the part you can judge. The [agentic research](https://adjltechnology.com/work/agentic-research/) case study walks through the whole process. ## Related - [How we research with AI agents](https://adjltechnology.com/work/agentic-research/) - [Loep](https://adjltechnology.com/work/loep/) - [AI Engineering](https://adjltechnology.com/services/ai-engineering/) ## More notes - [What AI crawlers read](https://adjltechnology.com/notes/what-ai-crawlers-read/) - [A build that refuses to overclaim](https://adjltechnology.com/notes/a-build-that-refuses-to-overclaim/) - [All field notes](https://adjltechnology.com/notes/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # How the work runs, and where it stops. > How an ADJL Technology engagement is scoped, priced and delivered, and who owns the code, the data and the models when it ends. You do, in full. Page: https://adjltechnology.com/approach/ Updated: 2026-11-12 Engagement & Code Ownership ADJL Technology is an AI engineering, SEO and software studio. It’s Daniel Laskowski and a small senior development team. We take engagements deliberately, not continuously, so the team on yours isn’t also carrying four others. That shape buys you one thing. The person who scopes the work is in the room for the whole of it. There’s no handover between the sale and the build, because the people who write the code were there when it was scoped. Nothing has to survive one. [Talk to Daniel](https://adjltechnology.com/approach/#contact) People read the top layer, crawlers follow the middle one and machines parse the bottom one. The build sequence ## The six steps, long form. ### Trace the work We follow the real process with the people who do it. Every workflow has a step nobody wrote down. ### Pick one step Expensive, repetitive, and survivable when it’s wrong now and then. Picking a glamorous one is how projects stall. ### Write down what right looks like For an AI system it’s an evaluation set built from real cases. For a site it’s a speed budget and a crawl test. Either way, it exists before the build does. ### Build it narrow One step, one system, one output you can measure. It runs on your data, as code your team can read. ### Put guards where mistakes cost A person reviews anything that’s expensive to get wrong. The build fails on anything a machine can check. This site won’t deploy if its copy uses a hype word, counts clients or puts a number on a result nobody measured. ### Hand it over running You get the code, the prompts, the evaluation set and the docs. Your team can change it without calling us. How We Build AI ## Five positions we actually build to. Each one is a position you could disagree with, and each one shows up in the code, not just in a conversation. ### AI goes where the work already is A business that already works is full of processes that already work. A model that sits inside one of them can pay for itself without anything else changing. So the first build is narrow: one intake step, one document pile, one report someone assembles by hand every Monday. Nothing looks impressive in month one, and that’s the price of it. Rebuilding the surrounding system is a separate decision, and it gets made separately, on its own evidence. ### The model is the small part Most of an AI project is plumbing: reaching the data, cleaning what comes back, deciding what a correct answer looks like, and building the evaluation set that tells you when the thing has quietly gotten worse. The model itself is often a few lines and a choice between three vendors, and that choice is reversible. A firm that spends its pitch on model selection is describing the cheapest part of the job. ### If it can’t be checked, it doesn’t ship Every output should be traceable back to what produced it: the record, the row, the page of the filing, the version of the prompt. That rules out a whole class of work that shows beautifully and can’t be defended in a meeting. It also slows the first build, because citation and logging get written at the same time as the feature. When a system can’t be audited, the first public mistake usually ends it. ### Deterministic first, model second If a rule can be written down, it should be written down. Code that behaves the same on Tuesday as it did on Monday is cheaper to run and easier to argue with. A language model earns its place where the input is genuinely unstructured or the judgment is genuinely fuzzy, and nowhere else. The cost is that some systems come back less exciting than the version a client imagined, with a deterministic core doing most of the work. ### The deliverable is running software No engagement here ends in a slide deck and a recommendation. Work ends with something in your environment that runs, with the deployment path and the known failure modes written down beside it. Scope is the limit on that. A question like which of nine departments should go first is a real question, and it gets answered inside a build. If a strategy document is what you need, a strategy firm will do it better. Scope, Pricing & Delivery ## Three shapes of work, each with a defined end. Which one applies depends on how well defined the problem already is. An assessment is the usual entry point. It’s also a legitimate place to stop. Assessment ### Where AI pays A short, bounded engagement that goes through a business the way an underwriter goes through a file: what runs today, what it costs in hours, where the data lives, and who is allowed to touch it. It ends with a ranked list of candidates. Each one carries a build estimate and an honest note on what would make it fail. Some of those notes say don’t build this, and that’s a legitimate result. It’s also why the exercise comes before the build. - Walkthroughs at the desk with the people who do the work day to day - A map of where the data sits, what state it’s in, and what access it would need - Candidates ranked by hours returned against difficulty to build - A written argument against each candidate, including the ones recommended Suits Best when you suspect AI helps somewhere and can’t yet say where. Build ### Built, and put into production A defined system scoped, written and deployed into your environment. The kinds of thing this covers: document extraction, an internal tool, a data pipeline, a scoring or underwriting model, operational plumbing behind a desk. Scope is fixed in writing before anything is built, and changes are quoted. Open-ended builds are how a consulting engagement quietly becomes permanent staff. Handover includes the code, the evaluation set and the runbook for what to do when it breaks. - Fixed scope, written down before the first line is committed - Deployed into your infrastructure and your accounts. Nothing is hosted here - Tests and an evaluation set covering the failure modes found in scoping, so drift gets measured and surfaces instead of going quiet - A runbook, a handover session, and code your own engineers can read Suits Best when the problem is already defined and the answer is software. Standing arrangement ### Kept running, and extended A continuing arrangement for a system built here once it’s in production: monitoring, vendor migrations, latency work, and extensions as the business moves. Models get deprecated and repriced. Data sources change shape without warning. A system left alone for a year has drifted without telling anyone. The commitment here is to a response time, not to seats. Only a few of these run at once, which is what keeps that response time a real number. When your own team is ready to hold the system, the arrangement should end instead of renew. - Monitoring and periodic re-runs against the original evaluation set - Migration work when a vendor deprecates, reprices, or changes behavior - New modules on the existing system get quoted and scoped like a build. They don’t get absorbed into the retainer - A stated intention to hand over to your team and stop Suits Best when something built here has become load-bearing. Who Owns The Code ## You own the code, the data, and the right to leave. Everything built for a client belongs to that client: source, prompts, evaluation sets, fine-tuned weights, infrastructure definitions, documentation. It’s delivered into repositories you control and it runs on your accounts under your keys. There’s no hosted layer here you have to keep paying to keep the thing alive. Your data is used to build your system and nothing else. It isn’t retained here, it isn’t reused for anyone else, and it never goes into a shared model. If you decide next quarter to hand the whole thing to another firm, everything they need is already in your hands. - Source, prompts, evaluation sets and infrastructure code assigned to you in full - Your data stays in your accounts. It isn’t retained here and it’s never reused for another client - No proprietary runtime, no license to renew, no dependency that ends the system if the relationship ends - One carve-out, stated plainly. Any generic tooling not written for your project stays with ADJL. You get it under a perpetual license you never have to renew Contact ## Send the problem before the proposal. A useful first message describes the process you want changed, who touches it, and what happens today when it goes wrong. If it isn’t a fit, because of scale or timing or because ordinary software would solve it with no model at all, you’ll hear that in the reply. You won’t find out after an invoice. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # See what AI sees on your site. > Enter a web address. We fetch the page like a crawler, with no scripts run, and show what people, search crawlers and AI answer engines get from it. Page: https://adjltechnology.com/scan/ Updated: 2026-11-12 Free site scan Type in a web address. We fetch the page the way a crawler does, without running its scripts, and show what people, search crawlers and AI answer engines get from it. Then we list what to fix first. One page, plus its robots.txt, sitemap and llms.txt. We don’t keep the address or anything we fetch. The scanner runs from your browser, so it needs JavaScript. With it off, you can still read a recorded scan of this site below. It shows everything a scan of your page would. [Read the recorded scan](https://adjltechnology.com/scan/#report) People read the top layer, crawlers follow the middle one and machines parse the bottom one. The report ## Every page has three readers. People read the words. Crawlers follow the links and the rules. Machines parse the structured data. The report reads your page the way each one does, then lists what to fix first. Until you scan a page, it shows a scan of this site’s home page, recorded on Nov 12, 2026. Scan report adjltechnology.com/ Nothing to fix. Here’s what we checked. ### What people read The words on the page before any script runs, and what a search result shows. ### What crawlers follow Whether search and AI crawlers may read the page, and where it sends them. ### What machines parse Structured data, share tags and the files written for machines. ### AI crawlers and your robots.txt What your robots.txt tells each crawler about this page. A crawler with no rules of its own follows the rules for all crawlers. | Crawler | Run by | What it does | This page | | --- | --- | --- | --- | | Search engines | | | | | `Googlebot` | Google | Crawls pages for Google Search. AI Overviews in Search use the same index. | Allowed by the rules for all crawlers `Allow: /` | | `Bingbot` | Microsoft | Crawls pages for Bing search, which Copilot’s web answers draw on. | Allowed by the rules for all crawlers `Allow: /` | | `Applebot` | Apple | Crawls pages for search in Siri, Spotlight and Safari. Apple says it may also use them to train its models. | Allowed by the rules for all crawlers `Allow: /` | | AI search and answers | | | | | `OAI-SearchBot` | OpenAI | Finds pages to show and link in ChatGPT search. OpenAI’s separate GPTBot does the training crawls. | Allowed by the rules for all crawlers `Allow: /` | | `Claude-SearchBot` | Anthropic | Indexes pages to improve the results Claude’s search gives. | Allowed by the rules for all crawlers `Allow: /` | | `PerplexityBot` | Perplexity | Finds and links pages in Perplexity’s answers. Perplexity says it isn’t used for training. | Allowed by its own rules `Allow: /` | | `Meta-WebIndexer` | Meta | Reads pages to improve Meta AI’s search results and citations. | Allowed by the rules for all crawlers `Allow: /` | | Fetches a page when a person asks | | | | | `ChatGPT-User` | OpenAI | Visits a page when someone asks ChatGPT about it. OpenAI says robots.txt may not apply. | Allowed by the rules for all crawlers `Allow: /` | | `Claude-User` | Anthropic | Visits a page when someone’s question to Claude needs it. Anthropic says it follows robots.txt. | Allowed by the rules for all crawlers `Allow: /` | | `Perplexity-User` | Perplexity | Visits a page when someone asks Perplexity about it. Perplexity says it generally ignores robots.txt. | Allowed by the rules for all crawlers `Allow: /` | | AI training | | | | | `GPTBot` | OpenAI | Collects pages that may be used to train OpenAI’s models. | Allowed by its own rules `Allow: /` | | `ClaudeBot` | Anthropic | Collects pages that may be used to train Anthropic’s models. | Allowed by its own rules `Allow: /` | | `Google-Extended` | Google | Not a crawler. A switch for whether Google may use your pages to train Gemini, and to ground Gemini’s answers in them. Google says it doesn’t affect whether your pages appear or rank in Google Search. | Allowed by its own rules `Allow: /` | | `Applebot-Extended` | Apple | Not a crawler. A switch for whether Apple may use what Applebot collects to train its models. Apple’s search isn’t affected. | Allowed by the rules for all crawlers `Allow: /` | | `Meta-ExternalAgent` | Meta | Collects pages for uses such as training Meta’s AI models. | Allowed by the rules for all crawlers `Allow: /` | | `CCBot` | Common Crawl | Builds Common Crawl, a free public archive of the web that many AI models were trained on. | Allowed by the rules for all crawlers `Allow: /` | | `Bytespider` | ByteDance | The crawler of TikTok’s parent company. ByteDance says little about it. It’s widely reported to gather data for AI models. | Allowed by the rules for all crawlers `Allow: /` | What it does ## A first look, not an audit. The scanner fetches one page from our server and reads the HTML it gets back, with no scripts run. Many AI crawlers read pages the same way. It also reads your robots.txt and looks for a sitemap and an llms.txt. It can’t see your rankings, your traffic or what an AI answer says about you today. It doesn’t check every page or judge your writing. We don’t store the address you scan or anything we fetch. The report goes back to your browser and nowhere else. Go further ## Want the whole site read properly? The website audit starts from these three layers and goes much deeper, across every kind of page on your site. You get a written report with the fixes in order of impact, and a call to walk through it. It’s priced by quote, after a look at the site. [Ask for an audit quote](https://adjltechnology.com/start/?topic=audit#form) [What the audit covers](https://adjltechnology.com/services/seo/audit/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Tell us what you want built. > Tell ADJL Technology what you want built. A few lines in the form go straight to Daniel, and he answers by email. Page: https://adjltechnology.com/start/ Updated: 2026-11-12 Start a project A few lines in the form below is plenty. Daniel reads every message himself and answers by email. [Go to the form](https://adjltechnology.com/start/#form) [Email Daniel](mailto:daniel@adjlcapital.com) People read the top layer, crawlers follow the middle one and machines parse the bottom one. Scoping assistant ## Not sure how to put it? Say what you have in mind, in a sentence or two. The assistant asks a few short questions, then drafts your message into the form below. You read it, change what you like, and send it yourself. It answers from this site’s pages and shows you which ones. It won’t quote a price or promise a date. Daniel does that in writing, once he’s read what you need. - **Model:** Claude Opus 5.5, made by Anthropic. If it declines a message, Anthropic can hand it to a backup model, and the conversation says which one replied. - **Reads:** This site’s own pages, and nothing else. It doesn’t search the web. - **Won’t:** Quote a price, promise a date, or send anything for you. - **Can be wrong:** It’s a language model, so it can misread a page or get a detail wrong. It’s told to say “I don’t know” when the pages don’t answer. Daniel reads what you send and answers himself. - **Your words:** What you type goes to Anthropic to write the replies. This site doesn’t keep the conversation. Only what you send through the form reaches Daniel. [Privacy details](https://adjltechnology.com/legal/privacy/#assistant) The form ## Send it to Daniel. Your name, your email and a few lines about the project. It goes to Daniel, and he answers by email, usually within a day or two. - Netlify, the site’s host, stores what you send, checks it for spam and emails it to Daniel. - He reads it himself. No sequence, no drip, and nothing sold to anyone. - If it isn’t a fit, you’ll hear that in the reply. Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # A front door for AI agents. > Connect an AI agent to ADJL Technology over MCP at /mcp. It searches this site’s own pages, cites each source, and can send Daniel a message. Page: https://adjltechnology.com/agents/ Updated: 2026-11-12 For AI agents If an AI assistant is doing your research, it can ask this site directly. Our MCP server answers from these pages, links each answer to its source, and can pass Daniel a message when you ask it to. [Connect an agent](https://adjltechnology.com/agents/#connect) [Talk to Daniel](https://adjltechnology.com/agents/#contact) - **Endpoint:** adjltechnology.com/mcp - **Protocol:** MCP, over Streamable HTTP - **Sign-in:** None People read the top layer, crawlers follow the middle one and machines parse the bottom one. Who it’s for ## For the assistant doing the legwork. Some people hand the first round of research to an AI assistant. Find a studio, check what it does, draft the first message. This page is for that assistant, and for whoever sets it up. The endpoint speaks MCP, the Model Context Protocol. It’s an open standard for connecting AI assistants to outside tools. Through it, an assistant can search this site, read any page as plain text, and list what we offer and what we’ve built. Every answer comes from this site’s own words, with a link to the page and section it came from. If the site doesn’t cover something, the search says so. It doesn’t guess. Connect ## One address, no sign-in. Point an MCP client at the address below. There’s no key and no account. Each request is a single POST, and each answer is a single JSON reply. The endpoint - **Address:** https://adjltechnology.com/mcp - **Protocol:** Model Context Protocol, version 2026-07-28 - **Also accepts:** The older handshake: 2025-11-25, 2025-06-18 and 2025-03-26 - **Transport:** Streamable HTTP, JSON replies, no sessions - **Sign-in:** None Many clients read a block like this. Where the file lives, and its exact shape, depends on the client. ``` { "mcpServers": { "adjl-technology": { "type": "http", "url": "https://adjltechnology.com/mcp" } } } ``` In Claude Code it’s one command. ``` claude mcp add --transport http adjl-technology https://adjltechnology.com/mcp ``` Or ask for the tool list with curl, no client at all. ``` curl -s https://adjltechnology.com/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H 'MCP-Protocol-Version: 2026-07-28' \ -H 'Mcp-Method: tools/list' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{ "io.modelcontextprotocol/protocolVersion":"2026-07-28", "io.modelcontextprotocol/clientCapabilities":{}}}}' ``` Tools ## What an agent can do, and what comes back. All but one of them only read. The exception is start_conversation, and it acts only when the person behind the agent asks. ### `search_site` Search this site Read-only Search adjltechnology.com and get back the passages that answer a question, quoted word for word. Each passage comes with its page and a link to the exact section, so you can cite it. It uses the same index and confidence floor as the site’s own Ask This Site box. When nothing clears the floor, it returns no passages and says so. Treat that as something the site doesn’t say, and don’t fill the gap. - **Takes** - `query` What to look for, in plain words. A whole question works. - `limit` optional The most passages to return, from 1 to 8. The default is 5. - **Returns:** Passages, best first: the quote, its heading, the page it’s on and a link to that section. Or no passages, and the pages that came closest. ### `get_page` Read a page Read-only Get one page of adjltechnology.com as markdown: its title, its description and all of its text, without the layout. Takes the page’s path, like /services/seo/. Every search_site result, and every entry from list_services and list_work, carries one. - **Takes** - `path` The page’s path, like /services/ai-engineering/. A full https://adjltechnology.com address works too. - **Returns:** The page as markdown, with its address and the date its content last changed. ### `list_services` List services Read-only List what ADJL Technology offers: each practice and the services under it, with the summary from its page and its address. - **Takes:** Nothing - **Returns:** Each service: its name, the summary from its page and its address. ### `list_work` List work Read-only List the work ADJL Technology has written up on its site, one case page each, with the summary from that page and its address. - **Takes:** Nothing - **Returns:** Each case page: its name, the summary from its page and its address. ### `start_conversation` Send Daniel a message Sends a message Send a message to Daniel Laskowski, who founded and leads ADJL Technology. It goes through the same intake form as the site’s start page, marked as sent by an AI agent, and Daniel answers by email. Use it only when the person you’re acting for has asked to get in touch, and has seen and approved the exact name, email address and message. Never send on your own initiative. Sending the same message twice in one day has no effect. - **Takes** - `name` The person’s name, the way they want it on the message. - `email` The address Daniel should reply to. It must be the person’s own. - `message` What they want, in their own words: what it is, who it’s for, and any timing or budget they mentioned. From 20 to 5,000 characters. - `topic` optional The closest topic, if one fits. Left out, it’s sent as Something else. - **Returns:** Whether it was sent, and what happens next. The rules ## Read-only, with one exception. - start_conversation is the only tool that sends anything. It passes Daniel a message through the same form as the start page, marked as sent by an agent. - An agent should send one only when the person it works for asks to get in touch and has read the exact message. The tool’s own description tells the agent so. - Each IP address gets 60 requests a minute. Past that, the endpoint answers 429 until the minute is up. - Three messages a day can come from one IP address, and there’s a daily cap for the whole site. Past either, the tool says so and points to email. - No tracking. No cookies, no accounts, and no record of what an agent searches for or reads. When a message is sent, the endpoint keeps two one-way hashes for that day: one of the IP address it came from, to count messages, and one of the name, email address and message together, so a repeat isn’t sent twice. Both are deleted after that day, the next time an agent uses one of the tools. - Answers come only from this site’s published text, through the same index and confidence floor as Ask This Site. - [What happens to a message](https://adjltechnology.com/legal/privacy/#form) - [Write to Daniel yourself](https://adjltechnology.com/start/) Plain text ## No MCP client? Read the plain text. The same pages are published as text an agent can fetch with one ordinary request. No protocol, no tools, nothing to install. - **/llms.txt:** An index of every page, one line each, with what the page covers. - **/llms-full.txt:** Every page’s text as markdown, in one file. - **index.md:** Any page on its own: add index.md to its address, like /agents/index.md. - **/sitemap.xml:** Every page, with the date its content last changed. - [Read llms.txt](https://adjltechnology.com/llms.txt) - [Read llms-full.txt](https://adjltechnology.com/llms-full.txt) - [This page as markdown](https://adjltechnology.com/agents/index.md) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # What changed, and when. > What changed on this site, and when, newest first. Each entry is written for visitors and links to the commit behind it in the site’s public repository. Page: https://adjltechnology.com/changelog/ Updated: 2026-11-12 Changelog Changes to this site, newest first, in plain words. Each entry links to the commit behind it, so you can see exactly what changed in the code. [Talk to Daniel](https://adjltechnology.com/changelog/#contact) People read the top layer, crawlers follow the middle one and machines parse the bottom one. Newest first ## The changes you’d notice. Small fixes are grouped, and work in progress isn’t listed. Each hash opens its commit on GitHub. 1. November 12, 2026 ### A site scan, a start page and a page for AI agents. You can now scan a public web page and see what search crawlers and AI answer engines get from it, with plain fixes for what’s missing. For a deeper look, there’s a website audit, priced by quote. The new start page has a form that goes straight to Daniel and works with JavaScript off. It also has a scoping assistant that runs on Anthropic’s Claude, so what you type goes to Anthropic. The assistant drafts your message into the form and never sends anything itself. It stays off until it’s switched on. AI agents get their own endpoint at /mcp, with a page that explains how to connect. Pages with technical terms have a new Plain/Technical switch. Plain, the default, explains each term where it first appears. There’s also a case study on how we research with AI agents, updated copy on Loep, field notes, and this changelog. Commits [7172cfb](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/7172cfb) [4423f1c](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/4423f1c) [1d61b16](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/1d61b16) [242b89e](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/242b89e) [See what the new parts collect](https://adjltechnology.com/legal/privacy/) 2. November 11, 2026 ### The scrolling banner is gone. The home page no longer has a moving line of what we build under its headline. The code the opening animation types out lost that line too, since it shows the page as it really is. Commit [f1de6b9](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/f1de6b9) [See the home page](https://adjltechnology.com/) 3. November 10, 2026 ### Phones get the full animations. A touch screen no longer means a lighter version of the site. Phones now get the live drawing in the hero and animations that keep playing. The lighter version is kept for devices that need it, such as ones low on memory or set to save data. Pause motion now lasts for your visit, not forever, and the opening animation is slower and smoother. Commit [6771721](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/6771721) ### Loep joins the portfolio. Loep, a research tool we built, has a card on the home page and the work page, with an animated preview. Its own case page walks through what each part of it does and the checks that stop its build. Commits [06da87c](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/06da87c) [9102c95](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/9102c95) [Read about Loep](https://adjltechnology.com/work/loep/) ### Fixes from a review of the new home page. An independent review of the new home page led to plainer portfolio cards for people who aren’t engineers, and a slower reveal of the name in the opening animation. Smaller fixes made the pause buttons big enough to tap and put keyboard focus in the right place after the animation. The build now fails when a page’s share image no longer matches its headline. Commits [59c0bce](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/59c0bce) [fca9862](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/fca9862) [f808222](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/f808222) ### A tagline shared with ADJL Capital. Every page’s footer now carries ADJL Capital’s tagline, “Today’s investment, tomorrow’s legacy.” The opening animation ends on it, and the company’s structured data uses it as its slogan. Commit [0f32cbb](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/0f32cbb) 4. November 9, 2026 ### A home page written for business owners. The home page now speaks to business owners, not only to engineers. Under the headline come what we build, in plain words, and then the portfolio, each system with an animated preview of it doing its job. The live demos stay further down, as proof. On small phones, the headline keeps its last words together and nothing spills off the side. Commits [bd86bc9](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/bd86bc9) [ef68f07](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/ef68f07) [b8c6ffa](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/b8c6ffa) [fe68271](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/fe68271) [See the home page](https://adjltechnology.com/) ### An opening animation. When a visit starts on the home page, a short animation plays once. Code types, the build runs, and the site assembles into the ADJL Technology mark before the page opens. You can skip it, and it never plays if you’ve asked your device for reduced motion. The privacy page says what it stores, which is one note in your browser that it has played. Commits [b4acf7e](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/b4acf7e) [7a3ee26](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/7a3ee26) [37b0f0a](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/37b0f0a) ### Fixes from a review of the rebuilt site. A review of the rebuilt site covered the experience, accessibility and the honesty of the copy. The menu now stays pinned, links to a section land on it, keyboard focus never hides behind the status bar, and each service has one name everywhere. Copy that said more than the site could show was rewritten, and the drawing at the top of each page now says what it counts. Commits [86afa5b](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/86afa5b) [8335c99](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/8335c99) ### Three ways to view any page. On the rebuilt site, every page can be viewed three ways. As rendered, as the source behind each section, or the way a machine reads it. The status bar measures how the page loaded on your device. Machine View, on the home page and the SEO page, fetches the page again and shows what a crawler gets. Commit [df5cdd9](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/df5cdd9) [Try Machine View](https://adjltechnology.com/services/seo/#machine) ### A drawing of each page’s structure. Most pages now open with a drawing of their own structure, made from their HTML. Each page’s share image, the picture that shows when someone shares a link to it, now carries that drawing. Commit [2c8a8c6](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/2c8a8c6) ### Diagrams that show the work. New diagrams walk through how things run. The steps that turn this site’s copy into pages, a replay of the underwriting engine with its values withheld, and line diagrams of how our systems work. Commit [6762562](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/6762562) ### Ask This Site. Ask a question about ADJL Technology and get an answer quoted from this site’s own pages, with a link to where each quote came from. It runs in your browser. If nothing on the site answers well enough, it says so and points you to a person. Commit [972a37a](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/972a37a) [Ask a question](https://adjltechnology.com/#ask) ### Jump anywhere with ⌘K. Press ⌘K, or Ctrl+K, to open a command palette. It jumps to any page or section, switches views, pauses motion and copies the email address. Commit [930bf87](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/930bf87) ### A new design, and new pages. The site was rebuilt on a dark background, without the films, and with new copy on every page. Each service got its own page, and the work page gained new case studies. Commit [8a4c923](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/8a4c923) ### An llms.txt for AI tools. The site now writes llms.txt, a plain summary of every page for AI tools, and llms-full.txt, the full text of each. They’re made from the built pages on every deploy, so they can’t drift from what a browser gets. Commit [3868548](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/3868548) [Read the note on what crawlers read](https://adjltechnology.com/notes/what-ai-crawlers-read/) 5. September 13, 2026 ### A link to ADJL Capital, where it belongs. The terms page now links to ADJL Capital’s site, in the section about how ADJL Technology and ADJL Capital are related. The structured data no longer calls ADJL Capital our parent company. The firms are siblings, joined through their founder. Commit [5a25e88](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/5a25e88) [Read the terms](https://adjltechnology.com/legal/terms/) ### The site moves to adjltechnology.com. The site now lives at adjltechnology.com. Its old netlify.app address sends you here, so there’s one copy of each page. Commits [3d820f9](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/3d820f9) [3a00a05](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/3a00a05) 6. September 12, 2026 ### Readable by search engines, with or without JavaScript. Every page now describes itself in structured data, has its own share image, and has a title that leads with its subject. A bug that hid most of the home page from anyone without JavaScript is fixed, and a browser test now loads every page with scripts off. Commits [22b4428](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/22b4428) [cacaa31](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/cacaa31) 7. September 10, 2026 ### The copy, rewritten in plain English. The first version read as machine-written. The copy on every page was rewritten in shorter, plainer sentences, and a new check fails the build if the writing drifts back. Commit [13c9a66](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/13c9a66) [Read how the checks work](https://adjltechnology.com/notes/a-build-that-refuses-to-overclaim/) 8. September 9, 2026 ### ADJL Technology, by its right name. The firm’s name is ADJL Technology everywhere, the spelling is US English throughout, and the site describes the team accurately, as Daniel and a small senior development team. The work page no longer lists the kinds of work we turn down. Commits [3a2a08f](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/3a2a08f) [ac673d1](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/ac673d1) ### The first fixes. A review of the first version found a heading on the work page showing its formatting markers, text too faint to read, and a phone menu that could lock the page. All fixed. The build now fails if a formatting marker ever reaches a page, and the contrast check measures faded text it used to skip. Commit [b37019c](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/b37019c) ### The first version. The first version of ADJL Technology’s site is built, on a light background with short looping films. Every page is prerendered as plain HTML, and the build fails on broken links, unstyled markup and hype. Commit [396cb64](https://github.com/dlaskowski-py/ADJL-Technologies-/commit/396cb64) Source ## The code is public. This site’s code is public on GitHub, with its full history. That includes the work in progress this page leaves out, and the checks that run before every deploy. - [The repository on GitHub](https://github.com/dlaskowski-py/ADJL-Technologies-) - [How this site is built](https://adjltechnology.com/work/this-site/) Start here ## Tell us what’s slow, or what can’t be found. One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too. [Start a project](https://adjltechnology.com/start/) [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) [Email Daniel](mailto:daniel@adjlcapital.com) Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Privacy > What this site collects. No analytics, no cookies, no tracking. What the form, the assistant and the scanner send, and where it goes. Page: https://adjltechnology.com/legal/privacy/ Updated: 2026-11-12 Legal Last updated November 2026 This site doesn’t track you. There’s no analytics script, no advertising pixel and no cookie set by us, and reading it tells us nothing about you. Three tools send what you type: the form, which goes to Daniel, the scoping assistant, which uses Anthropic’s model to reply, and the scanner, which fetches the page you name. Each one is described below. [Talk to Daniel](https://adjltechnology.com/#contact) ## What this site collects Nothing, just from reading. These pages are static files served from a content delivery network. No script here sets a cookie. No analytics or session-recording service is loaded, and no third-party embed appears on any page. Your browser may keep the usual local cache of images, fonts and scripts so pages load faster on a second visit. That cache lives on your device. Your browser controls it, and we can’t read it. ## Preferences kept in your browser If you press Pause motion, your browser remembers the choice in its own session storage so the next page stays still. The home page’s opening animation plays once per visit, and your browser notes there that it has played. Neither note leaves your device, and both are erased when you close the tab. The reading switch (Plain or Technical) is remembered in your browser’s local storage so the next page reads the same way. It never leaves your device. ## Measurements on the page Some sections measure the page you’re reading. They use your browser’s own performance APIs, and they fetch this site’s files again from this site and nowhere else. The results are shown to you and aren’t sent anywhere. Those fetches are ordinary requests, so they appear in the host’s standard logs like any page view. The status bar also counts any cookies your browser holds for this site. There should be none. It reads that count from document.cookie, shows it to you and sends it nowhere. ## Ask This Site The question you type into Ask This Site is matched against an index of this site’s own text, inside your browser. It isn’t sent to us or to anyone else. ## If you send the form The form on the start page asks for your name, your email, a topic and a message. It also notes how the message was written: by you, drafted with the assistant, or sent for you by an AI agent through this site’s MCP endpoint. Netlify, which hosts this site, receives the form. It runs each submission through Akismet, a spam filter run by another company, Automattic. Then it stores the submission in this site’s Netlify account, together with the IP address it was sent from, and emails it to Daniel. We use it to reply to you, and to do the work if we end up working together. It isn’t added to a mailing list, and it isn’t sold, rented or shared. If an AI agent sends the form for you through this site’s MCP endpoint, the endpoint keeps two one-way hashes for that day. One is of the IP address the request came from, so no single caller can send more than a few messages. The other is of the name, email address and message together, so the same one isn’t sent twice. Both are mixed with a random value made that day, which is stored with them. The endpoint also counts the day’s messages for the whole site, with nothing about who sent them. Neither hash holds the IP address, the email address or the words of the message. All of it is deleted after that day, the next time an agent uses one of the endpoint’s tools. What an agent searches for or reads through the endpoint isn’t stored. Submissions stay in Netlify and in Daniel’s inbox until he deletes them. To have yours deleted, write to daniel@adjlcapital.com, and Daniel deletes it from both. ## The scoping assistant The assistant on the start page sends what you type, with the conversation so far, to a function on this site. The function passes it to Anthropic, along with this site’s own pages, and Anthropic’s Claude model writes the reply. Anthropic handles that data under its own terms and privacy policy, not this one. This site doesn’t store the conversation. It lives in your browser tab and is gone when you close or reload the page. If something goes wrong, the function’s log notes the kind of error, never your words. If you press Draft my brief, the draft goes into the form on the same page, and it reaches Daniel only if you send the form. To keep the assistant from being overused, the function counts requests for each visitor, per day. For each request it records the time and a one-way hash of your IP address, mixed with a secret and the date, and never the address itself. Each day’s records are deleted after that day, the next time the assistant runs. ## The scanner The address you type into the scanner goes to a function on this site. It fetches that page from Netlify’s servers, the way a crawler would, and shows you what came back. Nothing is stored: not the address, not the page and not your IP address. ## Hosting and server logs The site is hosted by Netlify. Like any web host, Netlify records standard request logs for delivery, security and abuse prevention: an IP address, a timestamp, the page requested and a user-agent string. That’s a function of connecting to any server on the internet, and it happens before this site sees the request. Those logs are held under Netlify’s own policy, not ours, and we don’t build profiles from them. ## If you email us You can also write to daniel@adjlcapital.com, which opens your own mail client. We receive whatever you send, which means your address, your name if you sign it, and the content of your message. We use that message to reply to you, and to do the work if we end up working together. It isn’t added to a mailing list, fed to any sequence or drip campaign, or sold, rented or shared with anyone. If you’d like it deleted, ask, and it will be. ## Client data during an engagement Work with a client is a separate matter from this website, and it’s governed by the written agreement for that engagement, not by this page. Those agreements carry a standing position. Client data stays in the client’s own environment wherever that’s technically possible. Where some part of it has to leave, say to a model provider’s API, the client is told before anything is built exactly what leaves, where it goes, and how long it’s retained there. That disclosure happens during scoping, not in an appendix afterward. ## Your rights Depending on where you live, you may have the right to ask what personal data is held about you, to have it corrected, to have it deleted, or to object to its processing. What exists here is what you sent us, an email or a form. If you used the assistant, or an agent sent the form for you, there are also the hashed records described above, until they’re deleted after that day. Exercising any of those just means asking. Write to daniel@adjlcapital.com and Daniel Laskowski handles it directly. He’s the person responsible for this site and for the firm. ## Changes to this page If the site adds anything that collects data, this page changes first and says exactly what was added. The form, the assistant and the scanner were added that way. The date at the top is the date of the last change. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds. --- # Terms of use > The terms for using this website. What the content is, what it isn’t, and what governs an actual engagement. Page: https://adjltechnology.com/legal/terms/ Updated: 2026-11-12 Legal Last updated November 2026 These terms cover this website and nothing else. Actual work is governed by a written agreement signed for that engagement. Where the two ever disagree, the agreement wins. [Talk to Daniel](https://adjltechnology.com/#contact) ## What this site is A description of an AI engineering, SEO and software studio, published so that someone deciding whether to make contact can find out what the firm does and how it works. It’s marketing material, written to be accurate. That still isn’t a contract. Descriptions of systems on this site are general by design. Where a system is described, its parameters, thresholds and configuration are deliberately omitted. That restraint is carried from ADJL Capital. It isn’t an oversight. ## What it isn’t Specifically, nothing on this site is any of the following. - An offer to sell, or a solicitation of an offer to buy, any security or interest in any fund. ADJL Technology is an engineering practice and doesn’t offer securities. - Investment, legal, tax or accounting advice. Nothing here should be relied on to make a financial decision. - A quotation, an estimate, or an offer of services on any particular terms. Scope and price come out of a conversation, and they’re set out in writing. - A guarantee that any technique described will produce a particular result in your business. - An endorsement of anything on a site this one links to. Where this site links out, the link is a reference. What’s at the other end belongs to whoever published it. ## Accuracy The content here is written to be correct when it’s published, and it’s kept current, but it’s provided as-is and without warranty. Software, model providers and market data all change. A page written in good faith can go out of date before anyone notices. If you find something here that’s wrong, we’d genuinely like to know. ## Intellectual property The text, design, code and diagrams on this site belong to ADJL Technology. You’re welcome to link to any page, quote it with attribution, and print it for your own use. Work produced during a client engagement is a different question, and it’s answered the other way around. The client owns the code, the prompts, the evaluation set and the documentation. That’s set out in the engagement agreement, and the Approach page describes it in plain terms. ## Liability To the extent the law allows, ADJL Technology isn’t liable for loss arising from use of this website or reliance on its content. Liability arising from actual work is dealt with in the agreement covering that work, where it belongs. Nothing here limits liability for fraud, or for anything else that can’t lawfully be limited. ## Relationship to ADJL Capital ADJL Capital is a private investment firm. ADJL Technology is the engineering practice that built and runs its software. They’re separate companies with separate obligations, and this website speaks only for ADJL Technology. The software described here can be described in detail because it’s our own. There’s no client confidentiality to breach in explaining how our own underwriting engine works. ADJL Capital publishes its own site, linked below. That site speaks for that firm. Nothing on it forms part of this site, and nothing here is an offer of anything the firm sells. [adjlcapital.com](https://adjlcapital.com/) ## Contact Questions about these terms, or about anything on this site, go to daniel@adjlcapital.com. [ADJL Technology](https://adjltechnology.com/) Today’s investment, tomorrow’s legacy. ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski. [daniel@adjlcapital.com](mailto:daniel@adjlcapital.com) Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts. ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds.